Added
- Yank-ring dot-repeat — pressing
.after paste cycling (p+<C-p>/<C-n>) now repeats the final cycled text instead of the original paste. On cycling exit, the final cycled content is written to the original paste register. The fork'srepeatLastEditre-reads the register at replay time. Follows yanky.nvim'supdate_register_on_cyclesemantics. System clipboard registers ("+/"*) are excluded.- Plugin:
src/vim/yank-ring.ts(originalPasteRegistertracking,getPasteRegisterName(), register write incancel(),setVim())
- Plugin:
undefineExfork API — the codemirror-vim fork now exposesVim.undefineEx(name)to remove ex commands registered viadefineEx. Cleans both theexCommandsfunction map andcommandMap_prefix lookup. Returnstrueif the command existed,falseotherwise.- Fork:
~/Repos/codemirror-vim/src/vim.js(undefineExonvimApi)
- Fork:
- Exmap unregistration on vimrc soft-reload — removing an
exmapdefinition from the vimrc file now unregisters the old handler on save. Exmap names are tracked per vimrc load invimrcExmapNamesand cleaned viaundefineExbefore re-applying on soft-reload. Plugin-defined and fork built-in ex commands are unaffected.- Plugin:
src/main.ts(vimrcExmapNamesSet, cleanup insoftReloadVimrc),src/vimrc/loader.ts(exmapNamesinApplyResultandVimrcLoadResult),src/types/vim-api.d.ts(undefineExtype,setTexton registers,lastEditInputStateonVimState)
- Plugin:
Tests
- 3 fork tests in
~/Repos/codemirror-vim/test/vim_test.js:ex_undefineEx(define → undefine → verify removed),ex_undefineEx_nonexistent(returns false),ex_undefineEx_short_name(short name prefix cleaned) - 3 e2e tests in
test/specs/yank-ring.e2e.ts: dot-repeat after single cycle pastes cycled text, dot-repeat without cycling pastes original (regression), single cycle then dot-repeat pastes cycled text - 4 e2e tests in
test/specs/vimrc-exmap-reload.e2e.ts:vimrcExmapNamesfield exists,undefineExavailable on Vim API, returns false for nonexistent, defineEx + undefineEx round-trip with built-in survival
Documentation
CHANGELOG.mdKNOWN_LIMITATIONS.md: Removed:earlier/:laterand:signfrom N/A table (contradicted implemented features); clarified flash dot-repeat as working correctly; updated exmap soft-reload to reflect unregistration support; updated yank-ring dot-repeat as fixedREADME.md: Updated yank-ring feature description with dot-repeatAGENTS.md: Updated codemirror-vim fork description withundefineExAPI and test countdocs/features/quality-of-life.md: Updated yank-ring section with dot-repeat behaviordocs/configuration/vimrc.md: Updated soft-reload section — exmap removal now works
Full Changelog: 0.87.0...0.88.0