fix(parity): fifth-pass re-audit — VimwikiGoto nargs, autowriteall, table_auto_fmt
CI / cargo fmt --check (push) Successful in 26s
CI / cargo clippy (push) Successful in 37s
CI / cargo test (push) Successful in 40s
CI / editor keymaps (push) Successful in 1m35s

Closes the actionable fifth-pass findings (gap doc updated):

- VimwikiGoto / NuwikiGoto: -nargs=1 -> -nargs=* in all four defs. Was a
  real bug — `:VimwikiGoto` raised E471, `:VimwikiGoto My Page` raised E488,
  and the handler's empty-arg prompt fallback was unreachable. Both clients
  already prompt on empty, so -nargs=* (keeping -complete=pages) restores
  upstream behavior.

- autowriteall (upstream default ON): while a wiki buffer is current, mirror
  Vim's global 'autowriteall' (auto-save on page switch / :make), restoring
  the prior value on leave. Neovim via ftplugin.lua setup_autowriteall
  (BufEnter/BufLeave) gated by the `autowriteall` setup option; Vim via the
  NuwikiAutoWriteAll augroup gated by g:nuwiki_autowriteall.

- table_auto_fmt (upstream default ON): re-align the table under the cursor
  on InsertLeave. Both clients, gated by `table_auto_fmt` / g:nuwiki_table_auto_fmt,
  guarded on the cursor line containing `|` before the async table_align.

Also logged (no code): VimwikiRenameFile missing -nargs=? (subsumed by the
LSP-rename divergence), table_reduce_last_col, user_htmls, hl_headers/
hl_cb_checked, and a commentstring value-mismatch note. Mappings audit clean.

The Neovim harness disables table_auto_fmt in setup (its async re-align would
perturb the deterministic table-nav keystroke cases); its wiring is verified
on a throwaway scratch buffer instead. Docs (README + doc/nuwiki.txt) updated.
Tests: cmd.VimwikiGoto_accepts_multiword, config.autowriteall_applied,
config.table_auto_fmt_autocmd. Neovim 293, Vim 285/18/21 pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-03 00:59:33 +00:00
parent c161f9d21a
commit 3865b8bf0e
9 changed files with 239 additions and 7 deletions
+26
View File
@@ -692,6 +692,32 @@ call s:record(
\ 'cmd.search_and_tablealign_nargs',
\ 'err=' . s:attr_err)
" ===== :VimwikiGoto -nargs=* =====
" Was -nargs=1, so a page name with a space raised E488 (and the empty-arg
" prompt fallback was unreachable). Now -nargs=*: a multi-word arg must parse.
" The goto is an LSP roundtrip (no server here); swallow non-attribute errors.
let s:goto_err = ''
try
silent! VimwikiGoto My Page
catch /E471\|E488/
let s:goto_err = v:exception
catch
" no-LSP / not-found errors are expected and fine here.
endtry
call s:record(
\ s:goto_err ==# '' ? 1 : 0,
\ 'cmd.VimwikiGoto_accepts_multiword',
\ 'err=' . s:goto_err)
" ===== autowriteall / table_auto_fmt (Vim path) =====
" autowriteall (default on) sets Vim's global &autowriteall on the wiki buffer.
call s:record(&autowriteall ? 1 : 0, 'config.autowriteall_applied',
\ '&autowriteall=' . &autowriteall)
" table_auto_fmt (default on) registers the NuwikiTableAutoFmt InsertLeave group.
call s:record(exists('#NuwikiTableAutoFmt#InsertLeave') ? 1 : 0,
\ 'config.table_auto_fmt_autocmd',
\ exists('#NuwikiTableAutoFmt#InsertLeave') ? '' : 'no InsertLeave autocmd')
" ===== :VimwikiRemoveDone -bang -range =====
" Upstream is `-range`; nuwiki had `-bang` only, so `:'<,'>VimwikiRemoveDone`
" raised E481. Now `-bang -range`: a ranged invocation must parse (no E481),