X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/2a7f3b91d4fa46a67d04f963785f957563ac0cfc..3fcd6c49d02df7ac7853ebdd05fa47b766aefa1c:/IkiWiki/Render.pm

diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 5367b1309..246c2260d 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -210,7 +210,7 @@ sub render ($) {
 	if (defined $type) {
 		my $page=pagename($file);
 		delete $depends{$page};
-		delete $depends_exact{$page};
+		delete $depends_simple{$page};
 		will_render($page, htmlpage($page), 1);
 		return if $type=~/^_/;
 		
@@ -225,7 +225,7 @@ sub render ($) {
 	}
 	else {
 		delete $depends{$file};
-		delete $depends_exact{$file};
+		delete $depends_simple{$file};
 		will_render($file, $file, 1);
 		
 		if ($config{hardlink}) {
@@ -433,7 +433,7 @@ sub refresh () {
 		# internal pages are not rendered
 		my $page=pagename($file);
 		delete $depends{$page};
-		delete $depends_exact{$page};
+		delete $depends_simple{$page};
 		foreach my $old (@{$renderedfiles{$page}}) {
 			delete $destsources{$old};
 		}
@@ -460,23 +460,22 @@ sub refresh () {
  		my %lcchanged = map { lc(pagename($_)) => 1 } @changed;
  
 		# rebuild dependant pages
-		F: foreach my $f (@$files) {
+		foreach my $f (@$files) {
 			next if $rendered{$f};
 			my $p=pagename($f);
+			my $reason = undef;
 
-			if (exists $depends_exact{$p}) {
-				foreach my $d (keys %{$depends_exact{$p}}) {
+			if (exists $depends_simple{$p}) {
+				foreach my $d (keys %{$depends_simple{$p}}) {
 					if (exists $lcchanged{$d}) {
-						debug(sprintf(gettext("building %s, which depends on %s"), $f, $d));
-						render($f);
-						$rendered{$f}=1;
-						next F;
+						$reason = $d;
+						last;
 					}
 				}
 			}
 
-			if (exists $depends{$p}) {
-				foreach my $d (keys %{$depends{$p}}) {
+			if (exists $depends{$p} && ! defined $reason) {
+				D: foreach my $d (keys %{$depends{$p}}) {
 					my $sub=pagespec_translate($d);
 					next if $@ || ! defined $sub;
 
@@ -487,14 +486,18 @@ sub refresh () {
 						next if $file eq $f;
 						my $page=pagename($file);
 						if ($sub->($page, location => $p)) {
-							debug(sprintf(gettext("building %s, which depends on %s"), $f, $page));
-							render($f);
-							$rendered{$f}=1;
-							next F;
+							$reason = $page;
+							last D;
 						}
 					}
 				}
 			}
+
+			if (defined $reason) {
+				debug(sprintf(gettext("building %s, which depends on %s"), $f, $reason));
+				render($f);
+				$rendered{$f}=1;
+			}
 		}
 		
 		# handle backlinks; if a page has added/removed links,