You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
navigator.lua/README.md

111 lines
3.6 KiB
Markdown

3 years ago
# Navigator
Easy code navigation through LSP symbols and 🌲Treesitter symbols.
3 years ago
# Features:
- LSP easy setup. Support some of the most commonly used lsp client setup
3 years ago
- GUI with floating windows
- fzy search with Lua-JIT
3 years ago
- 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 and Treesitter kind
3 years ago
# 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
3 years ago
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](https://github.com/glepnir/lspsaga.nvim), from which, the plugin was inspired.
It also the first plugin, IMO, that allows you to search in all treesitter symbols in the workspace.
3 years ago
# Similar projects / special mentions:
- [nvim-lsputils](https://github.com/RishabhRD/nvim-lsputils)
- [nvim-fzy](https://github.com/mfussenegger/nvim-fzy.git)
- [fuzzy](https://github.com/amirrezaask/fuzzy.nvim)
- [lspsaga](https://github.com/glepnir/lspsaga.nvim)
- [fzf-lsp lsp with fzf as gui backend](https://github.com/gfanto/fzf-lsp.nvim)
3 years ago
# Install
You can remove your lspconfig setup and use this plugin.
3 years ago
The plugin depends on [guihua.lua](https://github.com/ray-x/guihua.lua), which provides GUI and fzy support.
3 years ago
```vim
Plug 'ray-x/guihua.lua', {'do': 'cd lua/fzy && make' }
Plug 'ray-x/navigator.lua'
```
Packer
```lua
use {'ray-x/navigator.lua', requires = {'ray-x/guihua.lua', run = 'cd lua/fzy && make'}}
```
## Setup
```lua
lua require'navigator'.setup()
```
3 years ago
## Usage
Please refer to lua/navigator/lspclient/mapping.lua on key mappings. Should be able to work out-of-box
Use <c-e> or `:q!` to kill the floating window, <up/down> to move and <c-o> to open location or apply changes
3 years ago
## Screenshots
### Reference
![reference](https://github.com/ray-x/files/blob/master/img/navigator/ref.gif?raw=true)
### Document Symbol
![document symbol](https://github.com/ray-x/files/blob/master/img/navigator/doc_symbol.gif?raw=true)
3 years ago
### Workspace Symbol
![workspace symbol](https://github.com/ray-x/files/blob/master/img/navigator/workspace_symbol.gif?raw=true)
3 years ago
### Diagnostic
![diagnostic](https://github.com/ray-x/files/blob/master/img/navigator/diag.jpg?raw=true)
### Implementation
![implementation](https://github.com/ray-x/files/blob/master/img/navigator/implemention.jpg?raw=true)
### Fzy search in reference
![fzy_reference](https://github.com/ray-x/files/blob/master/img/navigator/fzy_reference.jpg?raw=true)
### Code actions
![code actions](https://github.com/ray-x/files/blob/master/img/navigator/codeaction.jpg?raw=true)
### Code preview with highlight
![code preview](https://github.com/ray-x/files/blob/master/img/navigator/preview_with_hl.jpg?raw=true)
### Treesitter symbol
Treetsitter symbols in all buffers
![treesitter](https://github.com/ray-x/files/blob/master/img/navigator/treesitter.jpg?raw=true)
3 years ago
### Call hierarchy (incomming/outgoing)
![incomming](https://github.com/ray-x/files/blob/master/img/navigator/incomming.jpg?raw=true)
### LSP symbol nerdfont/emoji
![nerdfont](https://github.com/ray-x/files/blob/master/img/navigator/icon_nerd.jpg?raw=true)
3 years ago
# 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)