summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki.pm16
-rw-r--r--IkiWiki/Plugin/inline.pm4
-rw-r--r--debian/changelog2
-rw-r--r--doc/plugins/write.mdwn4
4 files changed, 16 insertions, 10 deletions
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 <joeyh@debian.org> 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