You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have read the appropriate plugin's documentation.
I have searched that this issue has not been reported before.
By checking this, I confirm that the above steps are completed. I understand leaving this unchecked will result in this report being closed immediately.
Describe the bug
LSP configuration settings not being passed with latest version of kickstart nvim-lsp configuration block
To Reproduce
Using the LSP config from this repo, pass in some additional options to (e.g.) lua_ls.settings
My config for LSP
return {
-- Main LSP Configuration"neovim/nvim-lspconfig",
dependencies= {
-- Automatically install LSPs and related tools to stdpath for Neovim-- Mason must be loaded before its dependents so we need to set it up here.-- NOTE: `opts = {}` is the same as calling `require('mason').setup({})`
{ "mason-org/mason.nvim", opts= {} },
"mason-org/mason-lspconfig.nvim",
"WhoIsSethDaniel/mason-tool-installer.nvim",
-- Useful status updates for LSP.
{ "j-hui/fidget.nvim", opts= {} },
-- Allows extra capabilities provided by blink.cmp"saghen/blink.cmp",
},
config=function()
-- Brief aside: **What is LSP?**---- LSP is an initialism you've probably heard, but might not understand what it is.---- LSP stands for Language Server Protocol. It's a protocol that helps editors-- and language tooling communicate in a standardized fashion.---- In general, you have a "server" which is some tool built to understand a particular-- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers-- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone-- processes that communicate with some "client" - in this case, Neovim!---- LSP provides Neovim with features like:-- - Go to definition-- - Find references-- - Autocompletion-- - Symbol Search-- - and more!---- Thus, Language Servers are external tools that must be installed separately from-- Neovim. This is where `mason` and related plugins come into play.---- If you're wondering about lsp vs treesitter, you can check out the wonderfully-- and elegantly composed help section, `:help lsp-vs-treesitter`-- This function gets run when an LSP attaches to a particular buffer.-- That is to say, every time a new file is opened that is associated with-- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this-- function will be executed to configure the current buffervim.api.nvim_create_autocmd("LspAttach", {
group=vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear=true }),
callback=function(event)
-- NOTE: Remember that Lua is a real programming language, and as such it is possible-- to define small helper and utility functions so you don't have to repeat yourself.---- In this case, we create a function that lets us more easily define mappings specific-- for LSP related items. It sets the mode, buffer and description for us each time.localmap=function(keys, func, desc, mode)
mode=modeor"n"vim.keymap.set(mode, keys, func, { buffer=event.buf, desc="LSP: " ..desc })
end-- Rename the variable under your cursor.-- Most Language Servers support renaming across files, etc.map("<LocalLeader>rn", vim.lsp.buf.rename, "[R]e[n]ame")
-- Execute a code action, usually your cursor needs to be on top of an error-- or a suggestion from your LSP for this to activate.map("<LocalLeader>ca", vim.lsp.buf.code_action, "[G]oto Code [A]ction", { "n", "x" })
-- Find references for the word under your cursor.map("gr", require("fzf-lua").lsp_references, "[G]oto [R]eferences")
-- Jump to the implementation of the word under your cursor.-- Useful when your language has ways of declaring types without an actual implementation.map("gi", require("fzf-lua").lsp_implementations, "[G]oto [I]mplementation")
-- Jump to the definition of the word under your cursor.-- This is where a variable was first declared, or where a function is defined, etc.-- To jump back, press <C-t>.map("gd", require("fzf-lua").lsp_definitions, "[G]oto [D]efinition")
-- WARN: This is not Goto Definition, this is Goto Declaration.-- For example, in C this would take you to the header.map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration")
-- Fuzzy find all the symbols in your current document.-- Symbols are things like variables, functions, types, etc.map("gO", require("fzf-lua").lsp_document_symbols, "Open Document Symbols")
-- Fuzzy find all the symbols in your current workspace.-- Similar to document symbols, except searches over your entire project.map("gW", require("fzf-lua").lsp_live_workspace_symbols, "Open Workspace Symbols")
-- Jump to the type of the word under your cursor.-- Useful when you're not sure what type a variable is and you want to see-- the definition of its *type*, not where it was *defined*.map("gT", require("fzf-lua").lsp_typedefs, "[G]oto [T]ype Definition")
map("gl", vim.diagnostic.open_float, "Float diagnostics")
-- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10)---@paramclientvim.lsp.Client---@parammethodvim.lsp.protocol.Method---@parambufnr?integer some lsp support methods only in specific files---@returnbooleanlocalfunctionclient_supports_method(client, method, bufnr)
ifvim.fn.has("nvim-0.11") ==1thenreturnclient:supports_method(method, bufnr)
elsereturnclient.supports_method(method, { bufnr=bufnr })
endend-- The following two autocommands are used to highlight references of the-- word under your cursor when your cursor rests there for a little while.-- See `:help CursorHold` for information about when this is executed---- When you move your cursor, the highlights will be cleared (the second autocommand).localclient=vim.lsp.get_client_by_id(event.data.client_id)
ifclientandclient_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf)
thenlocalhighlight_augroup=vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear=false })
vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, {
buffer=event.buf,
group=highlight_augroup,
callback=vim.lsp.buf.document_highlight,
})
vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, {
buffer=event.buf,
group=highlight_augroup,
callback=vim.lsp.buf.clear_references,
})
vim.api.nvim_create_autocmd("LspDetach", {
group=vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear=true }),
callback=function(event2)
vim.lsp.buf.clear_references()
vim.api.nvim_clear_autocmds({ group="kickstart-lsp-highlight", buffer=event2.buf })
end,
})
end-- The following code creates a keymap to toggle inlay hints in your-- code, if the language server you are using supports them---- This may be unwanted, since they displace some of your codeifclientandclient_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) thenmap("<leader>th", function()
vim.lsp.inlay_hint.enable(notvim.lsp.inlay_hint.is_enabled({ bufnr=event.buf }))
end, "[T]oggle Inlay [H]ints")
endend,
})
-- Diagnostic Config-- See :help vim.diagnostic.Optsvim.diagnostic.config({
severity_sort=true,
float= { border="rounded", source="if_many" },
underline= { severity=vim.diagnostic.severity.ERROR },
signs= {
text= {
[vim.diagnostic.severity.ERROR] =" ",
[vim.diagnostic.severity.WARN] =" ",
[vim.diagnostic.severity.INFO] =" ",
[vim.diagnostic.severity.HINT] =" ",
},
},
virtual_text= {
source="if_many",
spacing=2,
format=function(diagnostic)
localdiagnostic_message= {
[vim.diagnostic.severity.ERROR] =diagnostic.message,
[vim.diagnostic.severity.WARN] =diagnostic.message,
[vim.diagnostic.severity.INFO] =diagnostic.message,
[vim.diagnostic.severity.HINT] =diagnostic.message,
}
returndiagnostic_message[diagnostic.severity]
end,
},
})
-- LSP servers and clients are able to communicate to each other what features they support.-- By default, Neovim doesn't support everything that is in the LSP specification.-- When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities.-- So, we create new capabilities with blink.cmp, and then broadcast that to the servers.localcapabilities=require("blink.cmp").get_lsp_capabilities()
-- Enable the following language servers-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.---- Add any additional override configuration in the following tables. Available keys are:-- - cmd (table): Override the default command used to start the server-- - filetypes (table): Override the default list of associated filetypes for the server-- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features.-- - settings (table): Override the default settings passed when initializing the server.-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/localservers= {
-- clangd = {},-- gopls = {},-- pyright = {},-- rust_analyzer = {},-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs---- Some languages (like typescript) have entire language plugins that can be useful:-- https://github.com/pmizio/typescript-tools.nvim---- But for many setups, the LSP (`ts_ls`) will work just fine-- ts_ls = {},--lua_ls= {
-- cmd = { ... },-- filetypes = { ... },-- capabilities = {},settings= {
Lua= {
completion= {
callSnippet="Replace",
},
diagnostics= {
globals= { "vim" },
},
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings-- diagnostics = { disable = { 'missing-fields' } },
},
},
},
ruby_lsp= {
filetypes= { "ruby", "eruby" },
init_options= {
formatter="standard",
linters= { "standard" },
},
},
}
-- Ensure the servers and tools above are installed---- To check the current status of installed tools and/or manually install-- other tools, you can run-- :Mason---- You can press `g?` for help in this menu.---- `mason` had to be setup earlier: to configure its options see the-- `dependencies` table for `nvim-lspconfig` above.---- You can add other tools here that you want Mason to install-- for you, so that they are available from within Neovim.localensure_installed=vim.tbl_keys(serversor {})
vim.list_extend(ensure_installed, {
"stylua", -- Used to format Lua code"standardrb",
"prettierd",
"prettier",
})
require("mason-tool-installer").setup({ ensure_installed=ensure_installed })
require("mason-lspconfig").setup({
ensure_installed= {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)automatic_installation=false,
handlers= {
function(server_name)
localserver=servers[server_name] or {}
-- This handles overriding only values explicitly passed-- by the server configuration above. Useful when disabling-- certain features of an LSP (for example, turning off formatting for ts_ls)server.capabilities=vim.tbl_deep_extend("force", {}, capabilities, server.capabilitiesor {})
require("lspconfig")[server_name].setup(server)
end,
},
})
end,
}
Uh oh!
There was an error while loading. Please reload this page.
Before Reporting an Issue
I have read the kickstart.nvim README.md.
I have read the appropriate plugin's documentation.
I have searched that this issue has not been reported before.
By checking this, I confirm that the above steps are completed. I understand leaving this unchecked will result in this report being closed immediately.
Describe the bug
LSP configuration settings not being passed with latest version of kickstart nvim-lsp configuration block
To Reproduce
lua_ls.settings
My config for LSP
:LspInfo
):Undefined global vim
messages everywhere. The ruby config from my settings isn't being passed alsoDesktop
Neovim Version
The text was updated successfully, but these errors were encountered: