nixvimConfig/plugins/lsp.nix

135 lines
3.3 KiB
Nix
Raw Normal View History

2024-06-17 00:59:57 +02:00
{ icons, pkgs, ... }:
{
opts = {
enable = true;
# Set keymaps when LSP is attached
keymaps = {
extra = [
{
mode = "n";
key = "<leader>li";
action = "<cmd>LspInfo<cr>";
options.desc = "Show LSP info";
}
{
mode = "n";
key = "<leader>ll";
action.__raw = "function() vim.lsp.codelens.refresh() end";
options.desc = "LSP CodeLens refresh";
}
{
mode = "n";
key = "<leader>lL";
action.__raw = "function() vim.lsp.codelens.run() end";
options.desc = "LSP CodeLens run";
}
];
lspBuf = {
"<leader>la" = {
action = "code_action";
desc = "LSP code action";
};
2024-07-12 15:18:42 +02:00
"<leader>lr" = {
action = "rename";
desc = "Rename current symbol";
};
# "<leader>lR" = {
# action = "references";
# desc = "Search references";
# };
2024-07-12 15:18:42 +02:00
"<leader>lh" = {
action = "signature_help";
desc = "Signature help";
};
"<leader>lG" = {
action = "workspace_symbol";
desc = "Search workspace symbols";
};
"gK" = {
action = "signature_help";
desc = "Signature help";
};
2024-06-17 00:59:57 +02:00
gd = {
action = "definition";
desc = "Go to definition";
};
gI = {
action = "implementation";
desc = "Go to implementation";
};
gy = {
action = "type_definition";
desc = "Go to type definition";
};
K = {
action = "hover";
desc = "LSP hover";
};
};
};
postConfig = ''
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" })
vim.diagnostic.config({
virtual_text = true,
signs = true,
underline = true,
update_in_insert = true,
severity_sort = false,
})
local signs = {
Error = "${icons.DiagnosticError}",
Warn = "${icons.DiagnosticWarn}",
Info = "${icons.DiagnosticInfo}",
Hint = "${icons.DiagnosticHint}",
}
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
end
'';
# Load all servers definitions
servers = {
bashls.enable = true;
cssls.enable = true;
docker-compose-language-service.enable = true;
dockerls.enable = true;
helm-ls.enable = true;
html.enable = true;
jsonls.enable = true;
lua-ls.enable = true;
nginx-language-server.enable = true;
nixd.enable = true;
pyright.enable = true;
yamlls.enable = true;
2024-07-12 15:18:42 +02:00
clangd.enable = true;
marksman.enable = true;
texlab.enable = true;
2024-09-09 11:48:28 +02:00
lemminx.enable = true; # XML
2024-07-12 15:18:42 +02:00
java-language-server.enable = false;
zls.enable = false;
rust-analyzer.enable = false;
2024-06-17 00:59:57 +02:00
typos-lsp = {
enable = true;
extraOptions.init_options.diagnosticSeverity = "Hint";
};
};
};
rootOpts = {
colorschemes.catppuccin.settings.integrations.native_lsp.enabled = true;
extraPackages = [ pkgs.go ];
};
}