55 lines
1.5 KiB
Lua
55 lines
1.5 KiB
Lua
return {
|
|
"neovim/nvim-lspconfig",
|
|
event = { "BufReadPre", "BufNewFile" },
|
|
dependencies = {
|
|
"folke/neoconf.nvim",
|
|
"hrsh7th/cmp-nvim-lsp",
|
|
},
|
|
config = function()
|
|
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
|
local util = require("lspconfig.util")
|
|
|
|
local function on_attach(_, bufnr)
|
|
local map = function(mode, lhs, rhs, desc)
|
|
vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, silent = true, noremap = true, desc = desc })
|
|
end
|
|
map('n', 'gd', vim.lsp.buf.definition, 'LSP: Go to definition')
|
|
map('n', 'gr', vim.lsp.buf.references, 'LSP: References')
|
|
map('n', 'gD', vim.lsp.buf.declaration, 'LSP: Go to declaration')
|
|
map('n', 'gI', vim.lsp.buf.implementation, 'LSP: Go to implementation')
|
|
map('n', 'K', vim.lsp.buf.hover, 'LSP: Hover')
|
|
end
|
|
|
|
local function setup(server, opts)
|
|
local ok, mod = pcall(require, "lspconfig." .. server)
|
|
if not ok or type(mod.setup) ~= "function" then return end
|
|
mod.setup(vim.tbl_deep_extend("force", {
|
|
capabilities = capabilities,
|
|
on_attach = on_attach,
|
|
root_dir = util.root_pattern(
|
|
".neoconf.json",
|
|
".git",
|
|
"composer.json",
|
|
"package.json"
|
|
),
|
|
}, opts or {}))
|
|
end
|
|
|
|
setup("lua_ls", {
|
|
settings = {
|
|
Lua = {
|
|
diagnostics = { globals = { "vim" } },
|
|
},
|
|
},
|
|
})
|
|
|
|
setup("ts_ls")
|
|
setup("html")
|
|
setup("cssls")
|
|
setup("jsonls")
|
|
setup("bashls")
|
|
setup("marksman")
|
|
setup("intelephense")
|
|
end,
|
|
}
|