@ -18,10 +18,12 @@ CONTENTS *navigator-content
5.4.1. LSP clients.................................|navigator-lsp_clients|
5.4.1. LSP clients.................................|navigator-lsp_clients|
5.4.1.1. Add your own servers.........|navigator-add_your_own_servers|
5.4.1.1. Add your own servers.........|navigator-add_your_own_servers|
5.4.2. Disable a lsp client loading from navigator.|navigator-disable_a_lsp_client_loading_from_navigator|
5.4.2. Disable a lsp client loading from navigator.|navigator-disable_a_lsp_client_loading_from_navigator|
5.4.3. Default keymaps.........................|navigator-default_keymaps|
5.4.3. Try it your self.......................|navigator-try_it_your_self|
5.4.4. Colors/Highlight:.....................|navigator-colors/highlight:|
5.4.4. Default keymaps.........................|navigator-default_keymaps|
5.4.5. Colors/Highlight:.....................|navigator-colors/highlight:|
5.5. Dependency.........................................|navigator-dependency|
5.5. Dependency.........................................|navigator-dependency|
5.6. Integration with lsp_installer (williamboman/nvim-lsp-installer).|navigator-integration_with_lsp_installer_(williamboman/nvim-lsp-installer)|
5.6. Integrat with lsp_installer (williamboman/nvim-lsp-installer).|navigator-integrat_with_lsp_installer_(williamboman/nvim-lsp-installer)|
5.6.1. Integration with other lsp plugins (e.g. rust-tools, go.nvim, clangd extension).|navigator-integration_with_other_lsp_plugins_(e.g._rust-tools,_go.nvim,_clangd_extension)|
5.7. Usage...................................................|navigator-usage|
5.7. Usage...................................................|navigator-usage|
5.8. Configuration...................................|navigator-configuration|
5.8. Configuration...................................|navigator-configuration|
5.9. Highlight...........................................|navigator-highlight|
5.9. Highlight...........................................|navigator-highlight|
@ -29,10 +31,11 @@ CONTENTS *navigator-content
5.11. Screenshots......................................|navigator-screenshots|
5.11. Screenshots......................................|navigator-screenshots|
5.11.1. Reference....................................|navigator-reference|
5.11.1. Reference....................................|navigator-reference|
5.11.2. Definition preview..................|navigator-definition_preview|
5.11.2. Definition preview..................|navigator-definition_preview|
5.11.3. GUI and multigrid support....|navigator-gui_and_multigrid_support|
5.11.3. Sidebar, folding, outline....|navigator-sidebar,_folding,_outline|
5.11.4. Document Symbol........................|navigator-document_symbol|
5.11.4. GUI and multigrid support....|navigator-gui_and_multigrid_support|
5.11.5. Workspace Symbol......................|navigator-workspace_symbol|
5.11.5. Document Symbol and navigate through the list.|navigator-document_symbol_and_navigate_through_the_list|
5.11.6. highlight document symbol and jump between reference.|navigator-highlight_document_symbol_and_jump_between_reference|
5.11.6. Workspace Symbol......................|navigator-workspace_symbol|
5.11.7. highlight document symbol and jump between reference.|navigator-highlight_document_symbol_and_jump_between_reference|
6. Current symbol highlight and jump backward/forward between symbols.|navigator-current_symbol_highlight_and_jump_backward/forward_between_symbols|
6. Current symbol highlight and jump backward/forward between symbols.|navigator-current_symbol_highlight_and_jump_backward/forward_between_symbols|
6.1. Diagnostic.....................................|navigator-diagnostic|
6.1. Diagnostic.....................................|navigator-diagnostic|
6.2. Edit in preview window.............|navigator-edit_in_preview_window|
6.2. Edit in preview window.............|navigator-edit_in_preview_window|
@ -48,6 +51,9 @@ CONTENTS *navigator-content
6.11. Light bulb if codeAction available.|navigator-light_bulb_if_codeaction_available|
6.11. Light bulb if codeAction available.|navigator-light_bulb_if_codeaction_available|
6.12. Codelens........................................|navigator-codelens|
6.12. Codelens........................................|navigator-codelens|
6.13. Predefined LSP symbol nerdfont/emoji.|navigator-predefined_lsp_symbol_nerdfont/emoji|
6.13. Predefined LSP symbol nerdfont/emoji.|navigator-predefined_lsp_symbol_nerdfont/emoji|
6.14. VS-code style folding with treesitter.|navigator-vs-code_style_folding_with_treesitter|
6.14.1. folding function..................|navigator-folding_function|
6.14.2. folding comments..................|navigator-folding_comments|
7. Debug the plugin...................................|navigator-debug_the_plugin|
7. Debug the plugin...................................|navigator-debug_the_plugin|
8. Break changes and known issues.......|navigator-break_changes_and_known_issues|
8. Break changes and known issues.......|navigator-break_changes_and_known_issues|
9. Todo...........................................................|navigator-todo|
9. Todo...........................................................|navigator-todo|
@ -56,8 +62,14 @@ CONTENTS *navigator-content
================================================================================
================================================================================
NAVIGATOR *navigator-navigator*
NAVIGATOR *navigator-navigator*
* Source code analysis and navigate tool
* Easy code navigation, view diagnostic errors, see relationships of functions, variables
* Easy code navigation, view diagnostic errors, see relationships of functions, variables
* A plugin combines the power of LSP and 🌲🏡 Treesitter together. Not only provids a better highlight but also help you analyse symbol context effectively.
* A plugin combines the power of LSP and 🌲🏡 Treesitter together. Not only provids a better highlight but also help you analyse symbol context effectively.
* ctags fuzzy search & build ctags symbols
-
* [](https://youtu.be/P1kd7Y8AatE)
Here are some examples
Here are some examples
@ -127,7 +139,8 @@ FEATURES: *navigator-features
* Optimize display (remove trailing bracket/space), display the caller of reference, de-duplicate lsp results (e.g reference
* Optimize display (remove trailing bracket/space), display the caller of reference, de-duplicate lsp results (e.g reference
in the same line). Using treesitter for file preview highlighter etc
in the same line). Using treesitter for file preview highlighter etc
* ccls call hierarchy (Non-standard `ccls/call` API) supports
* ccls call hierarchy (Non-standard `ccls/call` API) supports
* Syntax folding based on treesitter folding algorithm. (It behaves similar to vs-code)
* Syntax folding based on treesitter or LSP_fold folding algorithm. (It behaves similar to vs-code); comment folding
* Treesitter symbols sidebar, LSP document symbole sidebar. Both with preview and folding
* Fully support LSP CodeAction, CodeLens, CodeLens action. Help you improve code quality.
* Fully support LSP CodeAction, CodeLens, CodeLens action. Help you improve code quality.
* LRU cache for treesitter nodes
* LRU cache for treesitter nodes
* Lazy loader friendly
* Lazy loader friendly
@ -151,7 +164,7 @@ SIMILAR PROJECTS / SPECIAL MENTIONS: *navigator-similar_projects_/_special_menti
================================================================================
================================================================================
INSTALL *navigator-install*
INSTALL *navigator-install*
Require nvim-0.6.1 or nightly
Require nvim-0.6.1 or above, nightly (0.8) prefered
You can remove your lspconfig setup and use this plugin.
You can remove your lspconfig setup and use this plugin.
The plugin depends on lspconfig and guihua.lua (https://github.com/ray-x/guihua.lua), which provides GUI and fzy support(migrate from romgrk's project (romgrk/fzy-lua-native)).
The plugin depends on lspconfig and guihua.lua (https://github.com/ray-x/guihua.lua), which provides GUI and fzy support(migrate from romgrk's project (romgrk/fzy-lua-native)).
@ -161,11 +174,17 @@ The plugin depends on lspconfig and guihua.lua (https://github.com/ray-x/guihua.
Plug 'ray-x/navigator.lua'
Plug 'ray-x/navigator.lua'
<
<
Note: Highly recommene d: 'nvim-treesitter/nvim-treesitter'
Note: Highly recommend: 'nvim-treesitter/nvim-treesitter'
Packer
Packer
>
>
use {'ray-x/navigator.lua', requires = {'ray-x/guihua.lua', run = 'cd lua/fzy && make'}}
use({
'ray-x/navigator.lua',
requires = {
{ 'ray-x/guihua.lua', run = 'cd lua/fzy && make' },
{ 'neovim/nvim-lspconfig' },
},
})
<
<
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
@ -183,11 +202,11 @@ SAMPLE VIMRC TURNING YOUR NEOVIM INTO A FULL-FEATURED IDE *navigator-sample_vimr
Plug 'neovim/nvim-lspconfig'
Plug 'neovim/nvim-lspconfig'
Plug 'ray-x/guihua.lua', {'do': 'cd lua/fzy && make' }
Plug 'ray-x/guihua.lua', {'do': 'cd lua/fzy && make' }
Plug 'ray-x/navigator.lua'
Plug 'ray-x/navigator.lua'
" Plug 'hrsh7th/nvim-co mpe ' and other plugins you commenly use...
" Plug 'hrsh7th/nvim-cmp' and other plugins you commenly use...
" optional, if you need treesitter symbol support
" optional, if you need treesitter symbol support
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
call plug#end()
call plug#end()
" No need for rquire('lspconfig'), navigator will configure it for you
" No need for re quire('lspconfig'), navigator will configure it for you
lua <<EOF
lua <<EOF
require'navigator'.setup()
require'navigator'.setup()
EOF
EOF
@ -238,7 +257,7 @@ ALL CONFIGURE OPTIONS *navigator-all_configure_option
Nondefault configuration example:
Nondefault configuration example:
>
>
require'navigator'.setup({
require'navigator'.setup({
debug = false, -- log output, set to true and log path: ~/.local/shar e/nvim/gh.log
debug = false, -- log output, set to true and log path: ~/.cach e/nvim/gh.log
width = 0.75, -- max width ratio (number of cols for the floating window) / (window width)
width = 0.75, -- max width ratio (number of cols for the floating window) / (window width)
height = 0.3, -- max list window height, 0.3 by default
height = 0.3, -- max list window height, 0.3 by default
preview_height = 0.35, -- max height of preview windows
preview_height = 0.35, -- max height of preview windows
@ -258,6 +277,9 @@ Nondefault configuration example:
-- please check mapping.lua for all keymaps
-- please check mapping.lua for all keymaps
treesitter_analysis = true, -- treesitter variable context
treesitter_analysis = true, -- treesitter variable context
transparency = 50, -- 0 ~ 100 blur the main window, 100: fully transparent, 0: opaque, set to nil or 100 to disable it
transparency = 50, -- 0 ~ 100 blur the main window, 100: fully transparent, 0: opaque, set to nil or 100 to disable it
lsp_signature_help = true, -- if you would like to hook ray-x/lsp_signature plugin in navigator
-- setup here. if it is nil, navigator will not init signature help
signature_help_cfg = nil, -- if you would like to init ray-x/lsp_signature plugin in navigator, and pass in your own config to signature help
icons = {
icons = {
-- Code action
-- Code action
code_action_icon = "🏏",
code_action_icon = "🏏",
@ -268,23 +290,37 @@ Nondefault configuration example:
},
},
lsp_installer = false, -- set to true if you would like use the lsp installed by williamboman/nvim-lsp-installer
lsp_installer = false, -- set to true if you would like use the lsp installed by williamboman/nvim-lsp-installer
lsp = {
lsp = {
enable = true, -- skip lsp setup if disabled make sure add require('navigator.lspclient.mapping').setup() in you
-- own on_attach
code_action = {enable = true, sign = true, sign_priority = 40, virtual_text = true},
code_action = {enable = true, sign = true, sign_priority = 40, virtual_text = true},
code_lens_action = {enable = true, sign = true, sign_priority = 40, virtual_text = true},
code_lens_action = {enable = true, sign = true, sign_priority = 40, virtual_text = true},
format_on_save = true, -- set to false to disas ble lsp code format on save (if you are using prettier/efm/formater etc)
format_on_save = true, -- set to false to disable lsp code format on save (if you are using prettier/efm/formater etc)
disable_format_cap = {"sqls", "sumneko_lua", "gopls"}, -- a list of lsp disable format capacity (e.g. if you using efm or vim-codeformat etc), empty {} by default
disable_format_cap = {"sqls", "sumneko_lua", "gopls"}, -- a list of lsp disable format capacity (e.g. if you using efm or vim-codeformat etc), empty {} by default
disable_lsp = {'pylsd', 'sqlls'}, -- a list of lsp server disabled for your project, e.g. denols and tsserver you may
disable_lsp = {'pylsd', 'sqlls'}, -- a list of lsp server disabled for your project, e.g. denols and tsserver you may
-- only want to enable one lsp server
-- only want to enable one lsp server
-- to disable all default config and use your own lsp setup set
-- to disable all default config and use your own lsp setup set
-- disable_lsp = 'all'
-- disable_lsp = 'all'
-- Default {}
-- Default {}
diagnostic = {
underline = true,
virtual_text = true, -- show virtual for diagnostic message
update_in_insert = false, -- update diagnostic message in insert mode
},
diagnostic_scrollbar_sign = {'▃', '▆', '█'}, -- experimental: diagnostic status in scroll bar area; set to false to disable the diagnostic sign,
diagnostic_scrollbar_sign = {'▃', '▆', '█'}, -- experimental: diagnostic status in scroll bar area; set to false to disable the diagnostic sign,
-- for other style, set to {'╍', 'ﮆ'} or {'-', '='}
-- for other style, set to {'╍', 'ﮆ'} or {'-', '='}
diagnostic_virtual_text = true, -- show virtual for diagnostic message
diagnostic_update_in_insert = false, -- update diagnostic message in insert mode
disply_diagnostic_qf = true, -- always show quickfix if there are diagnostic errors, set to false if you want to
disply_diagnostic_qf = true, -- always show quickfix if there are diagnostic errors, set to false if you want to
ignore it
ignore it
tsserver = {
tsserver = {
filetypes = {'typescript'} -- disable javascript etc,
filetypes = {'typescript'} -- disable javascript etc,
-- set to {} to disable the lspclient for all filetypes
-- set to {} to disable the lspclient for all filetypes
},
},
ctags ={
cmd = 'ctags',
tagfile = 'tags'
options = '-R --exclude=.git --exclude=node_modules --exclude=test --exclude=vendor --excmd=number'
}
gopls = { -- gopls setting
gopls = { -- gopls setting
on_attach = function(client, bufnr) -- on_attach for gopls
on_attach = function(client, bufnr) -- on_attach for gopls
-- your special on attach here
-- your special on attach here
@ -300,7 +336,8 @@ Nondefault configuration example:
sumneko_root_path = vim.fn.expand("$HOME") .. "/github/sumneko/lua-language-server",
sumneko_root_path = vim.fn.expand("$HOME") .. "/github/sumneko/lua-language-server",
sumneko_binary = vim.fn.expand("$HOME") .. "/github/sumneko/lua-language-server/bin/macOS/lua-language-server",
sumneko_binary = vim.fn.expand("$HOME") .. "/github/sumneko/lua-language-server/bin/macOS/lua-language-server",
},
},
servers = {'cmake', 'ltex'}, -- by default empty, but if you whant navigator load e.g. `cmake` and `ltex` for you , you
servers = {'cmake', 'ltex'}, -- by default empty, and it should load all LSP clients avalible based on filetype
-- but if you whant navigator load e.g. `cmake` and `ltex` for you , you
-- can put them in the `servers` list and navigator will auto load them.
-- can put them in the `servers` list and navigator will auto load them.
-- you could still specify the custom config like this
-- you could still specify the custom config like this
-- cmake = {filetypes = {'cmake', 'makefile'}, single_file_support = false},
-- cmake = {filetypes = {'cmake', 'makefile'}, single_file_support = false},
@ -317,7 +354,8 @@ Built clients:
"jedi_language_server", "jdtls", "sumneko_lua", "vimls", "html", "jsonls", "solargraph", "cssls",
"jedi_language_server", "jdtls", "sumneko_lua", "vimls", "html", "jsonls", "solargraph", "cssls",
"yamlls", "clangd", "ccls", "sqls", "denols", "graphql", "dartls", "dotls",
"yamlls", "clangd", "ccls", "sqls", "denols", "graphql", "dartls", "dotls",
"kotlin_language_server", "nimls", "intelephense", "vuels", "phpactor", "omnisharp",
"kotlin_language_server", "nimls", "intelephense", "vuels", "phpactor", "omnisharp",
"r_language_server", "rust_analyzer", "terraformls", "svelte", "texlab", "clojure_lsp"
"r_language_server", "rust_analyzer", "terraformls", "svelte", "texlab", "clojure_lsp", "elixirls",
"sourcekit", "fsautocomplete", "vls", "hls"
}
}
<
<
@ -347,12 +385,12 @@ ADD YOUR OWN SERVERS *navigator-add_your_own_server
Above servers covered a small part neovim lspconfig support, You can still use lspconfig to add and config servers not
Above servers covered a small part neovim lspconfig support, You can still use lspconfig to add and config servers not
in the list. If you would like to add a server not in the list, you can check this PR https://github.com/ray-x/navigator.lua/pull/107
in the list. If you would like to add a server not in the list, you can check this PR https://github.com/ray-x/navigator.lua/pull/107
Also, an option in setup :
Alternatively, update following option in setup(if you do not want a PR) :
>
>
require'navigator'setup{lsp={servers={'cmake', 'lexls'}}}
require'navigator'setup{lsp={servers={'cmake', 'lexls'}}}
<
<
Above example add cmake and lexls to the default server list
Above option add cmake and lexls to the default server list
DISABLE A LSP CLIENT LOADING FROM NAVIGATOR *navigator-disable_a_lsp_client_loading_from_navigator*
DISABLE A LSP CLIENT LOADING FROM NAVIGATOR *navigator-disable_a_lsp_client_loading_from_navigator*
@ -375,11 +413,16 @@ Or:
})
})
<
<
TRY IT YOUR SELF *navigator-try_it_your_self*
In `playground` folder, there is a `init.lua` and source code for you to play with. Check playground/README.md (https://github.com/ray-x/navigator.lua/blob/master/playground/README.md) for more details
DEFAULT KEYMAPS *navigator-default_keymaps*
DEFAULT KEYMAPS *navigator-default_keymaps*
| mode | key | function |
| mode | key | function |
| ---- | --------------- | ---------------------------------------------------------- |
| ---- | --------------- | ---------------------------------------------------------- |
| n | gr | show reference and context |
| n | gr | async references, definitions and context |
| n | <Leader>gr | show reference and context |
| i | <m-k> | signature help |
| i | <m-k> | signature help |
| n | <c-k> | signature help |
| n | <c-k> | signature help |
| n | gW | workspace symbol |
| n | gW | workspace symbol |
@ -390,18 +433,20 @@ DEFAULT KEYMAPS *navigator-default_keymap
| n | gp | definition preview (Go to Preview) |
| n | gp | definition preview (Go to Preview) |
| n | <C-LeftMouse> | definition |
| n | <C-LeftMouse> | definition |
| n | g<LeftMouse> | implementation |
| n | g<LeftMouse> | implementation |
| n | gT | treesitter document symbol |
| n | <Leader>gt | treesitter document symbol |
| n | <Leader>gT | treesitter symbol for all open buffers |
| n | <Leader>gT | treesitter symbol for all open buffers |
| n | <Leader> ct | ctags symbol search |
| n | <Leader> cg | ctags symbol generate |
| n | K | hover doc |
| n | K | hover doc |
| n | <Space>ca | code action (when you see 🏏 ) |
| n | <Space>ca | code action (when you see 🏏 ) |
| n | <Space>la | code lens action (when you see a codelens indicator) |
| n | <Space>la | code lens action (when you see a codelens indicator) |
| v | <Space>cA | range code action (when you see 🏏 ) |
| v | <Space>ca | range code action (when you see 🏏 ) |
| n | <Space>rn | rename with floating window |
| n | <Space>rn | rename with floating window |
| n | <Leader>re | rename (lsp default) |
| n | <Leader>re | rename (lsp default) |
| n | <Leader>gi | hierarchy incoming calls |
| n | <Leader>gi | hierarchy incoming calls |
| n | <Leader>go | hierarchy outgoing calls |
| n | <Leader>go | hierarchy outgoing calls |
| n | gi | implementation |
| n | gi | implementation |
| n | <Sa pce> D | type definition |
| n | <Spa ce> D | type definition |
| n | gL | show line diagnostic |
| n | gL | show line diagnostic |
| n | gG | show diagnostic for all buffers |
| n | gG | show diagnostic for all buffers |
| n | ]d | next diagnostic |
| n | ]d | next diagnostic |
@ -409,9 +454,9 @@ DEFAULT KEYMAPS *navigator-default_keymap
| n | <Leader> dt | diagnostic toggle(enable/disable) |
| n | <Leader> dt | diagnostic toggle(enable/disable) |
| n | ]r | next treesitter reference/usage |
| n | ]r | next treesitter reference/usage |
| n | [r | previous treesitter reference/usage |
| n | [r | previous treesitter reference/usage |
| n | <Sa pce> wa | add workspace folder |
| n | <Spa ce> wa | add workspace folder |
| n | <Sa pce> wr | remove workspace folder |
| n | <Spa ce> wr | remove workspace folder |
| n | <Sa pce> wl | print workspace folder |
| n | <Spa ce> wl | print workspace folder |
| n | <Leader>k | toggle reference highlight |
| n | <Leader>k | toggle reference highlight |
| i/n | <C-p> | previous item in list |
| i/n | <C-p> | previous item in list |
| i/n | <C-n> | next item in list |
| i/n | <C-n> | next item in list |
@ -458,19 +503,43 @@ The plugin can be loaded lazily (packer `opt = true` ), And it will check if opt
The terminal will need to be able to output nerdfont and emoji correctly. I am using Kitty with nerdfont (Victor Mono).
The terminal will need to be able to output nerdfont and emoji correctly. I am using Kitty with nerdfont (Victor Mono).
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
INTEGRATION WITH LSP_INSTALLER (WILLIAMBOMAN/NVIM-LSP-INSTALLER) *navigator-integration _with_lsp_installer_(williamboman/nvim-lsp-installer)*
INTEGRAT WITH LSP_INSTALLER (WILLIAMBOMAN/NVIM-LSP-INSTALLER) *navigator-integrat_with_lsp_installer_(williamboman/nvim-lsp-installer)*
If you'd like to only use the lsp servers installed by lsp_installer. Please set
If you are using lsp_installer and would like to use the lsp servers installed by lsp_installer. Please set
>
>
lsp_installer = true
lsp_installer = true
<
<
In the config.
In the config. Also please setup the lsp server from installer setup with `server:setup{opts}`
example:
>
use({
'williamboman/nvim-lsp-installer',
config = function()
local lsp_installer = require('nvim-lsp-installer')
lsp_installer.setup{}
end,
})
use({
'ray-x/navigator.lua',
config = function()
require('navigator').setup({
debug = true,
lsp_installer = true,
keymaps = { { key = 'gR', func = "require('navigator.reference').async_ref()" } },
})
end,
})
<
Navigator will startup the server installed by lsp-installer. Please do not call `server:setup{opts}` from lsp installer
Please refer to lsp_installer_config (https://github.com/ray-x/navigator.lua/blob/master/playground/init_lsp_installer.lua)
for more info
Alternatively, Navigator can be used to startup the server installed by lsp-installer.
as it will override the navigator setup
as it will override the navigator setup
Also, could use following setups
To start LSP installed by lsp_installer, please use following setups
>
>
require'navigator'.setup({
require'navigator'.setup({
-- lsp_installer = false -- default value is false
-- lsp_installer = false -- default value is false
@ -482,7 +551,70 @@ Also, could use following setups
example cmd setup (mac) for pyright :
example cmd setup (mac) for pyright :
>
>
cmd = { "/Users/username/.local/share/nvim/lsp_servers/python/node_modules/.bin/pyright-langserver", "--stdio" }
require'navigator'.setup({
-- lsp_installer = false -- default value is false
lsp = {
tsserver = {
cmd = { "/Users/username/.local/share/nvim/lsp_servers/python/node_modules/.bin/pyright-langserver", "--stdio" }
}
}
}
<
The lsp servers installed by nvim-lsp-installer is in following dir
>
local path = require 'nvim-lsp-installer.path'
local install_root_dir = path.concat {vim.fn.stdpath 'data', 'lsp_servers'}
<
And you can setup binary full path to this: (e.g. with gopls)
`install_root_dir .. '/go/gopls'` So the config is
>
local path = require 'nvim-lsp-installer.path'
local install_root_dir = path.concat {vim.fn.stdpath 'data', 'lsp_servers'}
require'navigator'.setup({
-- lsp_installer = false -- default value is false
lsp = {
gopls = {
cmd = { install_root_dir .. '/go/gopls' }
}
}
}
<
Use lsp_installer configs
You can delegate the lsp server setup to lsp_installer with `server:setup{opts}`
Here is an example init_lsp_installer.lua (https://github.com/ray-x/navigator.lua/blob/master/playground/init_lsp_installer.lua)
INTEGRATION WITH OTHER LSP PLUGINS (E.G. RUST-TOOLS, GO.NVIM, CLANGD EXTENSION) *navigator-integration_with_other_lsp_plugins_(e.g._rust-tools,_go.nvim,_clangd_extension)*
There are lots of plugins provides lsp support
go.nvim allow you either hook gopls from go.nvim or from navigator and it can export the lsp setup from go.nvim.
rust-tools and clangd allow you to setup on_attach from config server
Here is an example to setup rust with rust-tools
>
require'navigator'.setup({
lsp = {
disable_lsp = { "rust_analyzer", "clangd" }, -- will not run rust_analyzer setup from navigator
}
})
require('rust-tools').setup({
server = {
on_attach = function(_, _)
require('navigator.lspclient.mapping').setup() -- setup navigator keymaps here,
-- otherwise, you can define your own commands to call navigator functions
end,
}
})
require("clangd_extensions").setup {
server = {
on_attach = function(_, _)
require('navigator.lspclient.mapping').setup() -- setup navigator keymaps here,
-- otherwise, you can define your own commands to call navigator functions
end,
}
}
<
<
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
@ -521,10 +653,41 @@ You can override the above highlight to fit your current colorscheme
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
COMMANDS *navigator-commands*
COMMANDS *navigator-commands*
| command | function |
| command | function |
| ------------ | ---------------------- |
| ------------ | ------------------------- |
| LspToggleFmt | toggle lsp auto format |
| LspToggleFmt | toggle lsp auto format |
| LspKeymaps | show LSP releated keymaps |
| Nctags {args} | show ctags symbols, args: -g regen ctags |
| LspRestart | reload lsp |
| LspSymbols | document symbol in side panel |
| TSymobls | treesitter symbol in side panel |
| CallTree {args} | lsp call hierarchy call tree, args: -i (incomming default), -o (outgoing) |
:LspToggleFmt *:LspToggleFmt*
Toggle lsp auto format.
:LspKeymaps *:LspKeymaps*
Show Lsp keymaps.
:Nctags [flags] *:Nctags*
Show ctags symbols.
[flags]:
-g regen ctags
:LspRestart *:LspRestart*
Restart Lsp.
:LspSymbols *:LspSymbols*
Lsp document symbol in side panel.
:TSSymbols *:TSSymbols*
Treesitter symbol in side panel.
:Calltree [flags] *:Calltree*
Lsp call hierarchy call tree.
[flags]:
-i: incomming default
-o: outgoing
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
SCREENSHOTS *navigator-screenshots*
SCREENSHOTS *navigator-screenshots*
@ -540,15 +703,27 @@ Using treesitter and LSP to view the symbol definition
SIDEBAR, FOLDING, OUTLINE *navigator-sidebar,_folding,_outline*
Treesitter outline and Diagnostics
GUI AND MULTIGRID SUPPORT *navigator-gui_and_multigrid_support*
GUI AND MULTIGRID SUPPORT *navigator-gui_and_multigrid_support*
You can load a different font size for floating win
You can load a different font size for floating win
DOCUMENT SYMBOL *navigator-document_symbol*
DOCUMENT SYMBOL AND NAVIGATE THROUGH THE LIST *navigator-document_symbol_and_navigate_through_the_list*
The key binding to navigate in the list.
* up and down key
* `<Ctrl-f/b>` for page up and down
* number key 1~9 go to the ith item.
* If there are loads of results, would be good to use fzy search prompt to filter out the result you are interested.
WORKSPACE SYMBOL *navigator-workspace_symbol*
WORKSPACE SYMBOL *navigator-workspace_symbol*
@ -647,6 +822,16 @@ PREDEFINED LSP SYMBOL NERDFONT/EMOJI *navigator-predefined_lsp_symbol_nerdfont/e
VS-CODE STYLE FOLDING WITH TREESITTER *navigator-vs-code_style_folding_with_treesitter*
FOLDING FUNCTION *navigator-folding_function*
FOLDING COMMENTS *navigator-folding_comments*
================================================================================
================================================================================
DEBUG THE PLUGIN *navigator-debug_the_plugin*
DEBUG THE PLUGIN *navigator-debug_the_plugin*
@ -689,3 +874,6 @@ ERRORS AND BUG REPORTING *navigator-errors_and_bug_reportin
* Check console output
* Check console output
* Check `LspInfo` and treesitter status with `checkhealth`
* Check `LspInfo` and treesitter status with `checkhealth`
* Turn on log and attach the log to your issue if possible you can remove any personal/company info in the log
* Turn on log and attach the log to your issue if possible you can remove any personal/company info in the log
* Submit Issue with minium vimrc. Please check playground/init.lua as a vimrc template. !!!Please DONOT use a packer vimrc
that installs everything to default folder!!! Also check this repo navigator bug report (https://github.com/fky2015/navigator.nvim-bug-report)