dot/.config/nvim/lua/plugins/lsp.lua

114 lines
2.9 KiB
Lua
Raw Normal View History

2023-08-29 20:07:23 +02:00
return {
2023-08-29 23:17:39 +02:00
{
"VonHeikemen/lsp-zero.nvim",
branch = "v2.x",
lazy = true,
config = function()
require("lsp-zero.settings").preset({})
end,
},
{
"hrsh7th/nvim-cmp",
event = "InsertEnter",
dependencies = {
{ "L3MON4D3/LuaSnip" },
},
config = function()
require("lsp-zero.cmp").extend()
local cmp = require("cmp")
local cmp_action = require("lsp-zero.cmp").action()
2023-08-29 20:07:23 +02:00
2023-08-29 23:17:39 +02:00
cmp.setup({
2023-11-04 11:50:47 +01:00
completion = {
completeopt = "menu,menuone",
},
2023-08-29 23:17:39 +02:00
mapping = {
2023-11-04 11:50:47 +01:00
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
2023-08-29 23:17:39 +02:00
["<C-Space>"] = cmp.mapping.complete(),
2023-11-04 11:50:47 +01:00
["<C-c>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Insert,
select = true,
},
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif require("luasnip").expand_or_jumpable() then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "")
else
fallback()
end
end, {
"i",
"s",
}),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif require("luasnip").jumpable(-1) then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "")
else
fallback()
end
end, {
"i",
"s",
}),
},
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "nvim_lua" },
{ name = "path" },
2023-08-29 23:17:39 +02:00
},
})
end,
},
2023-08-29 20:07:23 +02:00
2023-08-29 23:17:39 +02:00
-- LSP
{
"neovim/nvim-lspconfig",
cmd = "LspInfo",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
{ "hrsh7th/cmp-nvim-lsp" },
{ "williamboman/mason-lspconfig.nvim" },
{ "williamboman/mason.nvim" },
},
config = function()
local lsp = require("lsp-zero")
2023-08-29 20:07:23 +02:00
2023-08-29 23:17:39 +02:00
lsp.ensure_installed(
{
2023-09-04 00:10:21 +02:00
"lua_ls",
2023-08-29 23:17:39 +02:00
"gopls",
2024-03-26 12:26:31 +01:00
"pylsp",
2023-09-06 13:24:59 +02:00
"tsserver",
2023-08-29 23:17:39 +02:00
}
)
2023-08-29 20:07:23 +02:00
2023-08-29 23:17:39 +02:00
lsp.on_attach(function(client, bufnr)
lsp.default_keymaps({ buffer = bufnr })
end)
2023-08-29 20:07:23 +02:00
2023-09-04 00:10:21 +02:00
local read_exec_path = function(exec_name)
local handle = io.popen("which " .. exec_name)
local result = handle:read("*a"):gsub("\n", "")
handle:close()
return result
end
2023-08-29 23:17:39 +02:00
nvim_lsp = require("lspconfig")
nvim_lsp.lua_ls.setup(lsp.nvim_lua_ls())
nvim_lsp.gopls.setup({})
nvim_lsp.dartls.setup({})
2024-03-26 12:26:31 +01:00
nvim_lsp.pylsp.setup({})
2023-09-06 13:24:59 +02:00
nvim_lsp.tsserver.setup({})
2023-08-29 23:17:39 +02:00
lsp.setup()
end,
},
2023-08-29 20:07:23 +02:00
}