neovim/lsp: init

This commit is contained in:
raf 2025-04-05 22:47:25 +03:00
parent 3ca3525aae
commit 38da0b5813
No known key found for this signature in database
GPG key ID: 29D95B64378DB4BF
2 changed files with 45 additions and 0 deletions

View file

@ -5,6 +5,7 @@
./debug.nix
./diagnostics.nix
./highlight.nix
./lsp.nix
./spellcheck.nix
];
}

View file

@ -0,0 +1,44 @@
{
config,
lib,
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.options) mkOption;
inherit (lib.types) attrsOf;
inherit (lib.strings) concatLines;
inherit (lib.attrsets) mapAttrsToList attrNames filterAttrs;
inherit (lib.nvim.languages) lspOptions;
inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.lua) toLuaObject;
cfg = config.vim.lsp;
lspConfigurations =
mapAttrsToList (
name: value: ''
vim.lsp.config["${name}"] = ${toLuaObject value}
''
)
cfg.servers;
enabledServers = filterAttrs (_: u: u.enable) cfg.servers;
in {
options = {
vim.lsp.servers = mkOption {
type = attrsOf lspOptions;
default = {};
description = "";
};
};
config = mkIf (cfg.servers != {}) {
vim.luaConfigRC.lsp-servers = entryAnywhere ''
-- Individual LSP configurations managed by nvf.
${(concatLines lspConfigurations)}
-- Enable configured LSPs explicitly
vim.lsp.enable(${toLuaObject (attrNames enabledServers)})
'';
};
}