127 lines
3.3 KiB
Nix
127 lines
3.3 KiB
Nix
{
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}: {
|
|
programs.nixvim = {
|
|
extraConfigLuaPre =
|
|
# lua
|
|
''
|
|
vim.fn.sign_define("DiagnosticSignError", { text = " ", texthl = "DiagnosticError", linehl = "", numhl = "" })
|
|
vim.fn.sign_define("DiagnosticSignWarn", { text = " ", texthl = "DiagnosticWarn", linehl = "", numhl = "" })
|
|
vim.fn.sign_define("DiagnosticSignHint", { text = " ", texthl = "DiagnosticHint", linehl = "", numhl = "" })
|
|
vim.fn.sign_define("DiagnosticSignInfo", { text = " ", texthl = "DiagnosticInfo", linehl = "", numhl = "" })
|
|
'';
|
|
plugins = {
|
|
lspkind.enable = true;
|
|
lsp-lines.enable = true;
|
|
lsp-format.enable = false; # conform-nvim does this
|
|
lsp = {
|
|
enable = true;
|
|
keymaps = {
|
|
silent = true;
|
|
diagnostic = {
|
|
# Navigate in diagnostics
|
|
"<leader>lp" = "goto_prev";
|
|
"<leader>ln" = "goto_next";
|
|
};
|
|
|
|
extra = [
|
|
{
|
|
action.__raw =
|
|
# lua
|
|
''
|
|
function()
|
|
vim.lsp.buf.format({
|
|
async = true,
|
|
range = {
|
|
["start"] = vim.api.nvim_buf_get_mark(0, "<"),
|
|
["end"] = vim.api.nvim_buf_get_mark(0, ">"),
|
|
}
|
|
})
|
|
end
|
|
'';
|
|
mode = "v";
|
|
key = "<leader>lf";
|
|
options = {
|
|
desc = "Format selection";
|
|
};
|
|
}
|
|
];
|
|
|
|
lspBuf = {
|
|
"<leader>la" = "code_action";
|
|
"<leader>ld" = "definition";
|
|
"<leader>lf" = "format";
|
|
"<leader>lD" = "references";
|
|
"<leader>lt" = "type_definition";
|
|
"<leader>li" = "implementation";
|
|
"<leader>lh" = "hover";
|
|
"<leader>lr" = "rename";
|
|
};
|
|
};
|
|
servers = {
|
|
nil-ls = {
|
|
enable = true;
|
|
filetypes = ["nix"];
|
|
settings = {
|
|
formatting = {
|
|
command = ["${lib.getExe pkgs.nixfmt-rfc-style}"];
|
|
};
|
|
};
|
|
};
|
|
|
|
pyright.enable = true;
|
|
hls.enable = true;
|
|
leanls.enable = true;
|
|
};
|
|
};
|
|
which-key.settings.spec = [
|
|
{
|
|
__unkeyed = "<leader>l";
|
|
group = " LSP";
|
|
}
|
|
{
|
|
__unkeyed = "<leader>la";
|
|
desc = "Code Action";
|
|
}
|
|
{
|
|
__unkeyed = "<leader>ld";
|
|
desc = "Definition";
|
|
}
|
|
{
|
|
__unkeyed = "<leader>lD";
|
|
desc = "References";
|
|
}
|
|
{
|
|
__unkeyed = "<leader>lf";
|
|
desc = "Format";
|
|
}
|
|
{
|
|
__unkeyed = "<leader>lp";
|
|
desc = "Prev";
|
|
}
|
|
{
|
|
__unkeyed = "<leader>ln";
|
|
desc = "Next";
|
|
}
|
|
{
|
|
__unkeyed = "<leader>lt";
|
|
desc = "Type Definition";
|
|
}
|
|
{
|
|
__unkeyed = "<leader>li";
|
|
desc = "Implementation";
|
|
}
|
|
{
|
|
__unkeyed = "<leader>lh";
|
|
desc = "Hover";
|
|
}
|
|
{
|
|
__unkeyed = "<leader>lr";
|
|
desc = "Rename";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|