Closes#37
Almost completely refactored the UI parts outline.nvim to use a Sidebar
object that implements an outline window. In init.lua, we can then store
a table of the outline for each tabpage ID.
When tabs are closed the outline is closed and sidebar reset
responsibly.
This simplifies `init.lua` quite a lot, making it the highest level
control center for the outline elements.
All lua APIs and commands should work as before.
- Closes#3
- Ref: simrat39/symbols-outline.nvim#190
Norg contains indents and different types of verbatim tags, I was rather
lazy to read the spec properly and parse norg using regex line-by-line
like markdown, so used treesitter instead. The only requirement is the
`norg` parser for treesitter to be installed. Tested on nvim 0.7.2.
This should lead the way for supporting vimdoc files in a similar
manner.
Documentation for how external providers could look like as of now has
been added.
In the future we could let the provider determine what to do for each
keymap, such as `goto_location` and `toggle_preview`. This would allow
the zk extension[1] to work properly without having to override existing
functions (bad practice).
[1]: https://github.com/mickael-menu/zk-nvim/discussions/134
- preview window can adapt based on position of outline window, and not
based on config value of `position` left/right
- it can also properly vertically center-align, even when there are
horizontal splits below the outline
- fixed a few bugs associated with previous rewrite commits in init.lua
config:
- Added min_height for preview window