Added
- Per-view cursor suppression fork API — added
setCursorSuppressedForView(view, suppressed),clearCursorSuppressedForView(view), andisCursorSuppressedForView(view)to the codemirror-vim fork. Per-view overrides take precedence over the globalsetCursorSuppressedstate, allowing the plugin to selectively restore the native cursor in specific contexts (table cell editors, textarea overlays) or force suppression (table navigation) without affecting other editors. Overrides are automatically cleaned up when the editor'sBlockCursorPluginis destroyed.- Fork:
~/Repos/codemirror-vim/src/block-cursor.ts(per-view state map, API implementation, cleanup indestroy)
- Fork:
- Animated cursor vimrc/Lua configuration — all 8 animated cursor settings are now configurable via vimrc (
set smoothcursor,set smoothcursorsmoothness=0.3, etc.) and Lua (vim.opt.smoothcursor = true, etc.). Master togglesmoothcursorenables/disables the feature withreloadFeatures(). Sub-options (smoothcursorglide,smoothcursorsmoothness,smoothcursorsmear,smoothcursorstiffness,smoothcursortrailstiffness,smoothcursordamping,smoothcursormaxlength) hot-reload without restart. All useSideEffectOptpattern syncing bothsettings[key]and module-level config. Short aliases:sc,scg,scs,scm,scst,scts,scd,scml. (#78)- Plugin:
src/vimrc/loader.ts(16SideEffectOptentries),src/settings.ts(animatedCursoradded toRELOAD_KEYS)
- Plugin:
- Animated cursor in oil explorer — animated cursor now renders in the oil file explorer. Single shared canvas architecture: one canvas on
.app-containerowned byAnimatedCursorManager, shared by all controllers. Reduces memory from O(N × viewport) to O(1 × viewport). Each controller clips drawing to its own editor bounds viactx.clip().MAX_CONTROLLERSraised from 8 to 16 with warning log on capacity. Canvas lifecycle managed by the manager (created on first register, removed when last controller deregisters). Null-check oncanvas.getContext('2d')for browser canvas limits. Table cell editors and textarea vim overlays fall back to the native cursor. (#78)- Plugin:
src/vim/animated-cursor/manager.ts(shared canvas ownership, sizing, lifecycle),src/vim/animated-cursor/controller.ts(removed per-controller canvas, draws on shared context),src/oil/oil-view.ts(injectscreateAnimatedCursorExtension()when enabled)
- Plugin:
Fixed
- Fold gutter click does not unfold — clicking a fold marker (▾) in the fold column or statuscolumn gutter folded the region correctly but clicking again to unfold had no effect. The
unfoldEffectwas dispatched with{ from: line.from, to: line.from }(zero-width range) instead of the actual fold range, so CodeMirror found no matching fold decoration to remove. Fixed by capturing the fold's end position fromfoldedRanges().between()and passing the full{ from, to }range tounfoldEffect. (#80)- Plugin:
src/vim/fold-column.ts(click handler),src/vim/statuscolumn.ts(handleFoldClick)
- Plugin:
Documentation
CHANGELOG.mdKNOWN_LIMITATIONS.md: Added fold gutter unfold fix to folding sectionREADME.md: Added vimrc/Lua configuration to animated cursor feature descriptionCONTRIBUTING.md: Updatedmanager.tsandconfig.tsdescriptions for Phase 3 architectureAGENTS.md: Updated codemirror-vim fork description with per-view cursor suppression APIdocs/features/animated-cursor.md: Added vimrc/Lua configuration section and oil explorer support sectiondocs/configuration/vimrc.md: Addedsmoothcursor,smoothcursorsmoothness,smoothcursorsmearto boolean options; addedsmoothcursorsmoothness,smoothcursorstiffness,smoothcursortrailstiffness,smoothcursordamping,smoothcursormaxlengthto number optionsdocs/configuration/lua-config.md: Added all 8smoothcursor*entries to vim.opt options table
Full Changelog: 0.75.1...0.76.0