nix-config/modules/default/common/nixvim/lsp.nix
2025-01-07 23:28:53 +01:00

90 lines
2.2 KiB
Nix

{ ... }:
{
programs.nixvim = {
plugins = {
hmts.enable = true;
lsp-lines = { enable = true; };
lsp-format = { enable = true; };
lsp = {
enable = true;
inlayHints = true;
servers = {
clangd = { enable = true; };
html = { enable = true; };
lua_ls = { enable = true; };
nixd = {
enable = true;
settings = {
formatting.command = [ "nixpkgs-fmt" ];
nixpkgs.expr = "import <nixpkgs> {}";
};
};
pyright = { enable = true; };
gopls = { enable = true; };
jsonls = { enable = true; };
rust_analyzer = {
enable = true;
installCargo = true;
installRustc = true;
};
yamlls = { enable = true; };
};
keymaps = {
silent = true;
lspBuf = {
gd = {
action = "definition";
desc = "Goto Definition";
};
gr = {
action = "references";
desc = "Goto References";
};
gD = {
action = "declaration";
desc = "Goto Declaration";
};
gI = {
action = "implementation";
desc = "Goto Implementation";
};
gT = {
action = "type_definition";
desc = "Type Definition";
};
K = {
action = "hover";
desc = "Hover";
};
"<leader>cw" = {
action = "workspace_symbol";
desc = "Workspace Symbol";
};
"<leader>cr" = {
action = "rename";
desc = "Rename";
};
};
diagnostic = {
"<leader>cd" = {
action = "open_float";
desc = "Line Diagnostics";
};
"[d" = {
action = "goto_next";
desc = "Next Diagnostic";
};
"]d" = {
action = "goto_prev";
desc = "Previous Diagnostic";
};
};
};
};
};
};
}