133 lines
3.2 KiB
Nix
133 lines
3.2 KiB
Nix
{ 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";
|
|
};
|
|
"<leader>lr" = {
|
|
action = "rename";
|
|
desc = "Rename current symbol";
|
|
};
|
|
# "<leader>lR" = {
|
|
# action = "references";
|
|
# desc = "Search references";
|
|
# };
|
|
"<leader>lh" = {
|
|
action = "signature_help";
|
|
desc = "Signature help";
|
|
};
|
|
"<leader>lG" = {
|
|
action = "workspace_symbol";
|
|
desc = "Search workspace symbols";
|
|
};
|
|
"gK" = {
|
|
action = "signature_help";
|
|
desc = "Signature help";
|
|
};
|
|
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;
|
|
clangd.enable = true;
|
|
marksman.enable = true;
|
|
texlab.enable = true;
|
|
|
|
java-language-server.enable = false;
|
|
zls.enable = false;
|
|
rust-analyzer.enable = false;
|
|
|
|
typos-lsp = {
|
|
enable = true;
|
|
extraOptions.init_options.diagnosticSeverity = "Hint";
|
|
};
|
|
};
|
|
};
|
|
|
|
rootOpts = {
|
|
colorschemes.catppuccin.settings.integrations.native_lsp.enabled = true;
|
|
extraPackages = [ pkgs.go ];
|
|
};
|
|
}
|