" development/tests/test-vimwiki-compat-vim.vim — upstream-vimwiki config " drop-in compatibility for the Vim client. " " Sourced by test-vimwiki-compat-vim.sh under headless Vim. Sets an upstream " `g:vimwiki_list` + `g:vimwiki_*` config and asserts nuwiki#lsp#settings() " translates it into the server's schema. Writes PASS/FAIL to " $NUWIKI_VWC_OUT; the wrapper fails on any FAIL. let s:out = [] function! s:check(desc, cond) abort call add(s:out, (a:cond ? 'PASS ' : 'FAIL ') . a:desc) endfunction " ----- upstream vimwiki config (no nuwiki-native vars set) ----- let g:vimwiki_toc_header_level = 2 let g:vimwiki_html_header_numbering = 2 let g:vimwiki_html_header_numbering_sym = ' -' let s:personal = {} let s:personal.path = '~/.vimwiki/personal_wiki' let s:personal.path_html = '~/public_html/personal_wiki' let s:personal.template_default = 'default' let s:personal.template_ext = '.tpl' let s:personal.auto_export = 1 let s:ifood = {} let s:ifood.path = '~/.vimwiki/ifood_wiki' let g:vimwiki_list = [s:personal, s:ifood] let s:cfg = nuwiki#lsp#settings() call s:check('has wikis list', has_key(s:cfg, 'wikis')) call s:check('two wikis', has_key(s:cfg, 'wikis') && len(s:cfg.wikis) == 2) let s:w0 = get(s:cfg, 'wikis', [{}])[0] let s:w1 = get(s:cfg, 'wikis', [{},{}])[1] call s:check('w0 path->root', get(s:w0, 'root', '') ==# '~/.vimwiki/personal_wiki') call s:check('w0 path_html->html_path', get(s:w0, 'html_path', '') ==# '~/public_html/personal_wiki') call s:check('w0 template_default', get(s:w0, 'template_default', '') ==# 'default') call s:check('w0 auto_export', get(s:w0, 'auto_export', 0) == 1) call s:check('w0 toc_header_level=2', get(s:w0, 'toc_header_level', 0) == 2) call s:check('w0 html_numbering=2', get(s:w0, 'html_header_numbering', 0) == 2) call s:check('w0 numbering_sym', get(s:w0, 'html_header_numbering_sym', '') ==# ' -') call s:check('w1 root', get(s:w1, 'root', '') ==# '~/.vimwiki/ifood_wiki') call s:check('w1 globals applied', get(s:w1, 'toc_header_level', 0) == 2) " The buffer-side commands (e.g. ww) must resolve the SAME wikis from " g:vimwiki_list — not just the LSP payload. Regression guard for "ww " opens an empty ~/vimwiki". let s:wl = nuwiki#commands#wiki_list() call s:check('wiki_list sees vimwiki config', len(s:wl) == 2) call s:check('wiki_list w0 root', len(s:wl) >= 1 && s:wl[0].root ==# expand('~/.vimwiki/personal_wiki')) call s:check('wiki_list w1 root', len(s:wl) >= 2 && s:wl[1].root ==# expand('~/.vimwiki/ifood_wiki')) " ----- nuwiki-native config wins over vimwiki ----- let g:nuwiki_wikis = [{'root': '~/native', 'name': 'native'}] let s:cfg2 = nuwiki#lsp#settings() call s:check('native g:nuwiki_wikis wins', \ len(get(s:cfg2, 'wikis', [])) == 1 \ && get(s:cfg2.wikis[0], 'root', '') ==# '~/native') unlet g:nuwiki_wikis " ----- nuwiki-native scalar overrides the vimwiki global ----- let g:vimwiki_list = [] let g:nuwiki_toc_header_level = 4 let s:cfg3 = nuwiki#lsp#settings() " No wikis list now (vimwiki_list empty) → scalar folded into top-level. call s:check('native scalar override', get(s:cfg3, 'toc_header_level', 0) == 4) unlet g:nuwiki_toc_header_level " ----- global shorthand on native g:nuwiki_wikis (vimwiki-style) ----- " A global default applies to every wiki; a per-wiki value overrides it. let g:nuwiki_toc_header_level = 2 let g:nuwiki_html_header_numbering = 2 let g:nuwiki_wikis = [ \ {'root': '~/w1', 'name': 'One'}, \ {'root': '~/w2', 'name': 'Two', 'toc_header_level': 3}, \ ] let s:cfg4 = nuwiki#lsp#settings() let s:g0 = s:cfg4.wikis[0] let s:g1 = s:cfg4.wikis[1] call s:check('global folds into wiki 0', get(s:g0, 'toc_header_level', 0) == 2) call s:check('global numbering folds', get(s:g0, 'html_header_numbering', 0) == 2) call s:check('per-wiki override wins', get(s:g1, 'toc_header_level', 0) == 3) call s:check('global still folds elsewhere', get(s:g1, 'html_header_numbering', 0) == 2) " The user's original dict must not be mutated by the fold. call s:check('no mutation of g:nuwiki_wikis', !has_key(g:nuwiki_wikis[0], 'toc_header_level')) call writefile(s:out, $NUWIKI_VWC_OUT)