]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/tips/vim_syntax_highlighting/ikiwiki.vim
vim syntax highlighting file by Recai
[ikiwiki.git] / doc / tips / vim_syntax_highlighting / ikiwiki.vim
diff --git a/doc/tips/vim_syntax_highlighting/ikiwiki.vim b/doc/tips/vim_syntax_highlighting/ikiwiki.vim
new file mode 100644 (file)
index 0000000..fd87f49
--- /dev/null
@@ -0,0 +1,71 @@
+" Vim syntax file
+" Language:     Ikiwiki (links)
+" Maintainer:   Recai OktaĆ¾ (roktasATdebian.org)
+" Last Change:  2007 May 29
+
+" Instructions:
+"               - make sure to use the relevant syntax file which can be found
+"                 at vim.org; below are the syntax files for markdown and reST,
+"                 respectively:
+"                      http://www.vim.org/scripts/script.php?script_id=1242
+"                      http://www.vim.org/scripts/script.php?script_id=973
+"               - put the file into your syntax directory (e.g. ~/.vim/syntax)
+"               - if you use markdown (with .mdwn extension) add sth like below
+"                 in your VIM startup file:
+"                      au BufNewFile,BufRead *.mdwn set ft=ikiwiki
+"               - if you use a different markup other than markdown (e.g. reST)
+"                 make sure to setup 'g:ikiwiki_render_filetype' properly in
+"                 your startup file (skip this step for mkd.vim, it should work
+"                 out of the box)
+" Todo:
+"               - revamp the whole file so as to detect valid ikiwiki directives
+"                 and parameters (needs a serious work)
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" Load the base syntax (default to markdown) if nothing was loaded.
+if !exists("b:current_syntax")
+       let s:ikiwiki_render_filetype = "mkd"
+       if exists("g:ikiwiki_render_filetype")
+               let s:ikiwiki_render_filetype = g:ikiwiki_render_filetype
+       endif
+       exe 'runtime! syntax/' . s:ikiwiki_render_filetype . '.vim'
+endif
+
+unlet b:current_syntax
+
+syn case match
+
+syn region ikiwikiLinkContent matchgroup=ikiwikiLink start=+\[\[\(\w\+\s\+\)\{,1}+ end=+\]\]+ contains=ikiwikiLinkNested,ikiwikiParam,ikiwikiNoParam
+syn region ikiwikiLinkNested matchgroup=ikiwikiLinkNested start=+"""+ end=+"""+ contains=ikiwikiLinkContent contained
+
+" FIXME: Below is an ugly hack to prevent highlighting of simple links
+"        as directives.  Links with spaces are still problematic though.
+syn region ikiwikiNoParam start=+\[\[[^|=]\+|+ end=+[^|=]\+\]\]+ keepend contains=ikiwikiMagic,ikiwikiDelim
+
+syn match ikiwikiDelim "\(\[\[\|\]\]\)" contained
+syn match  ikiwikiMagic "|" contained 
+syn match  ikiwikiParam "\<\i\+\ze=" nextgroup=ikiwikiParamAssign contained
+syn match  ikiwikiParamAssign "=" nextgroup=ikiwikiValue contained
+syn region ikiwikiValue start=+"[^"]+hs=e-1 end=+[^"]"+ skip=+\\"+ keepend contains=ikiwikiValueMagic,ikiwikiDelim contained 
+syn match  ikiwikiValueMagic +\(!\<\|\*\|\<\(and\|or\)\>\|\<\i*(\|\>)\)+ contained 
+
+syn sync minlines=50
+
+hi def link ikiwikiLink Statement
+hi def link ikiwikiLinkNested String
+hi def link ikiwikiLinkContent Underlined
+
+hi def link ikiwikiMagic Operator
+hi def link ikiwikiDelim Operator
+hi def link ikiwikiNoParam Underlined
+hi def link ikiwikiParam Identifier
+hi def link ikiwikiParamAssign Operator
+hi def link ikiwikiValue String
+hi def link ikiwikiValueMagic Type
+
+let b:current_syntax = "ikiwiki"
+unlet s:cpo_save
+
+" vim:ts=8:sts=8:noet