aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/directive_docs.mdwn
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-08-25 16:15:31 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-08-25 16:15:31 -0400
commit840c3b9d649808ac59d72567a96376603cc40ae6 (patch)
tree07f4d471c1bc6ed63eddf59dc1cf9816db940197 /doc/todo/directive_docs.mdwn
parent3cb1c8fa3b1fac58f8a84deef9b72b334c17c97a (diff)
downloadikiwiki-840c3b9d649808ac59d72567a96376603cc40ae6.tar
ikiwiki-840c3b9d649808ac59d72567a96376603cc40ae6.tar.gz
mark down, open new todo
Diffstat (limited to 'doc/todo/directive_docs.mdwn')
-rw-r--r--doc/todo/directive_docs.mdwn77
1 files changed, 77 insertions, 0 deletions
diff --git a/doc/todo/directive_docs.mdwn b/doc/todo/directive_docs.mdwn
new file mode 100644
index 000000000..b130e3d37
--- /dev/null
+++ b/doc/todo/directive_docs.mdwn
@@ -0,0 +1,77 @@
+The current basewiki is not self-documenting. In particular, if
+[[plugins/listdirectives]] is used, it creates a list with a bunch of
+broken links to directives/*, pages that do not currently exist in the
+docwiki or basewiki.
+
+This could be fixed by adding a page for each directive under to
+`ikiwiki/directives`, and put those into a new underlay, which the plugin
+could enable. Rather a lot of work and maintenance to document all the
+directives like that.
+
+I also considered having it link to the plugin that defined the
+directive. Then all the plugins can be included in a new underlay, which
+both [[plugins/listdirectives]] and [[plugins/websetup]] could enable.
+(The latter could be improved by making the plugin names in the web setup
+be links to docs about each plugin..)
+
+The problem I ran into doing that is that the existing plugin pages have a
+lot of stuff on them you probably don't want an underlay doing. The biggest
+issues were wikilinks to other pages in the docwiki (which would end up
+broken if the plugins were used as an underlay), and plugin pages that
+include examples of the plugin in use, which are sometimes rather expensive
+(eg, brokenlinks).
+
+Either way requires a lot of reorganisation/doc work, and an onging
+maintenance load.
+
+BTW, this patch would be needed for the second approach, to allow
+listdirectives to map from preprocessor directives back to the plugin that
+defined them: --[[Joey]]
+
+ commit 0486b46a629cae19ce89492d5ac498bbf9b84f5f
+ Author: Joey Hess <joey@kodama.kitenet.net>
+ Date: Mon Aug 25 15:38:51 2008 -0400
+
+ record which plugins registered which hooks
+
+ diff --git a/IkiWiki.pm b/IkiWiki.pm
+ index e476521..afe982a 100644
+ --- a/IkiWiki.pm
+ +++ b/IkiWiki.pm
+ @@ -493,6 +493,7 @@ sub loadplugins () { #{{{
+ return 1;
+ } #}}}
+
+ +my $loading_plugin;
+ sub loadplugin ($) { #{{{
+ my $plugin=shift;
+
+ @@ -502,14 +503,18 @@ sub loadplugin ($) { #{{{
+ "$installdir/lib/ikiwiki") {
+ if (defined $dir && -x "$dir/plugins/$plugin") {
+ require IkiWiki::Plugin::external;
+ + $loading_plugin=$plugin;
+ import IkiWiki::Plugin::external "$dir/plugins/$plugin";
+ + $loading_plugin=undef;
+ $loaded_plugins{$plugin}=1;
+ return 1;
+ }
+ }
+
+ my $mod="IkiWiki::Plugin::".possibly_foolish_untaint($plugin);
+ + $loading_plugin=$plugin;
+ eval qq{use $mod};
+ + $loading_plugin=undef;
+ if ($@) {
+ error("Failed to load plugin $mod: $@");
+ }
+ @@ -1429,6 +1434,9 @@ sub hook (@) { # {{{
+
+ return if $param{no_override} && exists $hooks{$param{type}}{$param{id}};
+
+ + # Record which plugin was being loaded when the hook was defined.
+ + $param{plugin}=$loading_plugin if defined $loading_plugin;
+ +
+ $hooks{$param{type}}{$param{id}}=\%param;
+ return 1;
+ } # }}}