Added
- Mark gutter indicators — vim mark letters (
a–z,A–Z) appear in the gutter area next to marked lines, providing visual feedback on where marks are set. Multiple marks on the same line are shown together (e.g.,ab). The indicators use line decorations with CSS::afterpositioning — zero horizontal space consumed, no document shift. Updates on mark set/move/delete and on document edits. Toggle via Settings → Vim Motions → Vim features → Mark gutter indicators (default: on).- Plugin:
src/vim/mark-gutter.ts(new),src/main.ts,src/settings.ts,styles.css
- Plugin:
- Global mark persistence — marks
A–Zare persisted across files and plugin restarts. SettingmAstores the file path and cursor position; navigating to'Afrom any file opens the target and jumps to the saved position. Marks are saved via a 30-second polling interval with dirty-flag checking, plus immediate save on unload.- Plugin:
src/vim/mark-store.ts(new),src/main.ts,src/settings.ts(persistedMarksfield)
- Plugin:
- Enhanced marks picker —
:marksand<leader>fmnow show marks grouped by category: "Buffer marks" (a–z) with line preview, "Global marks" (A–Z) with file path. Selecting a global mark opens the target file and navigates to the saved position. Built on aMarkProviderabstraction for future extensibility (harpoon-style file marks).- Plugin:
src/picker/sources/mark-providers.ts(new:MarkProviderinterface,VimBufferMarkProvider,GlobalMarkProvider),src/picker/sources/marks.ts(rewritten),src/picker/types.ts(groupfield),src/picker/picker.ts(group header rendering)
- Plugin:
- Picker group headers —
PickerIteminterface extended with optionalgroupfield. When set, the picker renders non-selectable section headers when the group changes between consecutive items. Available to all picker sources.- Plugin:
src/picker/types.ts,src/picker/picker.ts,styles.css
- Plugin:
Fixed
:delmarksnot refreshing gutter — deleting marks via:delmarks adid not update the mark gutter indicators because the plugin's ex command handler didn't trigger a gutter refresh. Fixed by adding anonMarksChangedcallback tocreateDelmarksCommandthat schedules a gutter refresh.- Plugin:
src/workspace/commands.ts,src/main.ts
- Plugin:
- Yank highlight not working on first load — the yank highlight handler was not attached to the initially open editor on plugin startup, only activating after switching to a different pane.
reloadFeatures()now callsattachYankHighlight()(cleanup + re-attach) instead of only cleaning up, ensuring the handler is attached when vimrc/lua loading triggers the first feature reload. (#53)- Plugin:
src/main.ts(reloadFeaturescallsattachYankHighlight())
- Plugin:
Documentation
docs/features/marks.md: new feature page covering mark gutter indicators, global mark persistence, and grouped marks pickerdocs/features/index.md: added marks entry to Quality of life sectiondocs/configuration/settings.md: added Mark gutter indicators row to Vim features tabledocs/reference/keybindings.md: updated:marksdescription to reflect grouped pickerdocs/features/quality-of-life.md: added "Yank highlight" section with mode descriptions, configuration, CSS override tip, and fork-mode-only calloutdocs/features/index.md: added yank highlight to Quality of life bulletdocs/configuration/settings.md: added Yank highlight and Yank highlight duration rows to Vim features table; added CSS override tip calloutKNOWN_LIMITATIONS.md: updated "Yank highlighting" row from external plugin recommendation to built-in; added marks section
Full Changelog: 0.47.0...0.48.0