diff --git a/doc/outline.txt b/doc/outline.txt index 53e9d88..d58f6b2 100644 --- a/doc/outline.txt +++ b/doc/outline.txt @@ -262,6 +262,9 @@ Show defaults ~ winhl = 'NormalFloat:', -- Pseudo-transparency of the preview window, see ':h winblend' winblend = 0 + -- Experimental feature that let's you edit the source content live + -- in the preview window. Like VS Code's "peek editor". + live = false }, -- These keymaps can be a string or a table for multiple keys. @@ -936,6 +939,28 @@ Disable icons for specific kinds, and for others use lspkind: +LIVE, EDITABLE PREVIEWS ~ + +Press `K` to open the preview, press `K` again to focus on the preview window +to make any quick edits, similar to VS Code’s reference window "peek editor". + +Then use `:q` to close the window, and continue browsing the outline. + +>lua + preview_window = { + live = true, + } +< + +Note that this feature is experimental and may be unstable. + + +https://github.com/hedyhli/outline.nvim/assets/50042066/183fc5f9-b369-41e2-a831-a4185704d76d + +Auto-preview with the feature is also supported, set `auto_preview = true` and +press `K` to focus on the auto-opened preview window. `:q` to quit the window. + + LIMITATIONS *outline-limitations* @@ -949,24 +974,80 @@ instead, there would be highlighting issues (say the calculated starting line was within a markdown code block, so what was previously not supposed to be code is now highlighted as code). +If this poses a problem for you, you should try out the |outline-live-preview| +feature, uses the code buffer directly for displaying the preview. + MANY OUTLINES ~ Outline.nvim does not support multiple outline windows in the same tabpage as of now However, this feature is planned , and you can use a single -outline that auto-updates on buffer switches. Per-tabpage outline is supported. +outline that auto-updates on buffer switches. + +That said, per-tabpage outline is supported. RELATED PLUGINS *outline-related-plugins* -- Aerial.nvim -- nvim-navic -- nvim-navbuddy -- dropdown.nvim -- treesitter (inspect/edit) -- lspsaga -- navigator.lua +- **Aerial.nvim** + The most obvious plugin alternative to Outline.nvim would be Aerial. It + provides an outline window with a lot of features that outline.nvim does not + have (but might add in the future). That said, outline.nvim also has features + that Aerial does not support. I do not find it productive to be listing out the + exact details of which, as a table here, since both plugins are in active + development and the table would get out of date quickly; Instead, I have listed + a few example use-cases where you may want to use Aerial, and others + Outline.nvim. + Aerial does a great job at supercharging vim’s built-in outline (`gO`). It + supports treesitter and vimdoc which Outline.nvim does not provide by default. + (Note that Aerial also supports Norg through treesitter like Outline.nvim, but + as of writing it does not support JSX like Outline.nvim does.) + - If you wish to prioritize treesitter as the provider ("backend" in Aerial’s + terms) for your symbols, you should use Aerial. This lets your have symbols + for languages that you might not want to set up an LSP for, which is quite + useful. Treesitter support is a planned feature in Outline.nvim but might + not arrive very soon. + - Aerial.nvim supports only Neovim 0.8 and above for the bleeding-edge + features, as far as I know. You should use Outline.nvim (or the + alternatives below) if you use Neovim 0.7 and wish to have equal support. + - At the moment, integrations such as Telescope and statuslines in Outline.nvim + has not been very well implemented yet, though they are planned features. If you + wish to use this, you should use Aerial. + - Outline.nvim supports both inclusive and exclusive symbol filtering. + In addition to these, Aerial also supports a `AerialNav` window which gives you + a miller column view of symbol hierarchy similar to nvim-navbuddy + . This feature might never be + supported in Outline.nvim because I personally feel that it is out of scope of + a "outline window" plugin, and to keep the codebase simple. If you don’t want + to install a second plugin for this feature, you should use Aerial. +- **nvim-navic** + nvim-navic gives you fully customizable breadcrumb section for you + winbar/statusline. However, as far as I am aware it only supports LSP. To have + other providers built-in you can try Aerial, or dropbar.nvim + . +- **nvim-navbuddy** + Miller columns popup for LSP navigation. Again as far as I know only LSP is + supported. +- **dropbar.nvim** + Clickable breadcrumbs section with support for many sources in addition to LSP. + However, it requires Neovim nightly as of writing. +- **lspsaga** + I’ve heard that this plugin gives you many features previously described all + in one plugin. However I have not used this myself so I cannot comment on it + more, other than it might only support LSP. +- **glance.nvim** + Extremely interesting plugin that gives you a floating window for navigation + and quick-edits of locations provided by LSP. However it solves a different + problem to Outline.nvim: navigating references and definitions. +- **navigator.lua** + Unfortunately I have not used this myself, but it looks pretty good. It might + only support LSP. +- **Treesitter (inspect/edit)** + The built-in treesitter module has a `:InspectTree` feature that can follow + your cursor around and let you jump to locations by navigating the tree. + Compared to Outline.nvim it may not be as customizable, but it uses treesitter + and can highlight entire ranges of symbols. Generated by panvimdoc