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.

120 lines
2.6 KiB
Lua

local lsp = require('lsp-zero')
-- name = 'minimal',
-- set_lsp_keymaps = false,
-- manage_nvim_cmp = true,
-- suggest_lsp_servers = false,
--})
local keybindings = require('keybindings')
local on_attach = keybindings.on_attach
local cmp_mapping = keybindings.cmp_mappings
lsp.extend_lspconfig({
lsp_attach = on_attach,
capabilities = require('cmp_nvim_lsp').default_capabilities(),
})
local cmp = require('cmp')
local cmp_config = {
preselect = 'none',
window = {
completion = cmp.config.window.bordered(),
documentation = cmp.config.window.bordered(),
},
mapping = cmp.mapping.preset.insert(cmp_mappings),
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
experimental = {
ghost_text = false -- conflicts with copilot.vim's preview
},
}
cmp.setup(cmp_config)
lsp.configure('rust_analyzer', {
settings = {
["rust-analyzer"] = {
procMacro = {
enable = true,
ignored = {
leptos_macro = { "server" },
},
},
cargo = {
allFeatures = true,
},
}
}
})
lsp.configure('ts_ls', {
-- set commands to run the language server using npx
cmd = { "npx", "typescript-language-server", "--stdio" },
})
lsp.configure('html', {
cmd = { "npx", "vscode-html-language-server", "--stdio" },
})
lsp.configure('texlab', {
forwardSearch = {
executable = 'zathura',
args = { '--synctex-forward', '%l:1:%f', '%p' }
},
})
lsp.configure('clangd', {})
lsp.configure('pylsp', {})
-- From https://docs.astral.sh/ruff/editors/setup/#neovim
lsp.configure('ruff', {
init_options = {
settings = {
-- Ruff language server settings go here
}
}
})
-- CSS
lsp.configure('cssls', {
cmd = { "npx", "vscode-css-language-server", "--stdio" },
filetypes = { "css", "scss", "less" }
})
-- Tailwind CSS
lsp.configure('tailwindcss', {
cmd = { "npx", "tailwindcss-language-server", "--stdio" },
filetypes = { "html", "css", "scss", "javascript", "javascriptreact", "typescript", "typescriptreact" },
init_options = {
userLanguages = {
eelixir = "html-eex",
eruby = "erb"
}
}
})
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup('lsp_attach_disable_ruff_hover', { clear = true }),
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
if client == nil then
return
end
if client.name == 'ruff' then
-- Disable hover in favor of Pyright
client.server_capabilities.hoverProvider = false
end
end,
desc = 'LSP: Disable hover capability from Ruff',
})
-- gopls
lsp.configure('gopls', {})
lsp.setup_servers({'rust_analyzer', 'html', 'texlab', 'clangd', 'pylsp', 'gopls', 'ts_ls', 'ruff'})
lsp.setup()