diff --git a/helpers/default.nix b/helpers/default.nix index 9b16f1d60a..c40a73a091 100644 --- a/helpers/default.nix +++ b/helpers/default.nix @@ -1,5 +1,4 @@ -pkgs: rec { - efmls-configs-tools = pkgs.callPackage ./efmls-configs {}; +pkgs: { autogenerated-configs = pkgs.callPackage ({stdenv}: stdenv.mkDerivation { pname = "autogenerated-configs"; @@ -10,7 +9,6 @@ pkgs: rec { installPhase = '' mkdir -p $out - cp ${efmls-configs-tools}/share/* $out ''; }) {}; } diff --git a/helpers/efmls-configs/default.nix b/helpers/efmls-configs/default.nix deleted file mode 100644 index dd12d812e0..0000000000 --- a/helpers/efmls-configs/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - stdenv, - python3, - vimPlugins, -}: let - extract = stdenv.mkDerivation { - pname = "extract_efmls_tools"; - version = "1"; - - src = ./extract.py; - - dontUnpack = true; - dontBuild = true; - - buildInputs = [python3]; - - installPhase = '' - mkdir -p $out/bin - cp $src $out/bin/extract_efmls_tools.py - ''; - }; -in - stdenv.mkDerivation { - pname = "efmls-configs-tools"; - inherit (vimPlugins.efmls-configs-nvim) version src; - - nativeBuildInputs = [extract]; - - buildPhase = '' - extract_efmls_tools.py ./lua/efmls-configs > efmls-configs-tools.json - ''; - - installPhase = '' - mkdir -p $out/share - cp efmls-configs-tools.json $out/share - ''; - } diff --git a/helpers/efmls-configs/extract.py b/helpers/efmls-configs/extract.py deleted file mode 100755 index 4cbf417923..0000000000 --- a/helpers/efmls-configs/extract.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python - -import sys -import os -import json - -tool_path = sys.argv[1] - -tools = { - "linters": {}, - "formatters": {}, -} - -identity_langs = [ - "bash", - "blade", - "c", - "clojure", - "cmake", - "crystal", - "csh", - "css", - "d", - "dart", - "fish", - "gitcommit", - "go", - "haskell", - "html", - "java", - "javascript", - "json", - "jsonc", - "ksh", - "less", - "lua", - "make", - "markdown", - "nix", - "pawn", - "php", - "proto", - "python", - "roslyn", - "ruby", - "rust", - "sass", - "scala", - "scss", - "sh", - "slim", - "sml", - "solidity", - "sql", - "tex", - "toml", - "typescript", - "vala", - "vim", - "yaml", - "zsh", - "misc", -] - -lang_map = { - "c#": "cs", - "c++": "cpp", - "docker": "dockerfile", - "objective-c": "objc", - "objective-c++": "objcpp", - "terraform": "tf", -} - -for lang in identity_langs: - lang_map[lang] = lang - -for kind in ["linters", "formatters"]: - for file in os.listdir(tool_path + "/" + kind): - tool_name = file.removesuffix(".lua") - languages = [] - with open(tool_path + "/" + kind + "/" + file) as f: - for line in f.readlines(): - if line.startswith("-- languages:"): - languages = [ - lang_map[l.strip()] - for l in line.split(":")[1].strip().split(",") - ] - break - tools[kind][tool_name] = languages - -print(json.dumps(tools, indent=4, sort_keys=True)) diff --git a/plugins/lsp/language-servers/efmls-configs.nix b/plugins/lsp/language-servers/efmls-configs.nix index 2a6400e89c..d85388d771 100644 --- a/plugins/lsp/language-servers/efmls-configs.nix +++ b/plugins/lsp/language-servers/efmls-configs.nix @@ -6,13 +6,9 @@ ... }: with lib; let - tools = trivial.importJSON ./efmls-configs-tools.json; - inherit (tools) linters formatters; + tools = trivial.importJSON "${pkgs.vimPlugins.efmls-configs-nvim.src}/doc/supported-list.json"; - searchLanguages = tools: (lists.unique (builtins.concatLists (builtins.attrValues tools))); - languages = - lists.filter - (v: v != "misc") (lists.unique ((searchLanguages linters) ++ (searchLanguages formatters))); + languages = builtins.attrNames tools; in { options.plugins.efmls-configs = { enable = mkEnableOption "efmls-configs, premade configurations for efm-langserver"; @@ -33,11 +29,15 @@ in { } */ setup = let - languageTools = lang: tools: - builtins.attrNames (attrsets.filterAttrs (_: lists.any (e: e == lang)) tools); + languageTools = lang: kind: + builtins.map (v: v.name) ( + if builtins.hasAttr kind tools.${lang} + then tools.${lang}.${kind} + else [] + ); - miscLinters = languageTools "misc" linters; - miscFormatters = languageTools "misc" formatters; + miscLinters = languageTools "misc" "linters"; + miscFormatters = languageTools "misc" "formatters"; mkChooseOption = lang: kind: possible: let toolType = with types; either (enum possible) helpers.rawType; @@ -58,8 +58,8 @@ in { in { name = lang; value = { - linter = mkChooseOption lang "linter" ((langTools linters) ++ miscLinters); - formatter = mkChooseOption lang "formatter" ((langTools formatters) ++ miscFormatters); + linter = mkChooseOption lang "linter" ((langTools "linters") ++ miscLinters); + formatter = mkChooseOption lang "formatter" ((langTools "formatters") ++ miscFormatters); }; }) languages))