From 8f8c2884a96aca7e1001124af4088260b21c4af4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Fr=C3=B3es=20Franco?= Date: Tue, 26 May 2026 22:01:55 -0300 Subject: [PATCH] feat(vim): conceal markup delimiters when conceallevel=2 Set conceallevel=2 and concealcursor=nc on .wiki buffers and add contained `conceal` matches for the bold/italic/code delimiters and wikilink brackets/targets. The static-fallback rendering now mirrors what the Neovim semantic-token path produced: *bold* shows as bold without the asterisks, [[target|desc]] shows just "desc", etc. The wikilink region uses an inline `contains=` (no line continuation) because some Vim builds (notably Homebrew Vim 9.2) raise E10 on the leading `\\ contains=...` form even though the surrounding region parses fine. Co-Authored-By: Claude Sonnet 4.6 --- ftplugin/vimwiki.vim | 4 +++- syntax/vimwiki.vim | 20 ++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/ftplugin/vimwiki.vim b/ftplugin/vimwiki.vim index 9dccc58..6652b22 100644 --- a/ftplugin/vimwiki.vim +++ b/ftplugin/vimwiki.vim @@ -18,8 +18,10 @@ setlocal comments=:%% setlocal formatoptions+=ron setlocal suffixesadd=.wiki setlocal iskeyword+=- +setlocal conceallevel=2 +setlocal concealcursor=nc -let b:undo_ftplugin = 'setlocal commentstring< comments< formatoptions< suffixesadd< iskeyword<' +let b:undo_ftplugin = 'setlocal commentstring< comments< formatoptions< suffixesadd< iskeyword< conceallevel< concealcursor<' if !has('nvim') " ===== Plain Vim path ===== diff --git a/syntax/vimwiki.vim b/syntax/vimwiki.vim index ce32881..4eb7d31 100644 --- a/syntax/vimwiki.vim +++ b/syntax/vimwiki.vim @@ -68,12 +68,24 @@ syntax region nuwikiPreformatted start=/^{{{/ end=/^}}}/ keepend syntax region nuwikiMathBlock start=/^{{\$/ end=/^}}\$/ keepend syntax match nuwikiPlaceholder /^%\(title\|nohtml\|template\|date\)\>.*$/ -syntax match nuwikiBold /\*[^*]\+\*/ -syntax match nuwikiItalic /\<_[^_]\+_\>/ -syntax match nuwikiCode /`[^`]\+`/ +syntax match nuwikiBold /\*[^*]\+\*/ contains=nuwikiBoldDelim +syntax match nuwikiBoldDelim /\*/ contained conceal + +syntax match nuwikiItalic /\<_[^_]\+_\>/ contains=nuwikiItalicDelim +syntax match nuwikiItalicDelim /_/ contained conceal + +syntax match nuwikiCode /`[^`]\+`/ contains=nuwikiCodeDelim +syntax match nuwikiCodeDelim /`/ contained conceal + syntax match nuwikiMathInline /\$[^$]\+\$/ syntax match nuwikiKeyword /\<\(TODO\|DONE\|STARTED\|FIXME\|FIXED\|XXX\)\>/ -syntax region nuwikiWikilink start=/\[\[/ end=/\]\]/ keepend + +" Wikilink conceal: hide [[ / ]], and for [[target|desc]] hide target|. +syntax region nuwikiWikilink start=/\[\[/ end=/\]\]/ keepend contains=nuwikiWikilinkBracket,nuwikiWikilinkTarget +syntax match nuwikiWikilinkBracket /\[\[/ contained conceal +syntax match nuwikiWikilinkBracket /\]\]/ contained conceal +syntax match nuwikiWikilinkTarget /[^|\]]*|/ contained conceal + syntax region nuwikiTransclusion start=/{{[^{]/ end=/}}/ keepend syntax match nuwikiUrl /\<\(https\?\|ftp\|mailto\|file\):\/\?\/\?\S\+/