]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/todo/syntax_highlighting.mdwn
support longname for page types in commands and rename
[git.ikiwiki.info.git] / doc / todo / syntax_highlighting.mdwn
index 645dd56bcedf110e48f673e6dece38fac2373b04..87ba77cade756756ed53e686034c924233697f6e 100644 (file)
@@ -1,28 +1,39 @@
 There's been a lot of work on contrib syntax highlighting plugins. One should be
 picked and added to ikiwiki core.
 
 There's been a lot of work on contrib syntax highlighting plugins. One should be
 picked and added to ikiwiki core.
 
-Ideally, it should support both converting whole source files into wiki
+We want to support both converting whole source files into wiki
 pages, as well as doing syntax highlighting as a preprocessor directive 
 pages, as well as doing syntax highlighting as a preprocessor directive 
-(which is either passed the text, or reads it from a file).
+(which is either passed the text, or reads it from a file). But,
+the [[ikiwiki/directive/format]] directive makes this easy enough to 
+do if the plugin only supports whole source files. So, syntax plugins
+do no really need their own preprocessor directive, unless it makes
+things easier for the user.
 
 ## The big list of possibilities
 
 
 ## The big list of possibilities
 
-* [[plugins/contrib/highlightcode]] uses [[cpan Syntax::Highlight::Engine::Kate]],
+* [[plugins/contrib/highlightcode]] uses [[!cpan Syntax::Highlight::Engine::Kate]],
   operates on whole source files only, has a few bugs (see
   [here](http://u32.net/Highlight_Code_Plugin/), and needs to be updated to
   support [[bugs/multiple_pages_with_same_name]].
   operates on whole source files only, has a few bugs (see
   [here](http://u32.net/Highlight_Code_Plugin/), and needs to be updated to
   support [[bugs/multiple_pages_with_same_name]].
-* [[cpan IkiWiki-Plugin-syntax]] only operates as a directive.
+* [[!cpan IkiWiki-Plugin-syntax]] only operates as a directive.
   Interestingly, it supports multiple highlighting backends, including Kate
   and Vim.
 * [[plugins/contrib/syntax]] only operates as a directive
   ([[not_on_source_code_files|automatic_use_of_syntax_plugin_on_source_code_files]]),
   Interestingly, it supports multiple highlighting backends, including Kate
   and Vim.
 * [[plugins/contrib/syntax]] only operates as a directive
   ([[not_on_source_code_files|automatic_use_of_syntax_plugin_on_source_code_files]]),
-  and uses [[cpan Text::VimColor]].
+  and uses [[!cpan Text::VimColor]].
 * [[plugins/contrib/sourcehighlight]] uses src-highlight, and operates on
   whole source files only. Needs to be updated to
   support [[bugs/multiple_pages_with_same_name]].
 * [[sourcecode|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]]
   also uses src-highlight, and operates on whole source files.
   Updated to work with the fix for [[bugs/multiple_pages_with_same_name]].  Untested with files with no extension, e.g. `Makefile`.
 * [[plugins/contrib/sourcehighlight]] uses src-highlight, and operates on
   whole source files only. Needs to be updated to
   support [[bugs/multiple_pages_with_same_name]].
 * [[sourcecode|todo/automatic_use_of_syntax_plugin_on_source_code_files/discussion]]
   also uses src-highlight, and operates on whole source files.
   Updated to work with the fix for [[bugs/multiple_pages_with_same_name]].  Untested with files with no extension, e.g. `Makefile`.
+* [[users/jasonblevins]]'s code plugin uses src-highlight, and supports both
+  while file and directive use.
+
+* [hlsimple](http://pivot.cs.unb.ca/git/?p=ikiplugins.git;a=blob_plain;f=IkiWiki/Plugin/hlsimple.pm;hb=HEAD) is a wrapper for the the perl module Syntax::Highlight::Engine::Simple.  This is pure perl, pretty simple, uses css. It ought to be pretty fast (according to the author, and just because it is not external).
+On the other hand, there are not many predefined languages yet.  Defining language syntaxes is about as much 
+work as source-highlight, but in perl.  I plan to package the base module for debian. Perhaps after the author 
+releases the 5 or 6 language definitions he has running on his web site, it might be suitable for inclusion in ikiwiki. [[DavidBremner]]
 
 ## General problems
 
 
 ## General problems
 
@@ -41,7 +52,7 @@ pages, as well as doing syntax highlighting as a preprocessor directive
   inside source files. Doing this probably means post-processing the 
   results of the highlighting engine, to find places where it's highlighted
   comments, and then running them through the ikiwiki rendering pipeline.
   inside source files. Doing this probably means post-processing the 
   results of the highlighting engine, to find places where it's highlighted
   comments, and then running them through the ikiwiki rendering pipeline.
-  This seems fairly doable with [[cpan Syntax::Highlight::Engine::Kate]],
+  This seems fairly doable with [[!cpan Syntax::Highlight::Engine::Kate]],
   at least.
 * The whole-file plugins tend to have a problem that things that look like
   wikilinks in the source code get munged into links by ikiwiki, which can
   at least.
 * The whole-file plugins tend to have a problem that things that look like
   wikilinks in the source code get munged into links by ikiwiki, which can
@@ -76,29 +87,34 @@ pages, as well as doing syntax highlighting as a preprocessor directive
   extensions. The workaround is to use a directive on a wiki page, pulling
   in the Makefile.
 
   extensions. The workaround is to use a directive on a wiki page, pulling
   in the Makefile.
 
-  > I wonder how hard it would be to make a patch where by a file with
+  > I wonder how hard it would be to make a patch whereby a file with
   > no `.` in the name, and a name that matches a filetype, and where
   > that filetype was registered `keepextension`, then the file is just
   > no `.` in the name, and a name that matches a filetype, and where
   > that filetype was registered `keepextension`, then the file is just
-  > chosen as the appropriate type...
-
-## format directive
-
-Rather than making syntax highlight plugins have to provide a preprocessor
-directive as well as handling whole source files, perhaps a generic format
-directive could be used:
-
-       \[[!format pl """..."""]]
-
-That would run the text through the pl htmlizer, from the syntax hightligh
-plugin. OTOH, if "rst" were given, it would run the text through the rst
-htmlizer. So, more generic, allows mixing different types of markup on one
-page, as well as syntax highlighting. Does require specifying the type of
-format, instead of allowing it to be guessed (which some syntax highlighters
-can do). (This directive is now implemented..)
-
-Hmm, this would also allow comments inside source files to have mdwn
-embedded in them, without making the use of mdwn a special case, or needing
-to postprocess the syntax highlighter output to find comments.
+  > chosen as the appropriate type.  This would allow `Makefile` to
+  > work.
+
+like this:
+
+    diff --git a/IkiWiki.pm b/IkiWiki.pm
+    index 8d728c9..1bd46a9 100644
+    --- a/IkiWiki.pm
+    +++ b/IkiWiki.pm
+    @@ -618,6 +618,8 @@ sub pagetype ($) {
+       
+       if ($page =~ /\.([^.]+)$/) {
+               return $1 if exists $hooks{htmlize}{$1};
+    +  } elsif ($hooks{htmlize}{$page}{keepextension}) {
+    +          return $page;
+       }
+       return;
+     }
+
+## format directive and comments
+
+Hmm, the [[ikiwiki/directive/format]] directive would also allow comments
+inside source files to have mdwn embedded in them, without making the use
+of mdwn a special case, or needing to postprocess the syntax highlighter
+output to find comments.
 
        /* \[[!format mdwn """
 
 
        /* \[[!format mdwn """
 
@@ -106,4 +122,5 @@ to postprocess the syntax highlighter output to find comments.
 
        """]] */
 
 
        """]] */
 
-Note that this assumes that directives are expanded in source files.
+Note that this assumes that directives are expanded in source files,
+which has its own set of problems.