72 lines
2.9 KiB
VimL
72 lines
2.9 KiB
VimL
" 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
|