diff --git a/modules/plugins/languages/dart.nix b/modules/plugins/languages/dart.nix index b585da76..54c16e93 100644 --- a/modules/plugins/languages/dart.nix +++ b/modules/plugins/languages/dart.nix @@ -4,42 +4,20 @@ lib, ... }: let - inherit (builtins) attrNames; inherit (lib.modules) mkIf mkMerge; - inherit (lib.meta) getExe; + inherit (lib) genAttrs; inherit (lib.trivial) boolToString; inherit (lib.options) mkEnableOption mkOption literalExpression; - inherit (lib.types) enum package nullOr str bool; + inherit (lib.types) enum package nullOr str bool listOf; inherit (lib.strings) optionalString; - inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf; + inherit (lib.nvim.types) mkGrammarOption; inherit (lib.nvim.dag) entryAfter; - inherit (lib.nvim.attrsets) mapListToAttrs; cfg = config.vim.languages.dart; ftcfg = cfg.flutter-tools; defaultServers = ["dart"]; - servers = { - dart = { - enable = true; - cmd = [(getExe pkgs.dart) "language-server" "--protocol=lsp"]; - filetypes = ["dart"]; - root_markers = ["pubspec.yaml"]; - init_options = { - onlyAnalyzeProjectsWithOpenFiles = true; - suggestFromUnimportedLibraries = true; - closingLabels = true; - outline = true; - flutterOutline = true; - }; - settings = { - dart = { - completeFunctionCalls = true; - showTodos = true; - }; - }; - }; - }; + servers = ["dart"]; in { options.vim.languages.dart = { enable = mkEnableOption "Dart language support"; @@ -62,7 +40,7 @@ in { defaultText = literalExpression "config.vim.lsp.enable"; }; servers = mkOption { - type = deprecatedSingleOrListOf "vim.language.dart.lsp.servers" (enum (attrNames servers)); + type = listOf (enum servers); default = defaultServers; description = "Dart LSP server to use"; }; @@ -142,12 +120,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 = ["dart"]; + }); + }; }) (mkIf ftcfg.enable {