X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/35668b87d3247a7de6c4dbb9edd7e0d909603524..297ff849b93e5a75074e321fe65500f0e091601c:/IkiWiki.pm diff --git a/IkiWiki.pm b/IkiWiki.pm index bcbbabbe0..063cef8e0 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -769,21 +769,30 @@ sub preprocess ($$$;$$) { #{{{ } my $ret; if (! $scan) { - $ret=$hooks{preprocess}{$command}{call}->( - @params, - page => $page, - destpage => $destpage, - preview => $preprocess_preview, - ); + $ret=eval { + $hooks{preprocess}{$command}{call}->( + @params, + page => $page, + destpage => $destpage, + preview => $preprocess_preview, + ); + }; + if ($@) { + chomp $@; + $ret="[[!$command ". + gettext("Error").": $@"."]]"; + } } else { # use void context during scan pass - $hooks{preprocess}{$command}{call}->( - @params, - page => $page, - destpage => $destpage, - preview => $preprocess_preview, - ); + eval { + $hooks{preprocess}{$command}{call}->( + @params, + page => $page, + destpage => $destpage, + preview => $preprocess_preview, + ); + }; $ret=""; } $preprocessing{$page}--; @@ -817,7 +826,8 @@ sub preprocess ($$$;$$) { #{{{ *)? # 0 or more parameters \]\] # directive closed }sx; - } else { + } + else { $regex = qr{ (\\?) # 1: escape? \[\[(!?) # directive open; 2: optional prefix