lua | ||
plugin | ||
LICENSE | ||
README.md |
Navigator
GUI for Neovim (nightly) built-in LSP with a collection of most used LSP/treesitter functions. Easy code navigation.
Features:
- LSP easy setup. Support some of the most commonly used lsp client setup
- GUI with floating windows
- fzy search with Lua-JIT
- Better navigation for diagnostic errors, Navigate through files that contain errors/warnings
- Group references/implementation/incomming/outgoing based on file names.
- Nerdfont, emoji for LSP kind,
Why a new plugin
After installed a handful of lsp plugins, I still got ~500 loc for lsp and still increasing. Reason is that I need to tune the plugins to fit my requirements. The plugin help user setup lspconfig with only a few lines of codes. Seconde reason is that lots of plugins serve as an enhance version of quickfix, lots of improvement was made by lspsaga, from which, the plugin was inspired.
Similar projects / special mentions:
Install
You can remove your lspconfig setup and use this plugin. The plugin depends on guihua.lua, which provides GUI and fzy support.
Plug 'ray-x/guihua.lua', {'do': 'cd lua/fzy && make' }
Plug 'ray-x/navigator.lua'
Packer
use {'ray-x/navigator.lua', requires = {'ray-x/guihua.lua', run = 'cd lua/fzy && make'}}
Setup
lua require'navigator'.setup()
Usage
Please refer to lua/navigator/lspclient/mapping.lua on key mappings. Should be able to work out-of-box
Use or :q!
to kill the floating window, <up/down> to move and to open location or apply changes
Screenshots
Reference
Document Symbol
Diagnostic
Implementation
Fzy search in reference
Code actions
Code preview with highlight
Call hierarchy (incomming/outgoing)
LSP symbol nerdfont/emoji
Todo
- Early phase, bugs expected
- Async (some of the requests is slow on large codebase and might be good to use co-rountine)
- More clients. I use go, python, js/ts, java, c/cpp, lua most of the time. Do not test other languages (e.g rust, swift etc)