From 583f436e6e74e4cb4f6cc59bc2f1cd2147f7950e Mon Sep 17 00:00:00 2001 From: Ching Pei Yang Date: Sat, 5 Apr 2025 23:41:28 +0200 Subject: [PATCH] language/bash: migrate to vim.lsp.servers --- modules/plugins/languages/bash.nix | 48 +++++++++++++----------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/modules/plugins/languages/bash.nix b/modules/plugins/languages/bash.nix index bfe01032..1ec4f045 100644 --- a/modules/plugins/languages/bash.nix +++ b/modules/plugins/languages/bash.nix @@ -5,31 +5,28 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkOption mkEnableOption literalExpression; + inherit (lib.options) mkOption mkEnableOption; inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; - inherit (lib.lists) isList; - inherit (lib.types) enum either package listOf str bool; + inherit (lib.types) enum package listOf bool; + inherit (lib.generators) mkLuaInline; inherit (lib.nvim.types) diagnostics mkGrammarOption; - inherit (lib.nvim.lua) expToLua; + inherit (lib.nvim.attrsets) mapListToAttrs; cfg = config.vim.languages.bash; defaultServer = "bash-ls"; servers = { - bash-ls = { - package = pkgs.bash-language-server; - lspConfig = '' - lspconfig.bashls.setup{ - capabilities = capabilities; - on_attach = default_on_attach; - cmd = ${ - if isList cfg.lsp.package - then expToLua cfg.lsp.package - else ''{"${cfg.lsp.package}/bin/bash-language-server", "start"}'' + bash-ls.options = { + cmd = [(getExe pkgs.bash-language-server) "start"]; + settings = { + bashIde = { + globPattern = + mkLuaInline "vim.env.GLOB_PATTERN or '*@(.sh|.inc|.bash|.command)'"; }; - } - ''; + }; + filetypes = ["sh" "bash"]; + root_markers = [".git"]; }; }; @@ -60,15 +57,8 @@ in { server = mkOption { description = "Bash LSP server to use"; - type = enum (attrNames servers); - default = defaultServer; - }; - - package = mkOption { - description = "bash-language-server package, or the command to run as a list of strings"; - example = literalExpression ''[lib.getExe pkgs.nodePackages.bash-language-server "start"]''; - type = either package (listOf str); - default = pkgs.bash-language-server; + type = listOf (enum (attrNames servers)); + default = [defaultServer]; }; }; @@ -108,8 +98,12 @@ in { }) (mkIf cfg.lsp.enable { - vim.lsp.lspconfig.enable = true; - vim.lsp.lspconfig.sources.bash-lsp = servers.${cfg.lsp.server}.lspConfig; + vim.lsp.servers = + mapListToAttrs (name: { + inherit name; + value = servers.${name}.options; + }) + cfg.lsp.server; }) (mkIf cfg.format.enable {