diff options
Diffstat (limited to 'vim/.vim/plugged/vimwiki/syntax/vimwiki_markdown_custom.vim')
| -rw-r--r-- | vim/.vim/plugged/vimwiki/syntax/vimwiki_markdown_custom.vim | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/vim/.vim/plugged/vimwiki/syntax/vimwiki_markdown_custom.vim b/vim/.vim/plugged/vimwiki/syntax/vimwiki_markdown_custom.vim new file mode 100644 index 0000000..46f3ce1 --- /dev/null +++ b/vim/.vim/plugged/vimwiki/syntax/vimwiki_markdown_custom.vim @@ -0,0 +1,194 @@ + + + + + + +function! s:add_target_syntax_ON(target, type) + 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) + 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 vimwiki#vars#get_syntaxlocal('rxWikiLink1InvalidPrefix') . a:target. + \ vimwiki#vars#get_syntaxlocal('rxWikiLink1InvalidSuffix') +endfunction + + +function! s:existing_mkd_refs() + return keys(vimwiki#markdown_base#scan_reflinks()) +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(vimwiki#vars#get_bufferlocal('existing_wikifiles')) . + \ '\%(#[^|]*\)\?\|#[^|]*\)' + " Wikilink1 Dirs set up upon BufEnter (see plugin/...) + let safe_dirs = vimwiki#base#file_pattern(vimwiki#vars#get_bufferlocal('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( + \ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template1')), + \ safe_links, vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') + " match [DESCRIPTION][URL] + let target = vimwiki#base#apply_template( + \ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template2')), + \ safe_links, vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') + + " match [DIRURL][] + let target = vimwiki#base#apply_template( + \ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template1')), + \ safe_dirs, vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') + " match [DESCRIPTION][DIRURL] + let target = vimwiki#base#apply_template( + \ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template2')), + \ safe_dirs, vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') + + " match [MKDREF][] + let target = vimwiki#base#apply_template( + \ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template1')), + \ safe_reflinks, vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '') + call s:add_target_syntax_ON(s:wrap_wikilink1_rx(target), 'VimwikiWikiLink1') + " match [DESCRIPTION][MKDREF] + let target = vimwiki#base#apply_template( + \ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template2')), + \ safe_reflinks, vimwiki#vars#get_syntaxlocal('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 vimwiki#vars#get_wikilocal('maxhi') + " WikiLink + call s:add_target_syntax_OFF(vimwiki#vars#get_syntaxlocal('rxWikiLink1'), 'VimwikiWikiLink1') + + " Subsequently, links verified on vimwiki's path are highlighted as existing + call s:highlight_existing_links() +else + " Wikilink + call s:add_target_syntax_ON(vimwiki#vars#get_syntaxlocal('rxWikiLink1'), 'VimwikiWikiLink1') +endif + + +" Weblink +call s:add_target_syntax_ON(vimwiki#vars#get_syntaxlocal('rxWeblink1'), 'VimwikiWeblink1') + + +" WikiLink +" All remaining schemes are highlighted automatically +let s:rxSchemes = '\%('. + \ vimwiki#vars#get_global('schemes') . '\|'. + \ vimwiki#vars#get_global('web_schemes1'). + \ '\):' + +" a) match [nonwiki-scheme-URL] +let s:target = vimwiki#base#apply_template( + \ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template1')), + \ s:rxSchemes . vimwiki#vars#get_syntaxlocal('rxWikiLink1Url'), + \ vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '') +call s:add_target_syntax_ON(s:wrap_wikilink1_rx(s:target), 'VimwikiWikiLink1') +" b) match [DESCRIPTION][nonwiki-scheme-URL] +let s:target = vimwiki#base#apply_template( + \ vimwiki#u#escape(vimwiki#vars#get_syntaxlocal('WikiLink1Template2')), + \ s:rxSchemes . vimwiki#vars#get_syntaxlocal('rxWikiLink1Url'), + \ vimwiki#vars#get_syntaxlocal('rxWikiLink1Descr'), '') +call s:add_target_syntax_ON(s:wrap_wikilink1_rx(s:target), 'VimwikiWikiLink1') + + + +" Header levels, 1-6 +for s:i in range(1,6) + execute 'syntax match VimwikiHeader'.s:i.' /'.vimwiki#vars#get_syntaxlocal('rxH'.s:i). + \ '/ contains=VimwikiTodo,VimwikiHeaderChar,VimwikiNoExistsLink,VimwikiCode,'. + \ 'VimwikiLink,VimwikiWeblink1,VimwikiWikiLink1,@Spell' +endfor + + + +" concealed chars +if exists("+conceallevel") + syntax conceal on +endif + +syntax spell toplevel + +" VimwikiWikiLink1Char is for syntax markers (and also URL when a description +" is present) and may be concealed +let s:options = ' contained transparent contains=NONE' +" conceal wikilink1 +execute 'syn match VimwikiWikiLink1Char /'. + \ vimwiki#vars#get_syntaxlocal('rx_wikilink_md_prefix').'/'.s:options +execute 'syn match VimwikiWikiLink1Char /'. + \ vimwiki#vars#get_syntaxlocal('rx_wikilink_md_suffix').'/'.s:options +execute 'syn match VimwikiWikiLink1Char /'. + \ vimwiki#vars#get_syntaxlocal('rxWikiLink1Prefix1').'/'.s:options +execute 'syn match VimwikiWikiLink1Char /'. + \ vimwiki#vars#get_syntaxlocal('rxWikiLink1Suffix1').'/'.s:options + +" conceal weblink1 +execute 'syn match VimwikiWeblink1Char "'. + \ vimwiki#vars#get_syntaxlocal('rxWeblink1Prefix1').'"'.s:options +execute 'syn match VimwikiWeblink1Char "'. + \ vimwiki#vars#get_syntaxlocal('rxWeblink1Suffix1').'"'.s:options + +if exists("+conceallevel") + syntax conceal off +endif + + + +" Tables +syntax match VimwikiTableRow /^\s*|.\+|\s*$/ + \ transparent contains=VimwikiCellSeparator, + \ VimwikiLinkT, + \ VimwikiWeblink1T, + \ VimwikiWikiLink1T, + \ VimwikiNoExistsLinkT, + \ VimwikiTodo, + \ VimwikiBoldT, + \ VimwikiItalicT, + \ VimwikiBoldItalicT, + \ VimwikiItalicBoldT, + \ VimwikiDelTextT, + \ VimwikiSuperScriptT, + \ VimwikiSubScriptT, + \ VimwikiCodeT, + \ VimwikiEqInT, + \ @Spell + + + +" syntax group highlighting +hi def link VimwikiWeblink1 VimwikiLink +hi def link VimwikiWeblink1T VimwikiLink + +hi def link VimwikiWikiLink1 VimwikiLink +hi def link VimwikiWikiLink1T VimwikiLink + |
