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.

119 lines
3.1 KiB

-- Enable LSP servers
vim.lsp.enable({
"ts_ls",
"lua_ls",
"tailwindcss",
"eslint",
"rust_analyzer",
"gopls",
"html",
"cssls",
"basedpyright",
"bashls",
"css_variables",
"cssmodules_ls",
"dockerls",
"jsonls",
"lemminx",
"marksman",
"nginx_language_server",
"taplo",
"yamlls",
})
-- Configure diagnostic display with custom signs
vim.diagnostic.config({
float = {
focusable = true,
style = "minimal",
border = "rounded",
source = true, -- Show source in diagnostic popup window
header = "",
prefix = "",
},
virtual_text = false,
virtual_lines = false,
signs = {
text = {
[vim.diagnostic.severity.ERROR] = " ",
[vim.diagnostic.severity.WARN] = " ",
[vim.diagnostic.severity.HINT] = " ",
[vim.diagnostic.severity.INFO] = " ",
},
},
underline = true,
update_in_insert = false,
severity_sort = true,
})
-- Enable inlay hints
vim.lsp.inlay_hint.enable(false)
-- Create default capabilities without cmp
local lsp_capabilities = vim.lsp.protocol.make_client_capabilities()
vim.lsp.config("*", {
capabilities = lsp_capabilities,
})
-- Add additional capabilities supported by blink-cmp
local blink_status_ok, blink = pcall(require, "blink.cmp")
if blink_status_ok then
local ext_capabilities = vim.tbl_deep_extend("force", {}, lsp_capabilities, blink.get_lsp_capabilities())
-- Configure LSP servers using the new vim.lsp.config syntax
-- Default configuration for all servers
vim.lsp.config("*", {
capabilities = ext_capabilities,
})
end
local keymap = vim.keymap
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("UserLspConfig", {}),
callback = function(ev)
-- Buffer local mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local opts = { buffer = ev.buf, silent = true }
-- set keybinds
opts.desc = "Show LSP references"
keymap.set("n", "gr", "<cmd>FzfLua lsp_references<CR>", opts)
opts.desc = "Go to declaration"
keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
opts.desc = "Show LSP definitions"
keymap.set("n", "gd", "<cmd>FzfLua lsp_definitions<CR>", opts)
opts.desc = "Show LSP implementations"
keymap.set("n", "gi", "<cmd>FzfLua lsp_implementations<CR>", opts)
opts.desc = "Show LSP type definitions"
keymap.set("n", "gt", "<cmd>FzfLua lsp_typedefs<CR>", opts)
opts.desc = "See available code actions"
keymap.set({ "n", "v" }, "<leader>ca", vim.lsp.buf.code_action, opts)
opts.desc = "Smart rename"
keymap.set("n", "<leader>lr", vim.lsp.buf.rename, opts)
opts.desc = "Show buffer diagnostics"
keymap.set("n", "<leader>D", "<cmd>FzfLua diagnostics_document<CR>", opts)
opts.desc = "Show line diagnostics"
keymap.set("n", "gl", vim.diagnostic.open_float, opts)
opts.desc = "Go to previous diagnostic"
keymap.set("n", "<leader>dk", function()
vim.diagnostic.jump({ count = -1, float = true })
end, opts)
opts.desc = "Go to next diagnostic"
keymap.set("n", "<leader>dj", function()
vim.diagnostic.jump({ count = 1, float = true })
end, opts)
opts.desc = "Show documentation for what is under cursor"
keymap.set("n", "K", vim.lsp.buf.hover, opts)
end,
})