taskwiki/after/syntax/vimwiki.vim
Tomas Janousek 9d7d90192b syntax: Highlight priority in TaskWikTask{Active,Completed,…} as well
The more straightforward `containedin=@TaskWikiTaskContains`
unfortunately doesn't work as it actually means
`containedin=VimwikiListTodo,VimwikiTag,VimwikiEmoticons,…` and that
isn't what we want.
2020-08-02 17:56:21 -04:00

74 lines
3.1 KiB
VimL

" Disable taskwiki if taskwiki_disable variable set
if exists("g:taskwiki_disable")
finish
endif
" Detect if conceal feature is available
let s:conceal = exists("+conceallevel") ? ' conceal': ''
syntax match TaskWikiTask /\s*\* \[.\]\s.*$/ contains=@TaskWikiTaskContains
syntax cluster TaskWikiTaskContains
\ contains=VimwikiListTodo,
\ VimwikiTag,
\ VimwikiEmoticons,
\ VimwikiTodo,
\ VimwikiBoldT,
\ VimwikiItalicT,
\ VimwikiBoldItalicT,
\ VimwikiItalicBoldT,
\ VimwikiDelTextT,
\ VimwikiSuperScriptT,
\ VimwikiSubScriptT,
\ VimwikiCodeT,
\ VimwikiEqInT,
\ VimwikiLink,
\ VimwikiNoExistsLink,
\ VimwikiNoExistsLinkT,
\ VimwikiWikiLink,
\ VimwikiWikiLinkT,
\ @Spell
" Conceal the UUID
execute 'syn match TaskWikiTaskUuid containedin=TaskWikiTask /\v#([A-Z]:)?[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/'.s:conceal
execute 'syn match TaskWikiTaskUuid containedin=TaskWikiTask /\v#([A-Z]:)?[0-9a-fA-F]{8}$/'.s:conceal
highlight link TaskWikiTaskUuid Comment
" Conceal header definitions
for s:i in range(1,6)
execute 'syn match TaskWikiHeaderDef containedin=VimwikiHeader'.s:i.' contained /|[^=]*/'.s:conceal
endfor
" Define active and deleted task regions
" Will be colored dynamically by Meta().source_tw_colors()
syntax match TaskWikiTaskActive containedin=TaskWikiTask contained contains=@TaskWikiTaskContains /\s*\*\s\[S\]\s[^#]*/
syntax match TaskWikiTaskCompleted containedin=TaskWikiTask contained contains=@TaskWikiTaskContains /\s*\*\s\[X\]\s[^#]*/
syntax match TaskWikiTaskDeleted containedin=TaskWikiTask contained contains=@TaskWikiTaskContains /\s*\*\s*\[D\]\s[^#]*/
syntax match TaskWikiTaskRecurring containedin=TaskWikiTask contained contains=@TaskWikiTaskContains /\s*\*\s\[R\]\s[^#]*/
syntax match TaskWikiTaskWaiting containedin=TaskWikiTask contained contains=@TaskWikiTaskContains /\s*\*\s\[W\]\s[^#]*/
syntax match TaskWikiTaskPriority contained /\( !\| !!\| !!!\)\( \)\@=/
syntax cluster TaskWikiTaskContains add=TaskWikiTaskPriority
" Set concealed parts as really concealed in normal mode, and with cursor over
" (unless disabled by user)
setlocal conceallevel=3
if !exists('g:taskwiki_disable_concealcursor')
setlocal concealcursor=nc
endif
" Configure custom FoldText function
" Altered version of the VimwikiFoldText
setlocal foldmethod=syntax
setlocal viewoptions-=options
function! TaskwikiFoldText()
let line = getline(v:foldstart)
let main_text = substitute(line, '^\s*', repeat(' ',indent(v:foldstart)), '')
let short_text = substitute(main_text, '|[^=]* =', '=', '')
let short_text = substitute(short_text, '@[^=]* =', '=', '')
let short_text = substitute(short_text, ' @[A-Za-z0-9]\+', '', '')
let fold_len = v:foldend - v:foldstart + 1
let len_text = ' ['.fold_len.'] '
return short_text.len_text.repeat(' ', 500)
endfunction
setlocal foldtext=TaskwikiFoldText()