Fixed
- Escape does not return to table-nav after Enter cell entry — when entering a cell via
Enterin table-nav mode (normal-mode cell entry), pressingEscapedid not return to table-nav mode. The cell editor's vim keydown observer consumed Escape before the Obsidian Scope handler could intercept it. Additionally, the cell editor's vim state hadmode: null(pre-initialization) which causedisVimIdle()to returnfalse. Fixed by installing a capture-phasekeydownlistener ondocumentduring cell-edit mode that intercepts Escape when vim is idle, and introducingisCellVimIdle()which treatsnull/undefinedmode as idle (equivalent to normal mode during cell editor initialization). (#136)- Plugin:
src/vim/table-nav-controller.ts(isCellVimIdle,installCellEscapeCapture,removeCellEscapeCapture,cellEscapeCleanupsession field)
- Plugin:
- Community plugin
replaceSelectionfails in visual-line mode — community plugins like Note Refactor that calleditor.replaceSelection()after async operations (file creation, link generation) failed to replace the selected text in visual-line mode. The existingwithExpandedSelectionwrapper expanded the CM6 selection synchronously and restored cursor-only in itsfinallyblock, but async command callbacks executedreplaceSelection()after the selection was already restored. Additionally,editor.replaceSelection()was not patched in theVisualLineSomethingSelectedPatchViewPlugin (onlysomethingSelected()andgetSelection()were). Fixed by patchingeditor.replaceSelection()to compute the linewise range from vim's selection state and dispatch a CM6 replacement transaction directly, with trailing newline handling for mid-document lines. The patch exits visual-line mode viaVim.handleKey(cm, '<Esc>')after replacement since the selection has been consumed. (#138)- Plugin:
src/vim/visual-line-command-fix.ts(replaceSelectionpatch inVisualLineSomethingSelectedPatch, cleanup indestroy())
- Plugin:
Tests
- 4 new tests in
test/specs/table-cell-vim-mode.e2e.ts(#136): Escape after Enter returns to nav mode, single Escape from insert mode does NOT exit to nav (regression guard), j after Enter cell edit navigates to next row, cursor height in cell normal mode guard - New helper
getCellVimMode()intest/specs/table-cell-vim-mode.e2e.ts - 5 new spike tests in
test/specs/spikes/spike-issue138-vline-async-replaceSelection.e2e.ts(#138): V-LINEgetSelection()baseline, syncreplaceSelectionviaexecuteCommandById, asyncreplaceSelectionvia fake command (Note Refactor pattern), direct asyncreplaceSelectionwithoutexecuteCommand, sync directreplaceSelectionwithout wrapper
Documentation
CHANGELOG.mdKNOWN_LIMITATIONS.md: marked Escape-from-cell-edit bug as fixed; updated V-LINE passthrough section withreplaceSelectionpatch details and updated trade-off/test coverage
Full Changelog: 0.120.1...0.121.0