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.
NvChad/lua/nvchad/configs/lspconfig.lua

92 lines
2.8 KiB
Lua

local M = {}
local map = vim.keymap.set
-- export on_attach & capabilities for custom lspconfigs
M.on_attach = function(client, bufnr)
local conf = require("nvconfig").ui.lsp
-- semanticTokens
if not conf.semantic_tokens and client.supports_method "textDocument/semanticTokens" then
client.server_capabilities.semanticTokensProvider = nil
end
if conf.signature and client.server_capabilities.signatureHelpProvider then
require("nvchad.signature").setup(client, bufnr)
end
local function opts(desc)
return { buffer = bufnr, desc = desc }
end
4 months ago
map("n", "gD", vim.lsp.buf.declaration, opts "Lsp Go to declaration")
map("n", "gd", vim.lsp.buf.definition, opts "Lsp Go to definition")
map("n", "K", vim.lsp.buf.hover, opts "Lsp hover information")
map("n", "gi", vim.lsp.buf.implementation, opts "Lsp Go to implementation")
map("n", "<leader>sh", vim.lsp.buf.signature_help, opts "Lsp Show signature help")
4 months ago
map("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts "Lsp Add workspace folder")
map("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts "Lsp Remove workspace folder")
map("n", "<leader>wl", function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
4 months ago
end, opts "Lsp List workspace folders")
4 months ago
map("n", "<leader>D", vim.lsp.buf.type_definition, opts "Lsp Go to type definition")
4 months ago
map("n", "<leader>ra", function()
require "nvchad.renamer"()
4 months ago
end, opts "Lsp NvRenamer")
4 months ago
4 months ago
map({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts "Lsp Code action")
map("n", "gr", vim.lsp.buf.references, opts "Lsp Show references")
end
M.capabilities = vim.lsp.protocol.make_client_capabilities()
M.capabilities.textDocument.completion.completionItem = {
documentationFormat = { "markdown", "plaintext" },
snippetSupport = true,
preselectSupport = true,
insertReplaceSupport = true,
labelDetailsSupport = true,
deprecatedSupport = true,
commitCharactersSupport = true,
tagSupport = { valueSet = { 1 } },
resolveSupport = {
properties = {
"documentation",
"detail",
"additionalTextEdits",
},
},
}
3 years ago
M.defaults = function()
dofile(vim.g.base46_cache .. "lsp")
require "nvchad.lsp"
require("lspconfig").lua_ls.setup {
on_attach = M.on_attach,
capabilities = M.capabilities,
settings = {
Lua = {
diagnostics = {
globals = { "vim" },
},
workspace = {
library = {
[vim.fn.expand "$VIMRUNTIME/lua"] = true,
[vim.fn.expand "$VIMRUNTIME/lua/vim/lsp"] = true,
[vim.fn.stdpath "data" .. "/lazy/ui/nvchad_types"] = true,
[vim.fn.stdpath "data" .. "/lazy/lazy.nvim/lua/lazy"] = true,
},
maxPreload = 100000,
preloadFileSize = 10000,
},
},
},
}
end
return M