X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/072d097be13f8f11c9e93542a511cf86a2474db7..08d0bd73384b79b5c21f75b06a982fc62998a0c2:/IkiWiki/Render.pm?ds=inline diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 600318e68..37383384d 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -46,7 +46,7 @@ sub backlinks ($) { #{{{ } @links = sort { $a->{page} cmp $b->{page} } @links; - return \@links, [] if @links <= $config{numbacklinks} && ! $config{numbacklinks}; + return \@links, [] if @links <= $config{numbacklinks} || ! $config{numbacklinks}; return [@links[0..$config{numbacklinks}-1]], [@links[$config{numbacklinks}..$#links]]; } #}}} @@ -318,8 +318,8 @@ sub refresh () { #{{{ } } - # scan changed and new files - my @changed; + # find changed and new files + my @needsbuild; foreach my $file (@files) { my $page=pagename($file); @@ -327,16 +327,19 @@ sub refresh () { #{{{ if (! exists $pagemtime{$page} || $mtime > $pagemtime{$page} || $forcerebuild{$page}) { - debug(sprintf(gettext("scanning %s"), $file)); - $pagemtime{$page}=$mtime; - push @changed, $file; - scan($file); + $pagemtime{$page}=$mtime; + push @needsbuild, $file; } } - calculate_backlinks(); + run_hooks(needsbuild => sub { shift->(\@needsbuild) }); - # render changed and new pages - foreach my $file (@changed) { + # scan and rendder files + foreach my $file (@needsbuild) { + debug(sprintf(gettext("scanning %s"), $file)); + scan($file); + } + calculate_backlinks(); + foreach my $file (@needsbuild) { debug(sprintf(gettext("rendering %s"), $file)); render($file); $rendered{$file}=1; @@ -365,7 +368,7 @@ sub refresh () { #{{{ foreach my $file (keys %rendered, @del) { next if $f eq $file; my $page=pagename($file); - if (pagespec_match($page, $depends{$p}, $p)) { + if (pagespec_match($page, $depends{$p}, location => $p)) { debug(sprintf(gettext("rendering %s, which depends on %s"), $f, $page)); render($f); $rendered{$f}=1;