diff --git a/IkiWiki.pm b/IkiWiki.pm index cc1e89acc..54e00ec7b 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -1536,15 +1536,19 @@ sub run_hooks ($$) { my $sub=shift; if (exists $hooks{$type}) { - my @deferred; + my (@first, @middle, @last); foreach my $id (keys %{$hooks{$type}}) { - if ($hooks{$type}{$id}{last}) { - push @deferred, $id; - next; + if ($hooks{$type}{$id}{first}) { + push @first, $id; + } + elsif ($hooks{$type}{$id}{last}) { + push @last, $id; + } + else { + push @middle, $id; } - $sub->($hooks{$type}{$id}{call}); } - foreach my $id (@deferred) { + foreach my $id (@first, @middle, @last) { $sub->($hooks{$type}{$id}{call}); } } diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 8490b455f..58da0beb8 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -1,4 +1,4 @@ -#!/usr/bin/perl +!/usr/bin/perl # Page inlining and blogging. package IkiWiki::Plugin::inline; @@ -22,7 +22,7 @@ sub import { call => \&IkiWiki::preprocess_inline); hook(type => "pagetemplate", id => "inline", call => \&IkiWiki::pagetemplate_inline); - hook(type => "format", id => "inline", call => \&format); + hook(type => "format", id => "inline", call => \&format, first => 1); # Hook to change to do pinging since it's called late. # This ensures each page only pings once and prevents slow # pings interrupting page builds. diff --git a/debian/changelog b/debian/changelog index 96a70fcc9..0fa6590f0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,8 @@ ikiwiki (2.72) UNRELEASED; urgency=low * camelcase: Add camelcase_ignore setting. * googlecalendar: Add runtime deprecation warning. * comments: Deal with users entering unqualified or partial urls. + * inline: Run format hook first, to ensure other format hooks can affect + inlined content. Closes: #509710 -- Joey Hess Mon, 22 Dec 2008 19:02:16 -0500 diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index b6fa96f91..9b5cf27f7 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -55,8 +55,8 @@ plugin, and a "call" parameter, which tells what function to call for the hook. An optional "last" parameter, if set to a true value, makes the hook run -after all other hooks of its type. Useful if the hook depends on some other -hook being run first. +after all other hooks of its type, and an optional "first" parameter makes +it run first. Useful if the hook depends on some other hook being run first. ## Types of hooks