aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/search.pm6
-rw-r--r--IkiWiki/Plugin/skeleton.pm7
-rw-r--r--IkiWiki/Render.pm4
-rw-r--r--debian/changelog2
-rw-r--r--doc/bugs/search_plugin_and_CGI_preview.mdwn2
-rw-r--r--doc/plugins/write.mdwn11
6 files changed, 27 insertions, 5 deletions
diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm
index 284f477fa..822b5974e 100644
--- a/IkiWiki/Plugin/search.pm
+++ b/IkiWiki/Plugin/search.pm
@@ -9,7 +9,7 @@ use IkiWiki 2.00;
sub import { #{{{
hook(type => "checkconfig", id => "search", call => \&checkconfig);
hook(type => "pagetemplate", id => "search", call => \&pagetemplate);
- hook(type => "sanitize", id => "search", call => \&index);
+ hook(type => "postscan", id => "search", call => \&index);
hook(type => "delete", id => "search", call => \&delete);
hook(type => "cgi", id => "search", call => \&cgi);
} # }}}
@@ -48,8 +48,6 @@ my $scrubber;
my $stemmer;
sub index (@) { #{{{
my %params=@_;
-
- return $params{content} if $IkiWiki::preprocessing{$params{destpage}};
setupfiles();
@@ -132,8 +130,6 @@ sub index (@) { #{{{
$doc->add_term($pageterm);
$db->replace_document_by_term($pageterm, $doc);
-
- return $params{content};
} #}}}
sub delete (@) { #{{{
diff --git a/IkiWiki/Plugin/skeleton.pm b/IkiWiki/Plugin/skeleton.pm
index 17a2162ff..1af8e4e9d 100644
--- a/IkiWiki/Plugin/skeleton.pm
+++ b/IkiWiki/Plugin/skeleton.pm
@@ -18,6 +18,7 @@ sub import { #{{{
hook(type => "scan", id => "skeleton", call => \&scan);
hook(type => "htmlize", id => "skeleton", call => \&htmlize);
hook(type => "sanitize", id => "skeleton", call => \&sanitize);
+ hook(type => "postscan", id => "skeleton", call => \&postscan);
hook(type => "format", id => "skeleton", call => \&format);
hook(type => "pagetemplate", id => "skeleton", call => \&pagetemplate);
hook(type => "templatefile", id => "skeleton", call => \&templatefile);
@@ -89,6 +90,12 @@ sub sanitize (@) { #{{{
return $params{content};
} # }}}
+sub postscan (@) { #{{{
+ my %params=@_;
+
+ debug("skeleton plugin running as postscan");
+} # }}}
+
sub format (@) { #{{{
my %params=@_;
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 8a79119cd..fc1bc0c92 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -117,6 +117,10 @@ sub genpage ($$) { #{{{
});
$content=$template->output;
+
+ run_hooks(postscan => sub {
+ shift->(page => $page, content => $content);
+ });
run_hooks(format => sub {
$content=shift->(
diff --git a/debian/changelog b/debian/changelog
index c3a2632c9..ff907655e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -26,6 +26,8 @@ ikiwiki (2.54) UNRELEASED; urgency=low
* smileys: Some fixes for escaped smileys.
* smileys: Note that smileys need to be double-escaped for the escaping to
work. Markdown removes one level of escaping.
+ * Add a postscan hook.
+ * search: Use postscan hook, avoid updating index when previewing.
[ Simon McVittie ]
* meta, inline: Support guid options, to allow forcing a particular url or
diff --git a/doc/bugs/search_plugin_and_CGI_preview.mdwn b/doc/bugs/search_plugin_and_CGI_preview.mdwn
index 71577cd7c..eb602cd9d 100644
--- a/doc/bugs/search_plugin_and_CGI_preview.mdwn
+++ b/doc/bugs/search_plugin_and_CGI_preview.mdwn
@@ -15,3 +15,5 @@ the problem, of course.
Making the indexing only happen on a real commit might also speed the
Preview up a small amount.
--Chapman Flack
+
+[[tag done]]
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 4dc55e302..b4acb237d 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -216,6 +216,17 @@ modify the body of a page after it has been fully converted to html.
The function is passed named parameters: "page", "destpage", and "content",
and should return the sanitized content.
+### postscan
+
+ hook(type => "postscan", id => "foo", call => \&postscan);
+
+This hook is called once the full page body is available (but before the
+format hook). The most common use is to update search indexes. Added in
+ikiwiki 2.54.
+
+The function is passed named parameters "page" and "content". Its return
+value is ignored.
+
### format
hook(type => "format", id => "foo", call => \&format);