79 lines
1.6 KiB
Lua
79 lines
1.6 KiB
Lua
-- diagnostics
|
|
vim.diagnostic.config({
|
|
severity_sort = true,
|
|
virtual_text = true,
|
|
})
|
|
|
|
-- cmp setup
|
|
local cmp = require('cmp')
|
|
cmp.setup({
|
|
sources = {
|
|
{ name = 'nvim_lsp' },
|
|
},
|
|
mapping = cmp.mapping.preset.insert({
|
|
['<C-Space>'] = cmp.mapping.complete(),
|
|
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
|
}),
|
|
})
|
|
|
|
-- shared capabilities (cmp + snippet support)
|
|
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
|
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
|
|
|
-- shared keymaps when LSP attaches
|
|
local on_attach = function(_, bufnr)
|
|
local map = function(mode, lhs, rhs)
|
|
vim.keymap.set(mode, lhs, rhs, { buffer = bufnr })
|
|
end
|
|
|
|
map("n", "gd", vim.lsp.buf.definition)
|
|
map("n", "gD", vim.lsp.buf.declaration)
|
|
map("n", "gr", vim.lsp.buf.references)
|
|
map("n", "K", vim.lsp.buf.hover)
|
|
end
|
|
|
|
-- helper to setup servers
|
|
local lspconfig = require('lspconfig')
|
|
|
|
local function setup(server, opts)
|
|
opts = opts or {}
|
|
opts.capabilities = capabilities
|
|
opts.on_attach = on_attach
|
|
lspconfig[server].setup(opts)
|
|
end
|
|
|
|
-- servers
|
|
setup("pyright")
|
|
setup("rust_analyzer")
|
|
|
|
setup("lua_ls", {
|
|
settings = {
|
|
Lua = {
|
|
diagnostics = {
|
|
globals = { "vim" }
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
setup("html")
|
|
|
|
setup("gopls", {
|
|
settings = {
|
|
gopls = {
|
|
analyses = {
|
|
unusedparams = true,
|
|
nilness = true,
|
|
unusedwrite = true,
|
|
useany = true,
|
|
},
|
|
staticcheck = true,
|
|
gofumpt = true,
|
|
},
|
|
},
|
|
})
|
|
|
|
setup("clangd", {
|
|
cmd = { "clangd", "--background-index", "--query-driver=/usr/bin/gcc,/usr/bin/g++",},
|
|
})
|