mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-20 16:15:43 +02:00
modules/lsp: add per-server name
option
This allows users to override the name used for a given `lsp.servers.*` entry. The default is still the attr-name. This may be useful to inject raw lua, or to configure the same server in different ways via different attrs.
This commit is contained in:
parent
3722f88c5d
commit
29aa60b43a
2 changed files with 21 additions and 11 deletions
|
@ -66,31 +66,32 @@ in
|
|||
|
||||
config =
|
||||
let
|
||||
enabledServers = lib.filterAttrs (_: v: v.enable) cfg.servers;
|
||||
enabledServers = lib.pipe cfg.servers [
|
||||
builtins.attrValues
|
||||
(builtins.filter (server: server.enable))
|
||||
];
|
||||
in
|
||||
{
|
||||
extraPackages = lib.pipe enabledServers [
|
||||
builtins.attrValues
|
||||
(builtins.catAttrs "package")
|
||||
];
|
||||
extraPackages = builtins.catAttrs "package" enabledServers;
|
||||
|
||||
lsp.luaConfig.content =
|
||||
let
|
||||
mkServerConfig =
|
||||
name: props:
|
||||
server:
|
||||
let
|
||||
luaName = toLuaObject name;
|
||||
luaName = toLuaObject server.name;
|
||||
luaCfg = toLuaObject server.config;
|
||||
in
|
||||
''
|
||||
vim.lsp.config(${luaName}, ${toLuaObject props.config})
|
||||
vim.lsp.config(${luaName}, ${luaCfg})
|
||||
''
|
||||
+ lib.optionalString props.activate ''
|
||||
+ lib.optionalString server.activate ''
|
||||
vim.lsp.enable(${luaName})
|
||||
'';
|
||||
in
|
||||
lib.mkMerge (
|
||||
lib.optional cfg.inlayHints.enable "vim.lsp.inlay_hint.enable(true)"
|
||||
++ lib.mapAttrsToList mkServerConfig enabledServers
|
||||
++ builtins.map mkServerConfig enabledServers
|
||||
);
|
||||
|
||||
extraConfigLua = lib.mkIf (cfg.luaConfig.content != "") ''
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, ... }:
|
||||
{ lib, name, ... }:
|
||||
let
|
||||
inherit (lib) types;
|
||||
in
|
||||
|
@ -6,6 +6,15 @@ in
|
|||
options = {
|
||||
enable = lib.mkEnableOption "the language server";
|
||||
|
||||
name = lib.mkOption {
|
||||
type = types.maybeRaw types.str;
|
||||
description = ''
|
||||
The name of the language server, supplied to functions like `vim.lsp.enable()`.
|
||||
'';
|
||||
default = name;
|
||||
defaultText = lib.literalMD "the attribute name";
|
||||
};
|
||||
|
||||
activate = lib.mkOption {
|
||||
type = types.bool;
|
||||
description = ''
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue