4.3 KiB
4.3 KiB
Changelog
Main branch
Breaking changes
- Highlight for guides (previously
OutlineConnectorthat covers both guides and fold markers) now split intoOutlineGuides(covering from left edge until start of symbol icon) andOutlineFoldMarker. - Config options
auto_goto -> auto_jump,keymaps.down/up_and_goto -> keymaps.down/up_and_jump. The old names still work as expected but may be removed in feature releases (after v1.0.0).
Features
- Config option for split command used in creating outline (
outline_window.split_command) - Added highlight group for fold marker
- A custom icon fetcher function can be used, which receives a kind as string and should return an icon as string. An empty string means no icon for this kind
- Lspkind is now supported as an icon source
- Outline open/toggle commands now support command modifiers to override the
config options
positionandsplit_command. Eg::leftabove Outline/:belowright OutlineOpen! - Highlight group and duration of the 'flash' highlight on goto/jump operations can now be customized (#27)
- A better config system for symbol filtering: deprecating
symbols.blacklistconfig. Note that the old option still works as expected but may be deprecated in feature releases. This newsymbols.filteroption supports both inclusive filtering and also exclusive filtering, per-filetype filtering is also supported. (#23) - Optionally put cursor vertically centered on the screen after a goto/jump
operation. Configurable via
outline_window.center_on_jump - By default, automatic following of cursor (and highlight hover) when outline
is not in focus will now trigger on each
CursorMovedevent, rather thanCursorHold. This is also configurable now usingoutline_items.auto_update_eventswith keyfollow. The keyitemscontrols the events that should trigger a re-request of symbols from the provider. - Config option for cursorline now supports 2 other string values,
focus_in_outlineandfocus_in_code. These make the cursorline only show up depending on cursor focus. The first option,focus_in_outlinemakes it so cursorline is enabled only when focus is in outline. This lessens the visual changes due to auto follow_cursor. - On fold all or unfold all operations, the cursor will now stay on the same node, rather than the same line in the outline.
- Optionally not automatically update cursor position in outline to reflect
cursor location in code. The auto-update is triggered by events from
outline_items.auto_update_events.follow, and disabling of follow-cursor can be done throughoutline_items.auto_follow_cursor. Regardless, manual follow-cursor can still be done using:FollowCursor[!]or lua APIfollow_cursor({ focus_outline = true/false }).
Fixes
- Don't auto-update cursor when focus is in outline (#7)
- Symbol hover is not opened on preview open by default now
- Incorrect guide highlights
- Follow cursor can now put the cursor on the parent node if the child is folded and invisible in outline
- Follow cursor puts the cursor in the first column, and if there is lineno, puts it at the end of the lineno
- Markdown headings produced from the built-in markdown provider will now
use the
Stringkind, like marksman
Performance
- Building of outline items (and details/lineno) parsed from symbol tree functions completely refactored, which reduced redundant code that could have O(N) time complexity, a significant difference for codebase with a lot of symbols.
- Follow cursor algorithm significantly improved
- Highlight hovered item and initial opening of outline has been rewritten and performance improved
Others
- A script is added to convert symbols-outline.nvim config to outline.nvim config. Note that all config values are evaluated, so if the old config uses some external source and assigned it to a config key, the value from the external source would be used directly rather than the identifier.
Older changes
Changes before fork detach can be found on #12 on github