You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nvim-config/lua/lsp/init.lua

95 lines
2.9 KiB

vim.pack.add {
{ src = 'https://github.com/neovim/nvim-lspconfig' },
}
local on_attach = function(_, bufnr)
local opts = { buffer = bufnr, remap = false }
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
vim.keymap.set("n", "<leader>k", function() vim.lsp.buf.hover() end, opts)
vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts)
vim.keymap.set("n", "<leader>vd", function() vim.diagnostic.open_float() end, opts)
vim.keymap.set("n", "[d", function() vim.lsp.diagnostics.goto_next() end, opts)
vim.keymap.set("n", "]d", function() vim.lsp.diagnostic.goto_prev() end, opts)
vim.keymap.set("n", "<leader>ca", function() vim.lsp.buf.code_action() end, opts)
vim.keymap.set("n", "gr", function() vim.lsp.buf.references() end, opts)
vim.keymap.set("n", "<leader>rn", function() vim.lsp.buf.rename() end, opts)
vim.keymap.set("i", "<C-k>", function() vim.lsp.buf.signature_help() end, opts)
vim.keymap.set("n", "<leader>fo", function() vim.lsp.buf.format() end, opts)
vim.keymap.set('n', '<Leader>D', vim.lsp.buf.type_definition, opts)
vim.keymap.set('n', '<Leader>e', vim.diagnostic.open_float, opts)
end
vim.lsp.config['rust_analyser'] = {
-- capabilities = capabilities,
on_attach = on_attach,
filetypes = { 'rust' },
settings = {
['rust-analyzer'] = {
checkOnSave = {
allFeatures = true,
overrideCommand = {
'cargo', 'clippy', '--workspace', '--message-format=json',
'--all-targets', '--all-features'
}
}
}
}
}
vim.lsp.enable('rust_analyser')
vim.lsp.config['lua_ls'] = {
on_attach = on_attach,
filetypes = { 'lua' },
-- capabilities = capabilities,
settings = {
Lua = {
runtime = {
version = 'LuaJIT',
},
diagnostics = {
globals = { 'vim' },
},
workspace = {
library = vim.api.nvim_get_runtime_file("", true),
},
telemetry = {
enable = false,
},
},
},
}
vim.lsp.enable('lua_ls')
vim.lsp.config['ts_ls'] = {
-- capabilities = capabilities,
on_attach = on_attach,
}
vim.lsp.enable('ts_ls')
vim.lsp.config['pyright'] = {
-- capabilities = capabilities,
on_attach = on_attach,
}
vim.lsp.enable('pyright')
vim.lsp.config['bashls'] = {
-- capabilities = capabilities,
on_attach = on_attach,
}
vim.lsp.enable('bashls')
vim.lsp.config['clangd'] = {
-- capabilities = capabilities,
on_attach = on_attach,
}
vim.lsp.enable('clangd')
vim.lsp.config['volar'] = {
filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue', 'json' },
-- capabilities = capabilities,
on_attach = on_attach,
}
vim.lsp.enable('volar')