112 lines
2.2 KiB
Nix
112 lines
2.2 KiB
Nix
{ pkgs, helpers, ... }:
|
|
|
|
{
|
|
plugins.lsp = {
|
|
enable = true;
|
|
servers = {
|
|
cmake = {
|
|
enable = true;
|
|
};
|
|
clangd = {
|
|
enable = true;
|
|
};
|
|
pyright = {
|
|
enable = true;
|
|
};
|
|
nixd = {
|
|
enable = true;
|
|
};
|
|
};
|
|
inlayHints = true;
|
|
keymaps = {
|
|
silent = true;
|
|
lspBuf = {
|
|
gd = {
|
|
action = "definition";
|
|
desc = "Goto Definition";
|
|
};
|
|
gA = {
|
|
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";
|
|
};
|
|
"<f2>" = {
|
|
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";
|
|
};
|
|
};
|
|
};
|
|
onAttach = ''
|
|
require("lsp_signature").on_attach({
|
|
bind = true,
|
|
handler_opts = {
|
|
border = "rounded"
|
|
};
|
|
}, bufnr)
|
|
'';
|
|
};
|
|
|
|
keymaps = [
|
|
{
|
|
mode = [ "n" ];
|
|
key = "<leader>th";
|
|
action = helpers.mkRaw ''
|
|
function()
|
|
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
|
|
end
|
|
'';
|
|
options = {
|
|
desc = "Toggle inlay hints";
|
|
};
|
|
}
|
|
];
|
|
|
|
extraConfigLua = ''
|
|
require("lspconfig").asm_lsp.setup {
|
|
filetypes = { "asm", "s", "S" }
|
|
}
|
|
require("lspconfig").verible.setup { }
|
|
'';
|
|
|
|
extraPlugins = with pkgs.vimPlugins; [
|
|
lsp_signature-nvim
|
|
];
|
|
|
|
extraPackages = with pkgs; [
|
|
asm-lsp
|
|
verible
|
|
];
|
|
}
|