From 8625978e9955c43a8135751a21da262b0e0d8af4 Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Tue, 23 Dec 2014 17:00:28 +0100 Subject: [plugins] VimWiki + Todo Power --- syntax/todo.vim | 30 +- syntax/vimwiki.vim | 621 +++++++++++++++++++++++++++++++++++++ syntax/vimwiki_default.vim | 89 ++++++ syntax/vimwiki_markdown.vim | 89 ++++++ syntax/vimwiki_markdown_custom.vim | 392 +++++++++++++++++++++++ syntax/vimwiki_media.vim | 71 +++++ 6 files changed, 1282 insertions(+), 10 deletions(-) create mode 100644 syntax/vimwiki.vim create mode 100644 syntax/vimwiki_default.vim create mode 100644 syntax/vimwiki_markdown.vim create mode 100644 syntax/vimwiki_markdown_custom.vim create mode 100644 syntax/vimwiki_media.vim (limited to 'syntax') diff --git a/syntax/todo.vim b/syntax/todo.vim index 368bf52..837af79 100644 --- a/syntax/todo.vim +++ b/syntax/todo.vim @@ -11,23 +11,33 @@ endif setlocal iskeyword+=- syntax case ignore -syn match Todo /→ .*/ containedin=ALLBUT,todoDone,todoTaskDone +"syn match Todo /\<\u\+\>/ containedin=ALLBUT,todoDone,todoTaskDone "syn match String /{[^}]*}/ containedin=ALL syn match String /'[^']*'\|"[^"]*"/ containedin=ALL -syn match todoKeyWord /^\s*\([^:]*\w\+\):/ +syn match todoKeyWord /\(\[[ .oOX]\]\)/ -syn region todoTask3 start=/^\(\s*\)\W/ end=/$/ contains=todoKeyWord -syn region todoTask2 start=/^\(\s*\)-/ end=/$/ contains=todoKeyWord -syn region todoTask1 start=/^\(\s*\)+/ end=/$/ contains=todoKeyWord -syn region todoTitle start=/^\(\s*\)\*/ end=/$/ contains=todoKeyWord +syn region todoTitle1 start=/^\s*=/ end=/=$/ +syn region todoTitle2 start=/^\s*==/ end=/==$/ +syn region todoTitle3 start=/^\s*===/ end=/===$/ +syn region todoTitle4 start=/^\s*====/ end=/====$/ -syn region todoDone start=/^x/ end=/^\(\S\|$\)/me=s-1 contains=todoTaskDone -syn region todoTaskDone start=/^\z\(\s\+\)x/ skip=/^\z1\s\+/ end=/^/me=s-1 +syn region todoTask1 start=/^\s*[-*#] \[ \]/ end=/$/me=s-1 contains=todoKeyWord,todoTask2,todoTask3,todoTask4 +syn region todoTask2 start=/^\s*[-*#] \[\.\]/ end=/$/me=s-1 contains=todoKeyWord,todoTask3,todoTask4 +syn region todoTask3 start=/^\s*[-*#] \[o\]/ end=/$/me=s-1 contains=todoKeyWord,todoTask4 +syn region todoTask4 start=/^\s*[-*#] \[O\]/ end=/$/me=s-1 contains=todoKeyWord +"syn region todoTask3 start=/^\(\s*\)\W/ end=/$/ contains=todoKeyWord +"syn region todoTask2 start=/^\(\s*\)+/ end=/$/ contains=todoKeyWord +"syn region todoTask1 start=/^\(\s*\)-/ end=/$/ contains=todoKeyWord -syn match rtTicket /\(RTC *\)\?\#\d\+/ containedin=ALLBUT,todoDone,todoTaskDone +syn region todoDone start=/^[-*#] \[X\]/ end=/^\(\S\|$\)/me=s-1 contains=todoTaskDone +syn region todoTaskDone start=/^\z\(\s\+\)[-*#] \[X\]/ skip=/^\z1\s\+/ end=/^/me=s-1 + +syn region todoLink start=/\[\[/ end=/\]\]/ containedin=ALL + +syn match rtTicket /\(SF *\|\(RTC *\)\?\#\)\d\+/ containedin=ALLBUT,todoDone,todoTaskDone "syn region Comment start=/^\%^/ end=/=$/ -syn region Comment start=/^ *==/ end=/$/ +"syn region Comment start=/^ *==/ end=/$/ let b:current_syntax="todo" diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim new file mode 100644 index 0000000..693c7f4 --- /dev/null +++ b/syntax/vimwiki.vim @@ -0,0 +1,621 @@ +" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79 +" Vimwiki syntax file +" Author: Maxim Kim +" Home: http://code.google.com/p/vimwiki/ + +" Quit if syntax file is already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif +"TODO do nothing if ...? (?) +let starttime = reltime() " start the clock +if VimwikiGet('maxhi') + let b:existing_wikifiles = vimwiki#base#get_links('*'.VimwikiGet('ext')) + let b:existing_wikidirs = vimwiki#base#get_links('*/') +endif +let timescans = vimwiki#u#time(starttime) "XXX + "let b:xxx = 1 + "TODO ? update wikilink syntax group here if really needed (?) for :e and such + "if VimwikiGet('maxhi') + " ... + "endif + +" LINKS: assume this is common to all syntaxes "{{{ + +" LINKS: WebLinks {{{ +" match URL for common protocols; +" see http://en.wikipedia.org/wiki/URI_scheme http://tools.ietf.org/html/rfc3986 +let g:vimwiki_rxWebProtocols = ''. + \ '\%('. + \ '\%('. + \ '\%('.join(split(g:vimwiki_web_schemes1, '\s*,\s*'), '\|').'\):'. + \ '\%(//\)'. + \ '\)'. + \ '\|'. + \ '\%('.join(split(g:vimwiki_web_schemes2, '\s*,\s*'), '\|').'\):'. + \ '\)' +" +let g:vimwiki_rxWeblinkUrl = g:vimwiki_rxWebProtocols . + \ '\S\{-1,}'. '\%(([^ \t()]*)\)\=' +" }}} + +" }}} + +" ------------------------------------------------------------------------- +" Load concrete Wiki syntax: sets regexes and templates for headers and links +execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'.vim' +" ------------------------------------------------------------------------- +let time0 = vimwiki#u#time(starttime) "XXX + +let g:vimwiki_rxListItem = '\('. + \ g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber. + \ '\)' + +" LINKS: setup of larger regexes {{{ + +" LINKS: setup wikilink regexps {{{ +let g:vimwiki_rxWikiLinkPrefix = '[[' +let g:vimwiki_rxWikiLinkSuffix = ']]' +let g:vimwiki_rxWikiLinkSeparator = '|' +" [[URL]] +let g:vimwiki_WikiLinkTemplate1 = g:vimwiki_rxWikiLinkPrefix . '__LinkUrl__'. + \ g:vimwiki_rxWikiLinkSuffix +" [[URL|DESCRIPTION]] +let g:vimwiki_WikiLinkTemplate2 = g:vimwiki_rxWikiLinkPrefix . '__LinkUrl__'. + \ g:vimwiki_rxWikiLinkSeparator. '__LinkDescription__'. + \ g:vimwiki_rxWikiLinkSuffix +" +let magic_chars = '.*[]\^$' +let valid_chars = '[^\\\]]' + +let g:vimwiki_rxWikiLinkPrefix = escape(g:vimwiki_rxWikiLinkPrefix, magic_chars) +let g:vimwiki_rxWikiLinkSuffix = escape(g:vimwiki_rxWikiLinkSuffix, magic_chars) +let g:vimwiki_rxWikiLinkSeparator = escape(g:vimwiki_rxWikiLinkSeparator, magic_chars) +let g:vimwiki_rxWikiLinkUrl = valid_chars.'\{-}' +let g:vimwiki_rxWikiLinkDescr = valid_chars.'\{-}' + +let g:vimwiki_rxWord = '[^[:blank:]()\\]\+' + +" +" [[URL]], or [[URL|DESCRIPTION]] +" a) match [[URL|DESCRIPTION]] +let g:vimwiki_rxWikiLink = g:vimwiki_rxWikiLinkPrefix. + \ g:vimwiki_rxWikiLinkUrl.'\%('.g:vimwiki_rxWikiLinkSeparator. + \ g:vimwiki_rxWikiLinkDescr.'\)\?'.g:vimwiki_rxWikiLinkSuffix +" b) match URL within [[URL|DESCRIPTION]] +let g:vimwiki_rxWikiLinkMatchUrl = g:vimwiki_rxWikiLinkPrefix. + \ '\zs'. g:vimwiki_rxWikiLinkUrl.'\ze\%('. g:vimwiki_rxWikiLinkSeparator. + \ g:vimwiki_rxWikiLinkDescr.'\)\?'.g:vimwiki_rxWikiLinkSuffix +" c) match DESCRIPTION within [[URL|DESCRIPTION]] +let g:vimwiki_rxWikiLinkMatchDescr = g:vimwiki_rxWikiLinkPrefix. + \ g:vimwiki_rxWikiLinkUrl.g:vimwiki_rxWikiLinkSeparator.'\%('. + \ '\zs'. g:vimwiki_rxWikiLinkDescr. '\ze\)\?'. g:vimwiki_rxWikiLinkSuffix +" }}} + +" LINKS: Syntax helper {{{ +let g:vimwiki_rxWikiLinkPrefix1 = g:vimwiki_rxWikiLinkPrefix. + \ g:vimwiki_rxWikiLinkUrl.g:vimwiki_rxWikiLinkSeparator +let g:vimwiki_rxWikiLinkSuffix1 = g:vimwiki_rxWikiLinkSuffix +" }}} + + +" LINKS: setup of wikiincl regexps {{{ +let g:vimwiki_rxWikiInclPrefix = '{{' +let g:vimwiki_rxWikiInclSuffix = '}}' +let g:vimwiki_rxWikiInclSeparator = '|' +" +" '{{__LinkUrl__}}' +let g:vimwiki_WikiInclTemplate1 = g:vimwiki_rxWikiInclPrefix . '__LinkUrl__'. + \ g:vimwiki_rxWikiInclSuffix +" '{{__LinkUrl____LinkDescription__}}' +let g:vimwiki_WikiInclTemplate2 = g:vimwiki_rxWikiInclPrefix . '__LinkUrl__'. + \ '__LinkDescription__'. + \ g:vimwiki_rxWikiInclSuffix + +let valid_chars = '[^\\\}]' + +let g:vimwiki_rxWikiInclPrefix = escape(g:vimwiki_rxWikiInclPrefix, magic_chars) +let g:vimwiki_rxWikiInclSuffix = escape(g:vimwiki_rxWikiInclSuffix, magic_chars) +let g:vimwiki_rxWikiInclSeparator = escape(g:vimwiki_rxWikiInclSeparator, magic_chars) +let g:vimwiki_rxWikiInclUrl = valid_chars.'\{-}' +let g:vimwiki_rxWikiInclArg = valid_chars.'\{-}' +let g:vimwiki_rxWikiInclArgs = '\%('. g:vimwiki_rxWikiInclSeparator. g:vimwiki_rxWikiInclArg. '\)'.'\{-}' +" +" +" *. {{URL}[{...}]} - i.e. {{URL}}, {{URL|ARG1}}, {{URL|ARG1|ARG2}}, etc. +" *a) match {{URL}[{...}]} +let g:vimwiki_rxWikiIncl = g:vimwiki_rxWikiInclPrefix. + \ g:vimwiki_rxWikiInclUrl. + \ g:vimwiki_rxWikiInclArgs. g:vimwiki_rxWikiInclSuffix +" *b) match URL within {{URL}[{...}]} +let g:vimwiki_rxWikiInclMatchUrl = g:vimwiki_rxWikiInclPrefix. + \ '\zs'. g:vimwiki_rxWikiInclUrl. '\ze'. + \ g:vimwiki_rxWikiInclArgs. g:vimwiki_rxWikiInclSuffix +" }}} + +" LINKS: Syntax helper {{{ +let g:vimwiki_rxWikiInclPrefix1 = g:vimwiki_rxWikiInclPrefix. + \ g:vimwiki_rxWikiInclUrl.g:vimwiki_rxWikiInclSeparator +let g:vimwiki_rxWikiInclSuffix1 = g:vimwiki_rxWikiInclArgs. + \ g:vimwiki_rxWikiInclSuffix +" }}} + +" LINKS: Setup weblink regexps {{{ +" 0. URL : free-standing links: keep URL UR(L) strip trailing punct: URL; URL) UR(L)) +" let g:vimwiki_rxWeblink = '[\["(|]\@ 1 + echom '[vimwiki_debug] syntax target > '.a:target + endif + let prefix0 = 'syntax match '.a:type.' `' + let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,'.a:type.'Char' + let prefix1 = 'syntax match '.a:type.'T `' + let suffix1 = '` display contained' + execute prefix0. a:target. suffix0 + execute prefix1. a:target. suffix1 +endfunction "}}} + +function! s:add_target_syntax_OFF(target) " {{{ + if g:vimwiki_debug > 1 + echom '[vimwiki_debug] syntax target > '.a:target + endif + let prefix0 = 'syntax match VimwikiNoExistsLink `' + let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,VimwikiLinkChar' + let prefix1 = 'syntax match VimwikiNoExistsLinkT `' + let suffix1 = '` display contained' + execute prefix0. a:target. suffix0 + execute prefix1. a:target. suffix1 +endfunction "}}} + +function! s:highlight_existing_links() "{{{ + " Wikilink + " Conditional highlighting that depends on the existence of a wiki file or + " directory is only available for *schemeless* wiki links + " Links are set up upon BufEnter (see plugin/...) + let safe_links = vimwiki#base#file_pattern(b:existing_wikifiles) + " Wikilink Dirs set up upon BufEnter (see plugin/...) + let safe_dirs = vimwiki#base#file_pattern(b:existing_wikidirs) + + " match [[URL]] + let target = vimwiki#base#apply_template(g:vimwiki_WikiLinkTemplate1, + \ safe_links, g:vimwiki_rxWikiLinkDescr, '') + call s:add_target_syntax_ON(target, 'VimwikiLink') + " match [[URL|DESCRIPTION]] + let target = vimwiki#base#apply_template(g:vimwiki_WikiLinkTemplate2, + \ safe_links, g:vimwiki_rxWikiLinkDescr, '') + call s:add_target_syntax_ON(target, 'VimwikiLink') + + " match {{URL}} + let target = vimwiki#base#apply_template(g:vimwiki_WikiInclTemplate1, + \ safe_links, g:vimwiki_rxWikiInclArgs, '') + call s:add_target_syntax_ON(target, 'VimwikiLink') + " match {{URL|...}} + let target = vimwiki#base#apply_template(g:vimwiki_WikiInclTemplate2, + \ safe_links, g:vimwiki_rxWikiInclArgs, '') + call s:add_target_syntax_ON(target, 'VimwikiLink') + " match [[DIRURL]] + let target = vimwiki#base#apply_template(g:vimwiki_WikiLinkTemplate1, + \ safe_dirs, g:vimwiki_rxWikiLinkDescr, '') + call s:add_target_syntax_ON(target, 'VimwikiLink') + " match [[DIRURL|DESCRIPTION]] + let target = vimwiki#base#apply_template(g:vimwiki_WikiLinkTemplate2, + \ safe_dirs, g:vimwiki_rxWikiLinkDescr, '') + call s:add_target_syntax_ON(target, 'VimwikiLink') +endfunction "}}} + + +" use max highlighting - could be quite slow if there are too many wikifiles +if VimwikiGet('maxhi') + " WikiLink + call s:add_target_syntax_OFF(g:vimwiki_rxWikiLink) + " WikiIncl + call s:add_target_syntax_OFF(g:vimwiki_rxWikiIncl) + + " Subsequently, links verified on vimwiki's path are highlighted as existing + let time01 = vimwiki#u#time(starttime) "XXX + call s:highlight_existing_links() + let time02 = vimwiki#u#time(starttime) "XXX +else + let time01 = vimwiki#u#time(starttime) "XXX + " Wikilink + call s:add_target_syntax_ON(g:vimwiki_rxWikiLink, 'VimwikiLink') + " WikiIncl + call s:add_target_syntax_ON(g:vimwiki_rxWikiIncl, 'VimwikiLink') + let time02 = vimwiki#u#time(starttime) "XXX +endif + +" Weblink +call s:add_target_syntax_ON(g:vimwiki_rxWeblink, 'VimwikiLink') + +" WikiLink +" All remaining schemes are highlighted automatically +let rxSchemes = '\%('. + \ join(split(g:vimwiki_schemes, '\s*,\s*'), '\|').'\|'. + \ join(split(g:vimwiki_web_schemes1, '\s*,\s*'), '\|'). + \ '\):' + +" a) match [[nonwiki-scheme-URL]] +let target = vimwiki#base#apply_template(g:vimwiki_WikiLinkTemplate1, + \ rxSchemes.g:vimwiki_rxWikiLinkUrl, g:vimwiki_rxWikiLinkDescr, '') +call s:add_target_syntax_ON(target, 'VimwikiLink') +" b) match [[nonwiki-scheme-URL|DESCRIPTION]] +let target = vimwiki#base#apply_template(g:vimwiki_WikiLinkTemplate2, + \ rxSchemes.g:vimwiki_rxWikiLinkUrl, g:vimwiki_rxWikiLinkDescr, '') +call s:add_target_syntax_ON(target, 'VimwikiLink') + +" a) match {{nonwiki-scheme-URL}} +let target = vimwiki#base#apply_template(g:vimwiki_WikiInclTemplate1, + \ rxSchemes.g:vimwiki_rxWikiInclUrl, g:vimwiki_rxWikiInclArgs, '') +call s:add_target_syntax_ON(target, 'VimwikiLink') +" b) match {{nonwiki-scheme-URL}[{...}]} +let target = vimwiki#base#apply_template(g:vimwiki_WikiInclTemplate2, + \ rxSchemes.g:vimwiki_rxWikiInclUrl, g:vimwiki_rxWikiInclArgs, '') +call s:add_target_syntax_ON(target, 'VimwikiLink') + +" }}} + + +" generic headers "{{{ +if g:vimwiki_symH + "" symmetric + for i in range(1,6) + let g:vimwiki_rxH{i}_Template = repeat(g:vimwiki_rxH, i).' __Header__ '.repeat(g:vimwiki_rxH, i) + let g:vimwiki_rxH{i} = '^\s*'.g:vimwiki_rxH.'\{'.i.'}[^'.g:vimwiki_rxH.'].*[^'.g:vimwiki_rxH.']'.g:vimwiki_rxH.'\{'.i.'}\s*$' + let g:vimwiki_rxH{i}_Start = '^\s*'.g:vimwiki_rxH.'\{'.i.'}[^'.g:vimwiki_rxH.'].*[^'.g:vimwiki_rxH.']'.g:vimwiki_rxH.'\{'.i.'}\s*$' + let g:vimwiki_rxH{i}_End = '^\s*'.g:vimwiki_rxH.'\{1,'.i.'}[^'.g:vimwiki_rxH.'].*[^'.g:vimwiki_rxH.']'.g:vimwiki_rxH.'\{1,'.i.'}\s*$' + endfor + let g:vimwiki_rxHeader = '^\s*\('.g:vimwiki_rxH.'\{1,6}\)\zs[^'.g:vimwiki_rxH.'].*[^'.g:vimwiki_rxH.']\ze\1\s*$' +else + " asymmetric + for i in range(1,6) + let g:vimwiki_rxH{i}_Template = repeat(g:vimwiki_rxH, i).' __Header__' + let g:vimwiki_rxH{i} = '^\s*'.g:vimwiki_rxH.'\{'.i.'}[^'.g:vimwiki_rxH.'].*$' + let g:vimwiki_rxH{i}_Start = '^\s*'.g:vimwiki_rxH.'\{'.i.'}[^'.g:vimwiki_rxH.'].*$' + let g:vimwiki_rxH{i}_End = '^\s*'.g:vimwiki_rxH.'\{1,'.i.'}[^'.g:vimwiki_rxH.'].*$' + endfor + let g:vimwiki_rxHeader = '^\s*\('.g:vimwiki_rxH.'\{1,6}\)\zs[^'.g:vimwiki_rxH.'].*\ze$' +endif + +" Header levels, 1-6 +for i in range(1,6) + execute 'syntax match VimwikiHeader'.i.' /'.g:vimwiki_rxH{i}.'/ contains=VimwikiTodo,VimwikiHeaderChar,VimwikiNoExistsLink,VimwikiCode,VimwikiLink,@Spell' + execute 'syntax region VimwikiH'.i.'Folding start=/'.g:vimwiki_rxH{i}_Start. + \ '/ end=/'.g:vimwiki_rxH{i}_End.'/me=s-1 transparent fold' +endfor + + +" }}} + +" possibly concealed chars " {{{ +let conceal = exists("+conceallevel") ? ' conceal' : '' + +execute 'syn match VimwikiEqInChar contained /'.g:vimwiki_char_eqin.'/'.conceal +execute 'syn match VimwikiBoldChar contained /'.g:vimwiki_char_bold.'/'.conceal +execute 'syn match VimwikiItalicChar contained /'.g:vimwiki_char_italic.'/'.conceal +execute 'syn match VimwikiBoldItalicChar contained /'.g:vimwiki_char_bolditalic.'/'.conceal +execute 'syn match VimwikiItalicBoldChar contained /'.g:vimwiki_char_italicbold.'/'.conceal +execute 'syn match VimwikiCodeChar contained /'.g:vimwiki_char_code.'/'.conceal +execute 'syn match VimwikiDelTextChar contained /'.g:vimwiki_char_deltext.'/'.conceal +execute 'syn match VimwikiSuperScript contained /'.g:vimwiki_char_superscript.'/'.conceal +execute 'syn match VimwikiSubScript contained /'.g:vimwiki_char_subscript.'/'.conceal +" }}} + +" concealed link parts " {{{ +if g:vimwiki_debug > 1 + echom 'WikiLink Prefix: '.g:vimwiki_rxWikiLinkPrefix + echom 'WikiLink Suffix: '.g:vimwiki_rxWikiLinkSuffix + echom 'WikiLink Prefix1: '.g:vimwiki_rxWikiLinkPrefix1 + echom 'WikiLink Suffix1: '.g:vimwiki_rxWikiLinkSuffix1 + echom 'WikiIncl Prefix: '.g:vimwiki_rxWikiInclPrefix1 + echom 'WikiIncl Suffix: '.g:vimwiki_rxWikiInclSuffix1 +endif + +" define the conceal attribute for links only if Vim is new enough to handle it +" and the user has g:vimwiki_url_maxsave > 0 + +let options = ' contained transparent contains=NONE' +" +" A shortener for long URLs: LinkRest (a middle part of the URL) is concealed +" VimwikiLinkRest group is left undefined if link shortening is not desired +if exists("+conceallevel") && g:vimwiki_url_maxsave > 0 + let options .= conceal + execute 'syn match VimwikiLinkRest `\%(///\=[^/ \t]\+/\)\zs\S\+\ze' + \.'\%([/#?]\w\|\S\{'.g:vimwiki_url_maxsave.'}\)`'.' cchar=~'.options +endif + +" VimwikiLinkChar is for syntax markers (and also URL when a description +" is present) and may be concealed + +" conceal wikilinks +execute 'syn match VimwikiLinkChar /'.g:vimwiki_rxWikiLinkPrefix.'/'.options +execute 'syn match VimwikiLinkChar /'.g:vimwiki_rxWikiLinkSuffix.'/'.options +execute 'syn match VimwikiLinkChar /'.g:vimwiki_rxWikiLinkPrefix1.'/'.options +execute 'syn match VimwikiLinkChar /'.g:vimwiki_rxWikiLinkSuffix1.'/'.options + +" conceal wikiincls +execute 'syn match VimwikiLinkChar /'.g:vimwiki_rxWikiInclPrefix.'/'.options +execute 'syn match VimwikiLinkChar /'.g:vimwiki_rxWikiInclSuffix.'/'.options +execute 'syn match VimwikiLinkChar /'.g:vimwiki_rxWikiInclPrefix1.'/'.options +execute 'syn match VimwikiLinkChar /'.g:vimwiki_rxWikiInclSuffix1.'/'.options +" }}} + +" non concealed chars " {{{ +execute 'syn match VimwikiHeaderChar contained /\%(^\s*'.g:vimwiki_rxH.'\+\)\|\%('.g:vimwiki_rxH.'\+\s*$\)/' +execute 'syn match VimwikiEqInCharT contained /'.g:vimwiki_char_eqin.'/' +execute 'syn match VimwikiBoldCharT contained /'.g:vimwiki_char_bold.'/' +execute 'syn match VimwikiItalicCharT contained /'.g:vimwiki_char_italic.'/' +execute 'syn match VimwikiBoldItalicCharT contained /'.g:vimwiki_char_bolditalic.'/' +execute 'syn match VimwikiItalicBoldCharT contained /'.g:vimwiki_char_italicbold.'/' +execute 'syn match VimwikiCodeCharT contained /'.g:vimwiki_char_code.'/' +execute 'syn match VimwikiDelTextCharT contained /'.g:vimwiki_char_deltext.'/' +execute 'syn match VimwikiSuperScriptT contained /'.g:vimwiki_char_superscript.'/' +execute 'syn match VimwikiSubScriptT contained /'.g:vimwiki_char_subscript.'/' + +" Emoticons +"syntax match VimwikiEmoticons /\%((.)\|:[()|$@]\|:-[DOPS()\]|$@]\|;)\|:'(\)/ + +let g:vimwiki_rxTodo = '\C\%(TODO:\|DONE:\|STARTED:\|FIXME:\|FIXED:\|XXX:\)' +execute 'syntax match VimwikiTodo /'. g:vimwiki_rxTodo .'/' +" }}} + +" main syntax groups {{{ + +" Tables +syntax match VimwikiTableRow /^\s*|.\+|\s*$/ + \ transparent contains=VimwikiCellSeparator, + \ VimwikiLinkT, + \ VimwikiNoExistsLinkT, + \ VimwikiEmoticons, + \ VimwikiTodo, + \ VimwikiBoldT, + \ VimwikiItalicT, + \ VimwikiBoldItalicT, + \ VimwikiItalicBoldT, + \ VimwikiDelTextT, + \ VimwikiSuperScriptT, + \ VimwikiSubScriptT, + \ VimwikiCodeT, + \ VimwikiEqInT, + \ @Spell +syntax match VimwikiCellSeparator + \ /\%(|\)\|\%(-\@<=+\-\@=\)\|\%([|+]\@<=-\+\)/ contained + +" List items +execute 'syntax match VimwikiList /'.g:vimwiki_rxListBullet.'/' +execute 'syntax match VimwikiList /'.g:vimwiki_rxListNumber.'/' +execute 'syntax match VimwikiList /'.g:vimwiki_rxListDefine.'/' +" List item checkbox +"syntax match VimwikiCheckBox /\[.\?\]/ +let g:vimwiki_rxCheckBox = '\s*\[['.g:vimwiki_listsyms.']\?\]\s' +" Todo lists have a checkbox +execute 'syntax match VimwikiListTodo /'.g:vimwiki_rxListBullet.g:vimwiki_rxCheckBox.'/' +execute 'syntax match VimwikiListTodo /'.g:vimwiki_rxListNumber.g:vimwiki_rxCheckBox.'/' +if g:vimwiki_hl_cb_checked + execute 'syntax match VimwikiCheckBoxDone /'. + \ g:vimwiki_rxListBullet.'\s*\['.g:vimwiki_listsyms[4].'\]\s.*$/'. + \ ' contains=VimwikiNoExistsLink,VimwikiLink' + execute 'syntax match VimwikiCheckBoxDone /'. + \ g:vimwiki_rxListNumber.'\s*\['.g:vimwiki_listsyms[4].'\]\s.*$/'. + \ ' contains=VimwikiNoExistsLink,VimwikiLink' +endif + +execute 'syntax match VimwikiEqIn /'.g:vimwiki_rxEqIn.'/ contains=VimwikiEqInChar' +execute 'syntax match VimwikiEqInT /'.g:vimwiki_rxEqIn.'/ contained contains=VimwikiEqInCharT' + +execute 'syntax match VimwikiBold /'.g:vimwiki_rxBold.'/ contains=VimwikiBoldChar,@Spell' +execute 'syntax match VimwikiBoldT /'.g:vimwiki_rxBold.'/ contained contains=VimwikiBoldCharT,@Spell' + +execute 'syntax match VimwikiItalic /'.g:vimwiki_rxItalic.'/ contains=VimwikiItalicChar,@Spell' +execute 'syntax match VimwikiItalicT /'.g:vimwiki_rxItalic.'/ contained contains=VimwikiItalicCharT,@Spell' + +execute 'syntax match VimwikiBoldItalic /'.g:vimwiki_rxBoldItalic.'/ contains=VimwikiBoldItalicChar,VimwikiItalicBoldChar,@Spell' +execute 'syntax match VimwikiBoldItalicT /'.g:vimwiki_rxBoldItalic.'/ contained contains=VimwikiBoldItalicChatT,VimwikiItalicBoldCharT,@Spell' + +execute 'syntax match VimwikiItalicBold /'.g:vimwiki_rxItalicBold.'/ contains=VimwikiBoldItalicChar,VimwikiItalicBoldChar,@Spell' +execute 'syntax match VimwikiItalicBoldT /'.g:vimwiki_rxItalicBold.'/ contained contains=VimwikiBoldItalicCharT,VimsikiItalicBoldCharT,@Spell' + +execute 'syntax match VimwikiDelText /'.g:vimwiki_rxDelText.'/ contains=VimwikiDelTextChar,@Spell' +execute 'syntax match VimwikiDelTextT /'.g:vimwiki_rxDelText.'/ contained contains=VimwikiDelTextChar,@Spell' + +execute 'syntax match VimwikiSuperScript /'.g:vimwiki_rxSuperScript.'/ contains=VimwikiSuperScriptChar,@Spell' +execute 'syntax match VimwikiSuperScriptT /'.g:vimwiki_rxSuperScript.'/ contained contains=VimwikiSuperScriptCharT,@Spell' + +execute 'syntax match VimwikiSubScript /'.g:vimwiki_rxSubScript.'/ contains=VimwikiSubScriptChar,@Spell' +execute 'syntax match VimwikiSubScriptT /'.g:vimwiki_rxSubScript.'/ contained contains=VimwikiSubScriptCharT,@Spell' + +execute 'syntax match VimwikiCode /'.g:vimwiki_rxCode.'/ contains=VimwikiCodeChar' +execute 'syntax match VimwikiCodeT /'.g:vimwiki_rxCode.'/ contained contains=VimwikiCodeCharT' + +"
horizontal rule +execute 'syntax match VimwikiHR /'.g:vimwiki_rxHR.'/' + +execute 'syntax region VimwikiPre start=/^\s*'.g:vimwiki_rxPreStart. + \ '/ end=/^\s*'.g:vimwiki_rxPreEnd.'\s*$/ contains=@Spell' + +execute 'syntax region VimwikiMath start=/^\s*'.g:vimwiki_rxMathStart. + \ '/ end=/^\s*'.g:vimwiki_rxMathEnd.'\s*$/ contains=@Spell' + + +" placeholders +syntax match VimwikiPlaceholder /^\s*%toc\%(\s.*\)\?$/ contains=VimwikiPlaceholderParam +syntax match VimwikiPlaceholder /^\s*%nohtml\s*$/ +syntax match VimwikiPlaceholder /^\s*%title\%(\s.*\)\?$/ contains=VimwikiPlaceholderParam +syntax match VimwikiPlaceholder /^\s*%template\%(\s.*\)\?$/ contains=VimwikiPlaceholderParam +syntax match VimwikiPlaceholderParam /\s.*/ contained + +" html tags +if g:vimwiki_valid_html_tags != '' + let html_tags = join(split(g:vimwiki_valid_html_tags, '\s*,\s*'), '\|') + exe 'syntax match VimwikiHTMLtag #\c#' + execute 'syntax match VimwikiBold #\c.\{-}# contains=VimwikiHTMLTag' + execute 'syntax match VimwikiItalic #\c.\{-}# contains=VimwikiHTMLTag' + execute 'syntax match VimwikiUnderline #\c.\{-}# contains=VimwikiHTMLTag' + + execute 'syntax match VimwikiComment /'.g:vimwiki_rxComment.'/ contains=@Spell' +endif +" }}} + +" header groups highlighting "{{{ + +if g:vimwiki_hl_headers == 0 + " Strangely in default colorscheme Title group is not set to bold for cterm... + if !exists("g:colors_name") + hi Title cterm=bold + endif + for i in range(1,6) + execute 'hi def link VimwikiHeader'.i.' Title' + endfor +else + " default colors when headers of different levels are highlighted differently + " not making it yet another option; needed by ColorScheme autocommand + let g:vimwiki_hcolor_guifg_light = ['#aa5858','#507030','#1030a0','#103040','#505050','#636363'] + let g:vimwiki_hcolor_ctermfg_light = ['DarkRed','DarkGreen','DarkBlue','Black','Black','Black'] + let g:vimwiki_hcolor_guifg_dark = ['#e08090','#80e090','#6090e0','#c0c0f0','#e0e0f0','#f0f0f0'] + let g:vimwiki_hcolor_ctermfg_dark = ['Red','Green','Blue','White','White','White'] + for i in range(1,6) + execute 'hi def VimwikiHeader'.i.' guibg=bg guifg='.g:vimwiki_hcolor_guifg_{&bg}[i-1].' gui=bold ctermfg='.g:vimwiki_hcolor_ctermfg_{&bg}[i-1].' term=bold cterm=bold' + endfor +endif +"}}} + + + +" syntax group highlighting "{{{ + +hi def link VimwikiMarkers Normal + +hi def link VimwikiEqIn Number +hi def link VimwikiEqInT VimwikiEqIn + +hi def VimwikiBold term=bold cterm=bold gui=bold +hi def link VimwikiBoldT VimwikiBold + +hi def VimwikiItalic term=italic cterm=italic gui=italic +hi def link VimwikiItalicT VimwikiItalic + +hi def VimwikiBoldItalic term=bold cterm=bold gui=bold,italic +hi def link VimwikiItalicBold VimwikiBoldItalic +hi def link VimwikiBoldItalicT VimwikiBoldItalic +hi def link VimwikiItalicBoldT VimwikiBoldItalic + +hi def VimwikiUnderline gui=underline + +hi def link VimwikiCode PreProc +hi def link VimwikiCodeT VimwikiCode + +hi def link VimwikiPre PreProc +hi def link VimwikiPreT VimwikiPre + +hi def link VimwikiMath Number +hi def link VimwikiMathT VimwikiMath + +hi def link VimwikiNoExistsLink SpellBad +hi def link VimwikiNoExistsLinkT VimwikiNoExistsLink + +hi def link VimwikiLink Underlined +hi def link VimwikiLinkT VimwikiLink + +hi def link VimwikiList Identifier +hi def link VimwikiListTodo VimwikiList +"hi def link VimwikiCheckBox VimwikiList +hi def link VimwikiCheckBoxDone Comment +hi def link VimwikiEmoticons Character +hi def link VimwikiHR Identifier + +hi def link VimwikiDelText Constant +hi def link VimwikiDelTextT VimwikiDelText + +hi def link VimwikiSuperScript Number +hi def link VimwikiSuperScriptT VimwikiSuperScript + +hi def link VimwikiSubScript Number +hi def link VimwikiSubScriptT VimwikiSubScript + +hi def link VimwikiTodo Todo +hi def link VimwikiComment Comment + +hi def link VimwikiPlaceholder SpecialKey +hi def link VimwikiPlaceholderParam String +hi def link VimwikiHTMLtag SpecialKey + +hi def link VimwikiEqInChar VimwikiMarkers +hi def link VimwikiCellSeparator VimwikiMarkers +hi def link VimwikiBoldChar VimwikiMarkers +hi def link VimwikiItalicChar VimwikiMarkers +hi def link VimwikiBoldItalicChar VimwikiMarkers +hi def link VimwikiItalicBoldChar VimwikiMarkers +hi def link VimwikiDelTextChar VimwikiMarkers +hi def link VimwikiSuperScriptChar VimwikiMarkers +hi def link VimwikiSubScriptChar VimwikiMarkers +hi def link VimwikiCodeChar VimwikiMarkers +hi def link VimwikiHeaderChar VimwikiMarkers + +hi def link VimwikiEqInCharT VimwikiMarkers +hi def link VimwikiBoldCharT VimwikiMarkers +hi def link VimwikiItalicCharT VimwikiMarkers +hi def link VimwikiBoldItalicCharT VimwikiMarkers +hi def link VimwikiItalicBoldCharT VimwikiMarkers +hi def link VimwikiDelTextCharT VimwikiMarkers +hi def link VimwikiSuperScriptCharT VimwikiMarkers +hi def link VimwikiSubScriptCharT VimwikiMarkers +hi def link VimwikiCodeCharT VimwikiMarkers +hi def link VimwikiHeaderCharT VimwikiMarkers +hi def link VimwikiLinkCharT VimwikiLinkT +hi def link VimwikiNoExistsLinkCharT VimwikiNoExistsLinkT +"}}} + +" ------------------------------------------------------------------------- +" Load syntax-specific functionality +execute 'runtime! syntax/vimwiki_'.VimwikiGet('syntax').'_custom.vim' +" ------------------------------------------------------------------------- + +" FIXME it now does not make sense to pretend there is a single syntax "vimwiki" +let b:current_syntax="vimwiki" + +" EMBEDDED syntax setup "{{{ +let nested = VimwikiGet('nested_syntaxes') +if !empty(nested) + for [hl_syntax, vim_syntax] in items(nested) + call vimwiki#base#nested_syntax(vim_syntax, + \ '^\s*'.g:vimwiki_rxPreStart.'\%(.*[[:blank:][:punct:]]\)\?'. + \ hl_syntax.'\%([[:blank:][:punct:]].*\)\?', + \ '^\s*'.g:vimwiki_rxPreEnd, 'VimwikiPre') + endfor +endif +" LaTeX +call vimwiki#base#nested_syntax('tex', + \ '^\s*'.g:vimwiki_rxMathStart.'\%(.*[[:blank:][:punct:]]\)\?'. + \ '\%([[:blank:][:punct:]].*\)\?', + \ '^\s*'.g:vimwiki_rxMathEnd, 'VimwikiMath') +"}}} + + +syntax spell toplevel + +let timeend = vimwiki#u#time(starttime) "XXX +call VimwikiLog_extend('timing',['syntax:scans',timescans],['syntax:regexloaded',time0],['syntax:beforeHLexisting',time01],['syntax:afterHLexisting',time02],['syntax:end',timeend]) diff --git a/syntax/vimwiki_default.vim b/syntax/vimwiki_default.vim new file mode 100644 index 0000000..1d5093b --- /dev/null +++ b/syntax/vimwiki_default.vim @@ -0,0 +1,89 @@ +" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79 +" Vimwiki syntax file +" Default syntax +" Author: Maxim Kim +" Home: http://code.google.com/p/vimwiki/ + +" placeholder for math environments +let b:vimwiki_mathEnv = "" + +" text: $ equation_inline $ +let g:vimwiki_rxEqIn = '\$[^$`]\+\$' +let g:vimwiki_char_eqin = '\$' + +" text: *strong* +" let g:vimwiki_rxBold = '\*[^*]\+\*' +let g:vimwiki_rxBold = '\%(^\|\s\|[[:punct:]]\)\@<='. + \'\*'. + \'\%([^*`[:space:]][^*`]*[^*`[:space:]]\|[^*`[:space:]]\)'. + \'\*'. + \'\%([[:punct:]]\|\s\|$\)\@=' +let g:vimwiki_char_bold = '*' + +" text: _emphasis_ +" let g:vimwiki_rxItalic = '_[^_]\+_' +let g:vimwiki_rxItalic = '\%(^\|\s\|[[:punct:]]\)\@<='. + \'_'. + \'\%([^_`[:space:]][^_`]*[^_`[:space:]]\|[^_`[:space:]]\)'. + \'_'. + \'\%([[:punct:]]\|\s\|$\)\@=' +let g:vimwiki_char_italic = '_' + +" text: *_bold italic_* or _*italic bold*_ +let g:vimwiki_rxBoldItalic = '\%(^\|\s\|[[:punct:]]\)\@<='. + \'\*_'. + \'\%([^*_`[:space:]][^*_`]*[^*_`[:space:]]\|[^*_`[:space:]]\)'. + \'_\*'. + \'\%([[:punct:]]\|\s\|$\)\@=' +let g:vimwiki_char_bolditalic = '\*_' + +let g:vimwiki_rxItalicBold = '\%(^\|\s\|[[:punct:]]\)\@<='. + \'_\*'. + \'\%([^*_`[:space:]][^*_`]*[^*_`[:space:]]\|[^*_`[:space:]]\)'. + \'\*_'. + \'\%([[:punct:]]\|\s\|$\)\@=' +let g:vimwiki_char_italicbold = '_\*' + +" text: `code` +let g:vimwiki_rxCode = '`[^`]\+`' +let g:vimwiki_char_code = '`' + +" text: ~~deleted text~~ +let g:vimwiki_rxDelText = '\~\~[^~`]\+\~\~' +let g:vimwiki_char_deltext = '\~\~' + +" text: ^superscript^ +let g:vimwiki_rxSuperScript = '\^[^^`]\+\^' +let g:vimwiki_char_superscript = '^' + +" text: ,,subscript,, +let g:vimwiki_rxSubScript = ',,[^,`]\+,,' +let g:vimwiki_char_subscript = ',,' + +" generic headers +let g:vimwiki_rxH = '=' +let g:vimwiki_symH = 1 + + + +"
, horizontal rule +let g:vimwiki_rxHR = '^-----*$' + +" Tables. Each line starts and ends with '|'; each cell is separated by '|' +let g:vimwiki_rxTableSep = '|' + +" List items start with optional whitespace(s) then '* ' or '# ' +let g:vimwiki_rxListBullet = '^\s*[*-]\s' +let g:vimwiki_rxListNumber = '^\s*#\s' + +let g:vimwiki_rxListDefine = '::\(\s\|$\)' + +" Preformatted text +let g:vimwiki_rxPreStart = '{{{' +let g:vimwiki_rxPreEnd = '}}}' + +" Math block +let g:vimwiki_rxMathStart = '{{\$' +let g:vimwiki_rxMathEnd = '}}\$' + +let g:vimwiki_rxComment = '^\s*%%.*$' diff --git a/syntax/vimwiki_markdown.vim b/syntax/vimwiki_markdown.vim new file mode 100644 index 0000000..13e35e1 --- /dev/null +++ b/syntax/vimwiki_markdown.vim @@ -0,0 +1,89 @@ +" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79 +" Vimwiki syntax file +" Default syntax +" Author: Maxim Kim +" Home: http://code.google.com/p/vimwiki/ + +" placeholder for math environments +let b:vimwiki_mathEnv = "" + +" text: $ equation_inline $ +let g:vimwiki_rxEqIn = '\$[^$`]\+\$' +let g:vimwiki_char_eqin = '\$' + +" text: *strong* +" let g:vimwiki_rxBold = '\*[^*]\+\*' +let g:vimwiki_rxBold = '\%(^\|\s\|[[:punct:]]\)\@<='. + \'\*'. + \'\%([^*`[:space:]][^*`]*[^*`[:space:]]\|[^*`[:space:]]\)'. + \'\*'. + \'\%([[:punct:]]\|\s\|$\)\@=' +let g:vimwiki_char_bold = '*' + +" text: _emphasis_ +" let g:vimwiki_rxItalic = '_[^_]\+_' +let g:vimwiki_rxItalic = '\%(^\|\s\|[[:punct:]]\)\@<='. + \'_'. + \'\%([^_`[:space:]][^_`]*[^_`[:space:]]\|[^_`[:space:]]\)'. + \'_'. + \'\%([[:punct:]]\|\s\|$\)\@=' +let g:vimwiki_char_italic = '_' + +" text: *_bold italic_* or _*italic bold*_ +let g:vimwiki_rxBoldItalic = '\%(^\|\s\|[[:punct:]]\)\@<='. + \'\*_'. + \'\%([^*_`[:space:]][^*_`]*[^*_`[:space:]]\|[^*_`[:space:]]\)'. + \'_\*'. + \'\%([[:punct:]]\|\s\|$\)\@=' +let g:vimwiki_char_bolditalic = '\*_' + +let g:vimwiki_rxItalicBold = '\%(^\|\s\|[[:punct:]]\)\@<='. + \'_\*'. + \'\%([^*_`[:space:]][^*_`]*[^*_`[:space:]]\|[^*_`[:space:]]\)'. + \'\*_'. + \'\%([[:punct:]]\|\s\|$\)\@=' +let g:vimwiki_char_italicbold = '_\*' + +" text: `code` +let g:vimwiki_rxCode = '`[^`]\+`' +let g:vimwiki_char_code = '`' + +" text: ~~deleted text~~ +let g:vimwiki_rxDelText = '\~\~[^~`]\+\~\~' +let g:vimwiki_char_deltext = '\~\~' + +" text: ^superscript^ +let g:vimwiki_rxSuperScript = '\^[^^`]\+\^' +let g:vimwiki_char_superscript = '^' + +" text: ,,subscript,, +let g:vimwiki_rxSubScript = ',,[^,`]\+,,' +let g:vimwiki_char_subscript = ',,' + +" generic headers +let g:vimwiki_rxH = '#' +let g:vimwiki_symH = 0 + + + +"
, horizontal rule +let g:vimwiki_rxHR = '^-----*$' + +" Tables. Each line starts and ends with '|'; each cell is separated by '|' +let g:vimwiki_rxTableSep = '|' + +" List items start with optional whitespace(s) then '* ' or '1. ', '2. ', etc. +let g:vimwiki_rxListBullet = '^\s*[*+-]\s' +let g:vimwiki_rxListNumber = '^\s*[0-9]\+\.\s' + +let g:vimwiki_rxListDefine = '::\%(\s\|$\)' + +" Preformatted text +let g:vimwiki_rxPreStart = '```' +let g:vimwiki_rxPreEnd = '```' + +" Math block +let g:vimwiki_rxMathStart = '\$\$' +let g:vimwiki_rxMathEnd = '\$\$' + +let g:vimwiki_rxComment = '^\s*%%.*$' diff --git a/syntax/vimwiki_markdown_custom.vim b/syntax/vimwiki_markdown_custom.vim new file mode 100644 index 0000000..94ab358 --- /dev/null +++ b/syntax/vimwiki_markdown_custom.vim @@ -0,0 +1,392 @@ +" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79 +" Vimwiki syntax file +" Author: Stuart Andrews +" Home: http://code.google.com/p/vimwiki/ + +" LINKS: assume this is common to all syntaxes "{{{ + +" }}} + +" ------------------------------------------------------------------------- +" Load concrete Wiki syntax: sets regexes and templates for headers and links + +" ------------------------------------------------------------------------- + + + +" LINKS: setup of larger regexes {{{ + +" LINKS: setup wikilink0 regexps {{{ +" 0. [[URL]], or [[URL|DESCRIPTION]] + +" 0a) match [[URL|DESCRIPTION]] +let g:vimwiki_rxWikiLink0 = g:vimwiki_rxWikiLink +" 0b) match URL within [[URL|DESCRIPTION]] +let g:vimwiki_rxWikiLink0MatchUrl = g:vimwiki_rxWikiLinkMatchUrl +" 0c) match DESCRIPTION within [[URL|DESCRIPTION]] +let g:vimwiki_rxWikiLink0MatchDescr = g:vimwiki_rxWikiLinkMatchDescr +" }}} + +" LINKS: setup wikilink1 regexps {{{ +" 1. [URL][], or [DESCRIPTION][URL] + +let g:vimwiki_rxWikiLink1Prefix = '[' +let g:vimwiki_rxWikiLink1Suffix = ']' +let g:vimwiki_rxWikiLink1Separator = '][' + +" [URL][] +let g:vimwiki_WikiLink1Template1 = g:vimwiki_rxWikiLink1Prefix . '__LinkUrl__'. + \ g:vimwiki_rxWikiLink1Separator. g:vimwiki_rxWikiLink1Suffix +" [DESCRIPTION][URL] +let g:vimwiki_WikiLink1Template2 = g:vimwiki_rxWikiLink1Prefix . '__LinkDescription__'. + \ g:vimwiki_rxWikiLink1Separator. '__LinkUrl__'. + \ g:vimwiki_rxWikiLink1Suffix +" +let magic_chars = '.*[]\^$' +let valid_chars = '[^\\\[\]]' + +let g:vimwiki_rxWikiLink1Prefix = escape(g:vimwiki_rxWikiLink1Prefix, magic_chars) +let g:vimwiki_rxWikiLink1Suffix = escape(g:vimwiki_rxWikiLink1Suffix, magic_chars) +let g:vimwiki_rxWikiLink1Separator = escape(g:vimwiki_rxWikiLink1Separator, magic_chars) +let g:vimwiki_rxWikiLink1Url = valid_chars.'\{-}' +let g:vimwiki_rxWikiLink1Descr = valid_chars.'\{-}' + +let g:vimwiki_rxWikiLink1InvalidPrefix = '[\]\[]\@ 1 + echom '[vimwiki_debug] syntax target > '.a:target + endif + let prefix0 = 'syntax match '.a:type.' `' + let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,'.a:type.'Char' + let prefix1 = 'syntax match '.a:type.'T `' + let suffix1 = '` display contained' + execute prefix0. a:target. suffix0 + execute prefix1. a:target. suffix1 +endfunction "}}} + +function! s:add_target_syntax_OFF(target, type) " {{{ + if g:vimwiki_debug > 1 + echom '[vimwiki_debug] syntax target > '.a:target + endif + let prefix0 = 'syntax match VimwikiNoExistsLink `' + let suffix0 = '` display contains=@NoSpell,VimwikiLinkRest,'.a:type.'Char' + let prefix1 = 'syntax match VimwikiNoExistsLinkT `' + let suffix1 = '` display contained' + execute prefix0. a:target. suffix0 + execute prefix1. a:target. suffix1 +endfunction "}}} + +function! s:wrap_wikilink1_rx(target) "{{{ + return g:vimwiki_rxWikiLink1InvalidPrefix.a:target. + \ g:vimwiki_rxWikiLink1InvalidSuffix +endfunction "}}} + +function! s:existing_mkd_refs() "{{{ + call vimwiki#markdown_base#reset_mkd_refs() + return "\n".join(keys(vimwiki#markdown_base#get_reflinks()), "\n")."\n" +endfunction "}}} + +function! s:highlight_existing_links() "{{{ + " Wikilink1 + " Conditional highlighting that depends on the existence of a wiki file or + " directory is only available for *schemeless* wiki links + " Links are set up upon BufEnter (see plugin/...) + let safe_links = vimwiki#base#file_pattern(b:existing_wikifiles) + " Wikilink1 Dirs set up upon BufEnter (see plugin/...) + let safe_dirs = vimwiki#base#file_pattern(b:existing_wikidirs) + " Ref links are cached + let safe_reflinks = vimwiki#base#file_pattern(s:existing_mkd_refs()) + + + " match [URL][] + let target = vimwiki#base#apply_template(g:vimwiki_WikiLink1Template1, + \ safe_links, g:vimwiki_rxWikiLink1Descr, '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') + " match [DESCRIPTION][URL] + let target = vimwiki#base#apply_template(g:vimwiki_WikiLink1Template2, + \ safe_links, g:vimwiki_rxWikiLink1Descr, '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') + + " match [DIRURL][] + let target = vimwiki#base#apply_template(g:vimwiki_WikiLink1Template1, + \ safe_dirs, g:vimwiki_rxWikiLink1Descr, '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') + " match [DESCRIPTION][DIRURL] + let target = vimwiki#base#apply_template(g:vimwiki_WikiLink1Template2, + \ safe_dirs, g:vimwiki_rxWikiLink1Descr, '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') + + " match [MKDREF][] + let target = vimwiki#base#apply_template(g:vimwiki_WikiLink1Template1, + \ safe_reflinks, g:vimwiki_rxWikiLink1Descr, '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') + " match [DESCRIPTION][MKDREF] + let target = vimwiki#base#apply_template(g:vimwiki_WikiLink1Template2, + \ safe_reflinks, g:vimwiki_rxWikiLink1Descr, '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') +endfunction "}}} + + +" use max highlighting - could be quite slow if there are too many wikifiles +if VimwikiGet('maxhi') + " WikiLink + call s:add_target_syntax_OFF(g:vimwiki_rxWikiLink1, 'VimwikiWikiLink1') + + " Subsequently, links verified on vimwiki's path are highlighted as existing + let time01 = vimwiki#u#time(starttime) "XXX + call s:highlight_existing_links() + let time02 = vimwiki#u#time(starttime) "XXX +else + let time01 = vimwiki#u#time(starttime) "XXX + " Wikilink + call s:add_target_syntax_ON(g:vimwiki_rxWikiLink1, 'VimwikiWikiLink1') + let time02 = vimwiki#u#time(starttime) "XXX +endif + +" Weblink +call s:add_target_syntax_ON(g:vimwiki_rxWeblink1, 'VimwikiWeblink1') + +" WikiLink +" All remaining schemes are highlighted automatically +let rxSchemes = '\%('. + \ join(split(g:vimwiki_schemes, '\s*,\s*'), '\|').'\|'. + \ join(split(g:vimwiki_web_schemes1, '\s*,\s*'), '\|'). + \ '\):' + +" a) match [nonwiki-scheme-URL] +let target = vimwiki#base#apply_template(g:vimwiki_WikiLink1Template1, + \ rxSchemes.g:vimwiki_rxWikiLink1Url, g:vimwiki_rxWikiLink1Descr, '') +call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') +" b) match [DESCRIPTION][nonwiki-scheme-URL] +let target = vimwiki#base#apply_template(g:vimwiki_WikiLink1Template2, + \ rxSchemes.g:vimwiki_rxWikiLink1Url, g:vimwiki_rxWikiLink1Descr, '') +call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') +" }}} + + +" generic headers "{{{ + +" Header levels, 1-6 +for i in range(1,6) + execute 'syntax match VimwikiHeader'.i.' /'.g:vimwiki_rxH{i}.'/ contains=VimwikiTodo,VimwikiHeaderChar,VimwikiNoExistsLink,VimwikiCode,VimwikiLink,VimwikiWeblink1,VimwikiWikiLink1,@Spell' +endfor + +" }}} + +" concealed chars " {{{ +if exists("+conceallevel") + syntax conceal on +endif + +syntax spell toplevel + +if g:vimwiki_debug > 1 + echom 'WikiLink1 Prefix: '.g:vimwiki_rxWikiLink1Prefix1 + echom 'WikiLink1 Suffix: '.g:vimwiki_rxWikiLink1Suffix1 + echom 'Weblink1 Prefix: '.g:vimwiki_rxWeblink1Prefix1 + echom 'Weblink1 Suffix: '.g:vimwiki_rxWeblink1Suffix1 +endif + +" VimwikiWikiLink1Char is for syntax markers (and also URL when a description +" is present) and may be concealed +let options = ' contained transparent contains=NONE' +" conceal wikilink1 +execute 'syn match VimwikiWikiLink1Char /'.g:vimwiki_rxWikiLink1Prefix.'/'.options +execute 'syn match VimwikiWikiLink1Char /'.g:vimwiki_rxWikiLink1Suffix.'/'.options +execute 'syn match VimwikiWikiLink1Char /'.g:vimwiki_rxWikiLink1Prefix1.'/'.options +execute 'syn match VimwikiWikiLink1Char /'.g:vimwiki_rxWikiLink1Suffix1.'/'.options + +" conceal weblink1 +execute 'syn match VimwikiWeblink1Char "'.g:vimwiki_rxWeblink1Prefix1.'"'.options +execute 'syn match VimwikiWeblink1Char "'.g:vimwiki_rxWeblink1Suffix1.'"'.options + +if exists("+conceallevel") + syntax conceal off +endif +" }}} + +" non concealed chars " {{{ +" }}} + +" main syntax groups {{{ + +" Tables +syntax match VimwikiTableRow /^\s*|.\+|\s*$/ + \ transparent contains=VimwikiCellSeparator, + \ VimwikiLinkT, + \ VimwikiWeblink1T, + \ VimwikiWikiLink1T, + \ VimwikiNoExistsLinkT, + \ VimwikiEmoticons, + \ VimwikiTodo, + \ VimwikiBoldT, + \ VimwikiItalicT, + \ VimwikiBoldItalicT, + \ VimwikiItalicBoldT, + \ VimwikiDelTextT, + \ VimwikiSuperScriptT, + \ VimwikiSubScriptT, + \ VimwikiCodeT, + \ VimwikiEqInT, + \ @Spell + +" }}} + +" header groups highlighting "{{{ +"}}} + + +" syntax group highlighting "{{{ +hi def link VimwikiWeblink1 VimwikiLink +hi def link VimwikiWeblink1T VimwikiLink + +hi def link VimwikiWikiLink1 VimwikiLink +hi def link VimwikiWikiLink1T VimwikiLink +"}}} + + + +" EMBEDDED syntax setup "{{{ +"}}} +" diff --git a/syntax/vimwiki_media.vim b/syntax/vimwiki_media.vim new file mode 100644 index 0000000..c168eed --- /dev/null +++ b/syntax/vimwiki_media.vim @@ -0,0 +1,71 @@ +" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79 +" Vimwiki syntax file +" MediaWiki syntax +" Author: Maxim Kim +" Home: http://code.google.com/p/vimwiki/ + +" placeholder for math environments +let b:vimwiki_mathEnv = "" + +" text: $ equation_inline $ +let g:vimwiki_rxEqIn = '\$[^$`]\+\$' +let g:vimwiki_char_eqin = '\$' + +" text: '''strong''' +let g:vimwiki_rxBold = "'''[^']\\+'''" +let g:vimwiki_char_bold = "'''" + +" text: ''emphasis'' +let g:vimwiki_rxItalic = "''[^']\\+''" +let g:vimwiki_char_italic = "''" + +" text: '''''strong italic''''' +let g:vimwiki_rxBoldItalic = "'''''[^']\\+'''''" +let g:vimwiki_rxItalicBold = g:vimwiki_rxBoldItalic +let g:vimwiki_char_bolditalic = "'''''" +let g:vimwiki_char_italicbold = g:vimwiki_char_bolditalic + +" text: `code` +let g:vimwiki_rxCode = '`[^`]\+`' +let g:vimwiki_char_code = '`' + +" text: ~~deleted text~~ +let g:vimwiki_rxDelText = '\~\~[^~]\+\~\~' +let g:vimwiki_char_deltext = '\~\~' + +" text: ^superscript^ +let g:vimwiki_rxSuperScript = '\^[^^]\+\^' +let g:vimwiki_char_superscript = '^' + +" text: ,,subscript,, +let g:vimwiki_rxSubScript = ',,[^,]\+,,' +let g:vimwiki_char_subscript = ',,' + +" generic headers +let g:vimwiki_rxH = '=' +let g:vimwiki_symH = 1 + + + +"
, horizontal rule +let g:vimwiki_rxHR = '^-----*$' + +" Tables. Each line starts and ends with '|'; each cell is separated by '|' +let g:vimwiki_rxTableSep = '|' + +" Bulleted list items start with whitespace(s), then '*' +" highlight only bullets and digits. +let g:vimwiki_rxListBullet = '^\s*\*\+\s\%([^*]*$\)\@=' +let g:vimwiki_rxListNumber = '^\s*#\+\s' + +let g:vimwiki_rxListDefine = '^\%(;\|:\)\s' + +" Preformatted text +let g:vimwiki_rxPreStart = '
'
+let g:vimwiki_rxPreEnd = '<\/pre>'
+
+" Math block
+let g:vimwiki_rxMathStart = '{{\$'
+let g:vimwiki_rxMathEnd = '}}\$'
+
+let g:vimwiki_rxComment = '^\s*%%.*$'
-- 
cgit v1.2.3