Fixed
- Absolute line number highlight not updating on cursor movement — when only absolute line numbers were enabled (
set numberwithoutset relativenumber), thevim-motions-line-num-currenthighlight (bold current line number) did not follow the cursor. ThelineMarkerChangecallback in both the standalone line number gutter and the unifiedstatuscolumngutter only checkedupdate.docChangedin absolute mode, ignoringupdate.selectionSet(cursor movement). Relative and hybrid modes were unaffected because they already includedupdate.selectionSet. The highlight only updated incidentally when entering special content (MathJax, images) that triggereddocChangedorviewportChanged. (#68)- Plugin:
src/vim/line-number-gutter.ts(lineMarkerChangeabsolute branch),src/vim/statuscolumn.ts(lineMarkerChange!hasRelativebranch)
- Plugin:
- Typing
|moves cursor to the left of|— typing|anywhere in insert mode triggered the table auto-format inputHandler, which intercepted the keystroke and repositioned the cursor even on non-table lines (any line matching/^\s*\|/). The mid-edit interception caused cursor jumps, making it impossible to type|normally in an empty document or at the start of a line. (#66) - Tables do not handle escaped
|characters correctly — in raw/cursor-aware table modes, escaped pipes (\|) inside cells were treated as cell boundaries during mid-edit auto-formatting, causing the cursor to jump and live preview to render extra cells. The auto-format inputHandler ranrealignTableLines()after every|keystroke, which repositioned the cursor based on the realigned table structure — even when the|was escaped. Wikilinks ([[page|alias]]) inside raw table cells also triggered incorrect cell boundary detection. (#67)- Root cause for both:
table-auto-format.tsintercepted every|keystroke in insert mode and ran column realignment mid-edit. - Fix: Replaced mid-edit
|interception with format-on-exit — tables are only realigned when the cursor leaves the table range. A CM6ViewPlugintracks cursor entry/exit from table ranges and dispatchesrealignTableLines()viaqueueMicrotaskwhen the cursor exits a dirty (edited) table. UsesAnnotation.define<boolean>()as a re-entrancy guard. The||→ separator row auto-generation is preserved as a standalone inputHandler. - Plugin:
src/vim/table-format-on-exit.ts(new: format-on-exit ViewPlugin + separator handler),src/vim/table-utils.ts(addedrealignTableLines(),parseAlignments(),buildSepCell(),findTableBounds(), canonicalAlignmenttype),src/vim/table-auto-format.ts(deleted),src/vim/table-cursor-fix.ts(deleted),src/vim/table-operations.ts(refactored to use sharedrealignTableLines()),src/motions/tables.ts(refactored to use sharedrealignTableLines(), removed 5 duplicate helpers),src/vim/table-render-widget.ts(uses canonicalAlignmenttype),src/vim/table-nav-controller.ts(addedtableRealign()indoRefreshAfterOp()for embedded cell edit alignment),src/vim/table-cell-editor.ts(removedcreateTableAutoFormatExtensiondependency),src/motions/register.ts(removedtableAwareMoveUpoverride onk),src/main.ts(replaced auto-format/cursor-fix registration with format-on-exit)
- Root cause for both:
Changed
- Neovim-style modal styling for
GlobalExCommandModalandVimInfoModal— the ex command modal (:in non-editor views) and the info modal (:marks,:buffers,:registers, Oilg?) now use Neovim-inspired styling: transparent container, accent border (--color-accent), floating title label positioned on the top border, monospace font, and hidden Obsidian chrome (close button, modal header).GlobalExCommandModaluses a prompt-modal pattern with three styled sections (input, results, instructions) and two-column suggestion rows showing:command+ description. All 40+ ex commands now havedescriptionfields.VimInfoModaluses an info-modal pattern with an accent-bordered inner wrapper. Both patterns use--modal-background,--font-monospace, and--color-accentCSS variables for full theme compatibility.- Plugin:
src/ui/global-ex-command.ts(descriptionfield onGlobalExEntryandExSuggestion, prompt-modal container styling, two-columnrenderSuggestion),src/ui/vim-info-modal.ts(info-modal container styling, floating title, inner wrapper),styles.css(new prompt-modal and info-modal CSS sections)
- Plugin:
- Neovim-style modal styling extended to remaining modals —
OutlineModal(:outline/gO),SearchResultsModal(:vimgrep),ContextActionsModal(gra), andOilConfirmModal(Oil destructive commit) now use the same Neovim-inspired styling asGlobalExCommandModalandVimInfoModal.OutlineModalshows heading text + line number,SearchResultsModalshows filename + line preview,ContextActionsModalshows command name + command ID.OilConfirmModaluses the info-modal pattern with accent-bordered buttons. Removed 3 unused CSS classes (vim-motions-search-file,vim-motions-search-preview,vim-motions-outline-item).- Plugin:
src/ui/outline-modal.ts,src/workspace/vault-search.ts,src/ui/context-actions.ts,src/oil/manager.ts,styles.css
- Plugin:
Documentation
KNOWN_LIMITATIONS.md: Absolute line number highlight not updating on cursor movement → FixedKNOWN_LIMITATIONS.md: Table auto-formatting → updated to describe format-on-exit behavior; typing|cursor jump (#66) → Fixed; escaped\|handling (#67) → Fixeddocs/features/tables.md: Auto-formatting section rewritten to describe format-on-exit behavior
Full Changelog: 0.58.0...0.59.0