diff --git a/modules/plugins/languages/vala.nix b/modules/plugins/languages/vala.nix index b3376daf..4e3eca3d 100644 --- a/modules/plugins/languages/vala.nix +++ b/modules/plugins/languages/vala.nix @@ -4,64 +4,16 @@ lib, ... }: let - inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; - inherit (lib.meta) getExe; - inherit (lib.types) enum; - inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf; - inherit (lib.nvim.attrsets) mapListToAttrs; - inherit (lib.generators) mkLuaInline; + inherit (lib) genAttrs; + inherit (lib.types) enum listOf; + inherit (lib.nvim.types) mkGrammarOption; cfg = config.vim.languages.vala; - defaultServers = ["vala_ls"]; - servers = { - vala_ls = { - enable = true; - cmd = [ - (getExe (pkgs.symlinkJoin { - name = "vala-language-server-wrapper"; - paths = [pkgs.vala-language-server]; - meta.mainProgram = "vala-language-server-wrapper"; - buildInputs = [pkgs.makeBinaryWrapper]; - postBuild = '' - wrapProgram $out/bin/vala-language-server \ - --prefix PATH : ${pkgs.uncrustify}/bin - ''; - })) - ]; - filetypes = ["vala" "genie"]; - root_dir = mkLuaInline '' - function(bufnr, on_dir) - local meson_matcher = function(path) - local pattern = 'meson.build' - local f = vim.fn.glob(table.concat({ path, pattern }, '/')) - if f == ''' then - return nil - end - for line in io.lines(f) do - -- skip meson comments - if not line:match '^%s*#.*' then - local str = line:gsub('%s+', ''') - if str ~= ''' then - if str:match '^project%(' then - return path - else - break - end - end - end - end - end - - local fname = vim.api.nvim_buf_get_name(bufnr) - local root = vim.iter(vim.fs.parents(fname)):find(meson_matcher) - on_dir(root or vim.fs.dirname(vim.fs.find('.git', { path = fname, upward = true })[1])) - end - ''; - }; - }; + defaultServers = ["vala-language-server"]; + servers = ["vala-language-server"]; in { options.vim.languages.vala = { enable = mkEnableOption "Vala language support"; @@ -84,7 +36,7 @@ in { defaultText = literalExpression "config.vim.lsp.enable"; }; servers = mkOption { - type = deprecatedSingleOrListOf "vim.language.vala.lsp.servers" (enum (attrNames servers)); + type = listOf (enum servers); default = defaultServers; description = "Vala LSP server to use"; }; @@ -98,12 +50,12 @@ in { }) (mkIf cfg.lsp.enable { - vim.lsp.servers = - mapListToAttrs (n: { - name = n; - value = servers.${n}; - }) - cfg.lsp.servers; + vim.lsp = { + presets = genAttrs cfg.lsp.servers (_: {enable = true;}); + servers = genAttrs cfg.lsp.servers (_: { + filetypes = ["vala"]; + }); + }; }) ]); }