Loading pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix +176 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,9 @@ rev = "3bd2036e710f609ea08fcfca5a1eb1169ecc114f"; hash = "sha256-VdfPZ39AEjvl+9r/LZNRGNIQsiTB9S065AnUc4MeohU="; }; passthru.requires = [ "html" ]; meta.homepage = "https://github.com/dlvandenberg/tree-sitter-angular"; }; apex = buildGrammar { Loading @@ -75,6 +78,9 @@ rev = "53eb391da4c6c5857f8defa2c583c46c2594f565"; hash = "sha256-qQVUWCOZ4y9FTsIf0FI3vmYBhLYz4hcqRTo+5C2MYvc="; }; passthru.requires = [ "cpp" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-arduino"; }; asm = buildGrammar { Loading @@ -97,6 +103,9 @@ rev = "213f6e6973d9b456c6e50e86f19f66877e7ef0ee"; hash = "sha256-TpXs3jbYn39EHxTdtSfR7wLA1L8v9uyK/ATPp5v4WqE="; }; passthru.requires = [ "html" ]; meta.homepage = "https://github.com/virchau13/tree-sitter-astro"; }; authzed = buildGrammar { Loading Loading @@ -405,6 +414,9 @@ rev = "12bd6f7e96080d2e70ec51d4068f2f66120dde35"; hash = "sha256-vmXTv6Idf0Le5ZVa8Rc1DVefqzUxkGeLGsYcSDNBpQU="; }; passthru.requires = [ "c" ]; meta.homepage = "https://github.com/tree-sitter/tree-sitter-cpp"; }; css = buildGrammar { Loading @@ -428,6 +440,9 @@ hash = "sha256-9mW0kT4av/ULFqLXdMuyLrMPtQxrIOKY60GQ4QDB33o="; }; location = "csv"; passthru.requires = [ "tsv" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-csv"; }; cuda = buildGrammar { Loading @@ -439,6 +454,9 @@ rev = "48b066f334f4cf2174e05a50218ce2ed98b6fd01"; hash = "sha256-sX9AOe8dJJsRbzGq20qakWBnLiwYQ90mQspAuYxQzoQ="; }; passthru.requires = [ "cpp" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-cuda"; }; cue = buildGrammar { Loading Loading @@ -882,6 +900,9 @@ rev = "69086d7627c03e1f4baf766bcef14c60d9e92331"; hash = "sha256-U0P9QoOZST1h6XI83CI0/6/CDTvqkv1Yiq62h6YdHpI="; }; passthru.requires = [ "gap" ]; meta.homepage = "https://github.com/gap-system/tree-sitter-gaptst"; }; gdscript = buildGrammar { Loading Loading @@ -1003,6 +1024,9 @@ rev = "12d98944c1d5077b957cbdb90d663a7c4d50118c"; hash = "sha256-3cJI6vcbU62kUIhphprNeAl9RyY9TThrzVeArdLfxnI="; }; passthru.requires = [ "typescript" ]; meta.homepage = "https://github.com/NullVoxPopuli/tree-sitter-glimmer-typescript"; }; glsl = buildGrammar { Loading @@ -1014,6 +1038,9 @@ rev = "24a6c8ef698e4480fecf8340d771fbcb5de8fbb4"; hash = "sha256-TjF79WH3bX4nueYr8CbPptkNb2lNkHQNB0VZoMB35Nk="; }; passthru.requires = [ "c" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-glsl"; }; gn = buildGrammar { Loading Loading @@ -1268,6 +1295,9 @@ rev = "02fa3b79b3ff9a296066da6277adfc3f26cbc9e0"; hash = "sha256-NsTf3DR3gHVMYZDmTNvThB5bJcDwTcJ1+3eJhvsiDn8="; }; passthru.requires = [ "json" ]; meta.homepage = "https://github.com/winston0410/tree-sitter-hjson"; }; hlsl = buildGrammar { Loading @@ -1279,6 +1309,9 @@ rev = "bab9111922d53d43668fabb61869bec51bbcb915"; hash = "sha256-BWjgXtMN6y/0ahD44Cm8a+MxxVMpCNhkf33V/vsCBTU="; }; passthru.requires = [ "cpp" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-hlsl"; }; hlsplaylist = buildGrammar { Loading Loading @@ -1422,6 +1455,9 @@ rev = "9b2f9aec2106b94b4e099fe75e73ebd8ae707c04"; hash = "sha256-vxe+g7o0gXgB4GjhjkxqLqcLL2+8wqMB3tm1xQFSitI="; }; passthru.requires = [ "c" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-ispc"; }; janet_simple = buildGrammar { Loading Loading @@ -1478,6 +1514,9 @@ hash = "sha256-a4/+tsouuYkkVEStpOEUiIos9H4Hw7NhJOFaasylWUk="; }; location = "tree-sitter-jinja"; passthru.requires = [ "jinja_inline" ]; meta.homepage = "https://github.com/cathaysia/tree-sitter-jinja"; }; jinja_inline = buildGrammar { Loading Loading @@ -1788,6 +1827,9 @@ rev = "a8914d6c1fc5131f8e1c13f769fa704c9f5eb02f"; hash = "sha256-5qbZA2mxTvrsfUrpgD+4y3oeJsifA91c/hfcVwQBRgI="; }; passthru.requires = [ "lua" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-luau"; }; m68k = buildGrammar { Loading Loading @@ -1822,6 +1864,9 @@ hash = "sha256-IYqh6JT74deu1UU4Nyls9Eg88BvQeYEta2UXZAbuZek="; }; location = "tree-sitter-markdown"; passthru.requires = [ "markdown_inline" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-markdown"; }; markdown_inline = buildGrammar { Loading Loading @@ -1945,6 +1990,9 @@ rev = "4ad352773688deb84a95eeaa9872acda5b466439"; hash = "sha256-dinMmbD36o1QkcLk2mgycgHZ9sW5Mg6lfnxssynaj58="; }; passthru.requires = [ "nim_format_string" ]; meta.homepage = "https://github.com/alaviss/tree-sitter-nim"; }; nim_format_string = buildGrammar { Loading Loading @@ -2011,6 +2059,9 @@ rev = "181a81b8f23a2d593e7ab4259981f50122909fda"; hash = "sha256-7W8ozhQJL+f+tQYz61EZexk9NkMu1pCAP5IIy1m3qak="; }; passthru.requires = [ "c" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-objc"; }; objdump = buildGrammar { Loading Loading @@ -2046,6 +2097,9 @@ hash = "sha256-8u1jtUFMjykVG6aCDzqcb4vFCY401CZ2o+JPGMadg6o="; }; location = "grammars/interface"; passthru.requires = [ "ocaml" ]; meta.homepage = "https://github.com/tree-sitter/tree-sitter-ocaml"; }; ocamllex = buildGrammar { Loading Loading @@ -2125,6 +2179,9 @@ hash = "sha256-XEKlsqC7HJ3mShmcwmfpezNP9DHE8f73f7/ru4MuxEo="; }; location = "php"; passthru.requires = [ "php_only" ]; meta.homepage = "https://github.com/tree-sitter/tree-sitter-php"; }; php_only = buildGrammar { Loading Loading @@ -2259,6 +2316,9 @@ hash = "sha256-SEqqmkfV/wsr1ObcBN5My29RY9TWfxnQlsnEEIZyR18="; }; location = "grammars/problog"; passthru.requires = [ "prolog" ]; meta.homepage = "https://github.com/foxyseta/tree-sitter-prolog"; }; prolog = buildGrammar { Loading Loading @@ -2327,6 +2387,9 @@ hash = "sha256-9mW0kT4av/ULFqLXdMuyLrMPtQxrIOKY60GQ4QDB33o="; }; location = "psv"; passthru.requires = [ "tsv" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-csv"; }; pug = buildGrammar { Loading Loading @@ -2712,6 +2775,9 @@ rev = "c478c6868648eff49eb04a4df90d703dc45b312a"; hash = "sha256-BFtMT6eccBWUyq6b8UXRAbB1R1XD3CrrFf1DM3aUI5c="; }; passthru.requires = [ "css" ]; meta.homepage = "https://github.com/serenadeai/tree-sitter-scss"; }; sflog = buildGrammar { Loading Loading @@ -3126,6 +3192,9 @@ hash = "sha256-Kq0KtkF6xtZcN2s8KzYGyguJH2iOTlA2WRytZ+KGTUE="; }; location = "dialects/terraform"; passthru.requires = [ "hcl" ]; meta.homepage = "https://github.com/MichaHoffmann/tree-sitter-hcl"; }; textproto = buildGrammar { Loading Loading @@ -3227,6 +3296,9 @@ hash = "sha256-A0M6IBoY87ekSV4DfGHDU5zzFWdLjGqSyVr6VENgA+s="; }; location = "tsx"; passthru.requires = [ "typescript" ]; meta.homepage = "https://github.com/tree-sitter/tree-sitter-typescript"; }; turtle = buildGrammar { Loading Loading @@ -3528,6 +3600,9 @@ hash = "sha256-0ztP30xWqVWy5upWPp0JwhpQphOJufzlcYn+KvLejVs="; }; location = "xml"; passthru.requires = [ "dtd" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-xml"; }; xresources = buildGrammar { Loading Loading @@ -3642,18 +3717,29 @@ }; angular = buildQueries { language = "angular"; requires = [ "html" "html_tags" ]; }; apex = buildQueries { language = "apex"; }; arduino = buildQueries { language = "arduino"; requires = [ "cpp" ]; }; asm = buildQueries { language = "asm"; }; astro = buildQueries { language = "astro"; requires = [ "html" "html_tags" ]; }; authzed = buildQueries { language = "authzed"; Loading Loading @@ -3738,15 +3824,24 @@ }; cpp = buildQueries { language = "cpp"; requires = [ "c" ]; }; css = buildQueries { language = "css"; }; csv = buildQueries { language = "csv"; requires = [ "tsv" ]; }; cuda = buildQueries { language = "cuda"; requires = [ "cpp" ]; }; cue = buildQueries { language = "cue"; Loading Loading @@ -3870,6 +3965,9 @@ }; gaptst = buildQueries { language = "gaptst"; requires = [ "gap" ]; }; gdscript = buildQueries { language = "gdscript"; Loading Loading @@ -3900,12 +3998,21 @@ }; glimmer_javascript = buildQueries { language = "glimmer_javascript"; requires = [ "ecma" ]; }; glimmer_typescript = buildQueries { language = "glimmer_typescript"; requires = [ "typescript" ]; }; glsl = buildQueries { language = "glsl"; requires = [ "c" ]; }; gn = buildQueries { language = "gn"; Loading Loading @@ -3975,9 +4082,15 @@ }; hjson = buildQueries { language = "hjson"; requires = [ "json" ]; }; hlsl = buildQueries { language = "hlsl"; requires = [ "cpp" ]; }; hlsplaylist = buildQueries { language = "hlsplaylist"; Loading @@ -3990,6 +4103,9 @@ }; html = buildQueries { language = "html"; requires = [ "html_tags" ]; }; html_tags = buildQueries { language = "html_tags"; Loading Loading @@ -4020,6 +4136,9 @@ }; ispc = buildQueries { language = "ispc"; requires = [ "c" ]; }; janet_simple = buildQueries { language = "janet_simple"; Loading @@ -4032,9 +4151,16 @@ }; javascript = buildQueries { language = "javascript"; requires = [ "ecma" "jsx" ]; }; jinja = buildQueries { language = "jinja"; requires = [ "jinja_inline" ]; }; jinja_inline = buildQueries { language = "jinja_inline"; Loading Loading @@ -4122,6 +4248,9 @@ }; luau = buildQueries { language = "luau"; requires = [ "lua" ]; }; m68k = buildQueries { language = "m68k"; Loading @@ -4131,6 +4260,9 @@ }; markdown = buildQueries { language = "markdown"; requires = [ "markdown_inline" ]; }; markdown_inline = buildQueries { language = "markdown_inline"; Loading Loading @@ -4164,6 +4296,9 @@ }; nim = buildQueries { language = "nim"; requires = [ "nim_format_string" ]; }; nim_format_string = buildQueries { language = "nim_format_string"; Loading @@ -4182,6 +4317,9 @@ }; objc = buildQueries { language = "objc"; requires = [ "c" ]; }; objdump = buildQueries { language = "objdump"; Loading @@ -4191,6 +4329,9 @@ }; ocaml_interface = buildQueries { language = "ocaml_interface"; requires = [ "ocaml" ]; }; ocamllex = buildQueries { language = "ocamllex"; Loading @@ -4212,6 +4353,9 @@ }; php = buildQueries { language = "php"; requires = [ "php_only" ]; }; php_only = buildQueries { language = "php_only"; Loading Loading @@ -4248,6 +4392,9 @@ }; problog = buildQueries { language = "problog"; requires = [ "prolog" ]; }; prolog = buildQueries { language = "prolog"; Loading @@ -4266,6 +4413,9 @@ }; psv = buildQueries { language = "psv"; requires = [ "tsv" ]; }; pug = buildQueries { language = "pug"; Loading @@ -4290,6 +4440,9 @@ }; qmljs = buildQueries { language = "qmljs"; requires = [ "ecma" ]; }; query = buildQueries { language = "query"; Loading Loading @@ -4371,6 +4524,9 @@ }; scss = buildQueries { language = "scss"; requires = [ "css" ]; }; sflog = buildQueries { language = "sflog"; Loading Loading @@ -4443,6 +4599,9 @@ }; svelte = buildQueries { language = "svelte"; requires = [ "html_tags" ]; }; sway = buildQueries { language = "sway"; Loading Loading @@ -4482,6 +4641,9 @@ }; terraform = buildQueries { language = "terraform"; requires = [ "hcl" ]; }; textproto = buildQueries { language = "textproto"; Loading Loading @@ -4509,6 +4671,11 @@ }; tsx = buildQueries { language = "tsx"; requires = [ "ecma" "jsx" "typescript" ]; }; turtle = buildQueries { language = "turtle"; Loading @@ -4518,6 +4685,9 @@ }; typescript = buildQueries { language = "typescript"; requires = [ "ecma" ]; }; typespec = buildQueries { language = "typespec"; Loading Loading @@ -4569,6 +4739,9 @@ }; vue = buildQueries { language = "vue"; requires = [ "html_tags" ]; }; wgsl = buildQueries { language = "wgsl"; Loading @@ -4590,6 +4763,9 @@ }; xml = buildQueries { language = "xml"; requires = [ "dtd" ]; }; xresources = buildQueries { language = "xresources"; Loading pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix +43 −8 Original line number Diff line number Diff line Loading @@ -17,12 +17,15 @@ let inherit (neovimUtils) grammarToPlugin; buildQueries = { language }: { language, requires ? [ ], }: vimUtils.toVimPlugin ( runCommand "nvim-treesitter-queries-${language}" { passthru = { inherit language; inherit language requires; isTreesitterQuery = true; }; meta.description = "Queries for ${language} from nvim-treesitter"; Loading @@ -45,18 +48,50 @@ let inherit (generated) parsers queries; parsersWithMeta = lib.mapAttrs ( queriesWithDeps = lib.mapAttrs ( lang: query: let requires = query.requires or [ ]; dependencies = map (req: queries.${req}) requires; in if dependencies != [ ] then query.overrideAttrs (old: { passthru = old.passthru or { } // { inherit dependencies; }; }) else query ) queries; parsersWithQueries = lib.mapAttrs ( lang: parser: if lib.hasAttr lang queries then if lib.hasAttr lang queriesWithDeps then parser.overrideAttrs (old: { passthru = (old.passthru or { }) // { associatedQuery = queries.${lang}; passthru = old.passthru or { } // { associatedQuery = queriesWithDeps.${lang}; }; }) else parser ) parsers; parsersWithMeta = lib.mapAttrs ( lang: parser: let requires = parser.requires or [ ]; dependencies = map (req: grammarToPlugin parsersWithQueries.${req}) requires; in if dependencies != [ ] then parser.overrideAttrs (old: { passthru = old.passthru or { } // { inherit dependencies; }; }) else parser ) parsersWithQueries; # add aliases so grammars from `tree-sitter` are overwritten in `withPlugins` # for example, for ocaml_interface, the following aliases will be added # ocaml-interface Loading Loading @@ -92,7 +127,7 @@ let grammarPlugins = map grammarToPlugin selectedGrammars; queryPlugins = lib.pipe selectedGrammars [ (map (g: g.passthru.associatedQuery or null)) (map (g: g.associatedQuery or null)) (lib.filter (q: q != null)) ]; in Loading @@ -115,9 +150,9 @@ in grammarToPlugin withPlugins withAllGrammars queries ; queries = queriesWithDeps; parsers = grammarPlugins; tests = { Loading pkgs/applications/editors/vim/plugins/utils/nvim-treesitter/update.py +54 −16 Original line number Diff line number Diff line Loading @@ -15,12 +15,10 @@ log = logging.getLogger("vim-updater") NURR_JSON_URL = ( "https://raw.githubusercontent.com/lumen-oss/nurr/main/tree-sitter-parsers.json" ) NVIM_TREESITTER_QUERIES_URL = ( "https://api.github.com/repos/nvim-treesitter/nvim-treesitter/contents/runtime/queries" ) NVIM_TREESITTER_QUERIES_URL = "https://api.github.com/repos/nvim-treesitter/nvim-treesitter/contents/runtime/queries" def generate_grammar(lang, parser_info): def generate_grammar(lang, parser_info, parsers_map): """Generate grammar for a language based on the parser info""" if "install_info" not in parser_info: log.warning(f"Parser {lang} does not have install_info, skipping") Loading @@ -36,9 +34,7 @@ def generate_grammar(lang, parser_info): version = "0.0.0+rev={rev[:7]}"; src = """ generated += subprocess.check_output( ["nurl", url, rev, "--indent=6"], text=True ) generated += subprocess.check_output(["nurl", url, rev, "--indent=6"], text=True) generated += ";" location = install_info.get("location", "") Loading @@ -50,6 +46,23 @@ def generate_grammar(lang, parser_info): generated += """ generate = true;""" # Add requires field - only include parsers requires = parser_info.get("requires", []) if requires: # Filter to only include parser dependencies (those with install_info) parser_requires = [ req for req in requires if req in parsers_map and "install_info" in parsers_map[req] ] if parser_requires: generated += """ passthru.requires = [ """ for req in parser_requires: generated += f' "{req}"\n' generated += " ];" generated += f""" meta.homepage = "{url}"; }}; Loading @@ -58,12 +71,28 @@ def generate_grammar(lang, parser_info): return generated def generate_query(lang): def generate_query(lang: str, parser_info: dict | None, queries_set: set[str]): """Generate query derivation for a language""" return f""" {lang} = buildQueries {{ language = "{lang}"; }}; generated = f""" {lang} = buildQueries {{ language = "{lang}";""" # Add requires field for queries - include everything that has queries if parser_info and "requires" in parser_info: requires = parser_info["requires"] # Filter to only include langs that have queries query_requires = [req for req in requires if queries_set and req in queries_set] if query_requires: generated += """ requires = [ """ for req in query_requires: generated += f' "{req}"\n' generated += " ];" generated += """ }; """ return generated def fetch_nurr_parsers(): Loading Loading @@ -111,9 +140,9 @@ def fetch_available_queries(): return languages def process_parser_info(parser_info): def process_parser_info(parser_info, parsers_map): """Process a single parser info entry and generate grammar for it""" return generate_grammar(parser_info["lang"], parser_info) return generate_grammar(parser_info["lang"], parser_info, parsers_map) def update_grammars(): Loading @@ -121,6 +150,9 @@ def update_grammars(): parsers_info = fetch_nurr_parsers() queries_list = fetch_available_queries() # Create a mapping of lang -> parser_info for quick lookup parsers_map = {p["lang"]: p for p in parsers_info} generated_file = """# generated by pkgs/applications/editors/vim/plugins/utils/nvim-treesitter/update.py # Using parser data from https://github.com/nvim-neorocks/nurr/blob/main/tree-sitter-parsers.json Loading @@ -141,7 +173,9 @@ def update_grammars(): # Process parsers in parallel for better performance with ThreadPoolExecutor(max_workers=5) as executor: for generated in executor.map(process_parser_info, parsers_info): for generated in executor.map( lambda p: process_parser_info(p, parsers_map), parsers_info ): generated_file += generated generated_file += """ }; Loading @@ -149,9 +183,13 @@ def update_grammars(): queries = { """ # Process queries # Convert queries list to a set for fast lookup queries_set = set(queries_list) # Process queries - include parser info if available for requires field for lang in queries_list: generated_file += generate_query(lang) parser_info = parsers_map.get(lang) generated_file += generate_query(lang, parser_info, queries_set) generated_file += " };\n}\n" return generated_file Loading Loading
pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix +176 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,9 @@ rev = "3bd2036e710f609ea08fcfca5a1eb1169ecc114f"; hash = "sha256-VdfPZ39AEjvl+9r/LZNRGNIQsiTB9S065AnUc4MeohU="; }; passthru.requires = [ "html" ]; meta.homepage = "https://github.com/dlvandenberg/tree-sitter-angular"; }; apex = buildGrammar { Loading @@ -75,6 +78,9 @@ rev = "53eb391da4c6c5857f8defa2c583c46c2594f565"; hash = "sha256-qQVUWCOZ4y9FTsIf0FI3vmYBhLYz4hcqRTo+5C2MYvc="; }; passthru.requires = [ "cpp" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-arduino"; }; asm = buildGrammar { Loading @@ -97,6 +103,9 @@ rev = "213f6e6973d9b456c6e50e86f19f66877e7ef0ee"; hash = "sha256-TpXs3jbYn39EHxTdtSfR7wLA1L8v9uyK/ATPp5v4WqE="; }; passthru.requires = [ "html" ]; meta.homepage = "https://github.com/virchau13/tree-sitter-astro"; }; authzed = buildGrammar { Loading Loading @@ -405,6 +414,9 @@ rev = "12bd6f7e96080d2e70ec51d4068f2f66120dde35"; hash = "sha256-vmXTv6Idf0Le5ZVa8Rc1DVefqzUxkGeLGsYcSDNBpQU="; }; passthru.requires = [ "c" ]; meta.homepage = "https://github.com/tree-sitter/tree-sitter-cpp"; }; css = buildGrammar { Loading @@ -428,6 +440,9 @@ hash = "sha256-9mW0kT4av/ULFqLXdMuyLrMPtQxrIOKY60GQ4QDB33o="; }; location = "csv"; passthru.requires = [ "tsv" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-csv"; }; cuda = buildGrammar { Loading @@ -439,6 +454,9 @@ rev = "48b066f334f4cf2174e05a50218ce2ed98b6fd01"; hash = "sha256-sX9AOe8dJJsRbzGq20qakWBnLiwYQ90mQspAuYxQzoQ="; }; passthru.requires = [ "cpp" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-cuda"; }; cue = buildGrammar { Loading Loading @@ -882,6 +900,9 @@ rev = "69086d7627c03e1f4baf766bcef14c60d9e92331"; hash = "sha256-U0P9QoOZST1h6XI83CI0/6/CDTvqkv1Yiq62h6YdHpI="; }; passthru.requires = [ "gap" ]; meta.homepage = "https://github.com/gap-system/tree-sitter-gaptst"; }; gdscript = buildGrammar { Loading Loading @@ -1003,6 +1024,9 @@ rev = "12d98944c1d5077b957cbdb90d663a7c4d50118c"; hash = "sha256-3cJI6vcbU62kUIhphprNeAl9RyY9TThrzVeArdLfxnI="; }; passthru.requires = [ "typescript" ]; meta.homepage = "https://github.com/NullVoxPopuli/tree-sitter-glimmer-typescript"; }; glsl = buildGrammar { Loading @@ -1014,6 +1038,9 @@ rev = "24a6c8ef698e4480fecf8340d771fbcb5de8fbb4"; hash = "sha256-TjF79WH3bX4nueYr8CbPptkNb2lNkHQNB0VZoMB35Nk="; }; passthru.requires = [ "c" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-glsl"; }; gn = buildGrammar { Loading Loading @@ -1268,6 +1295,9 @@ rev = "02fa3b79b3ff9a296066da6277adfc3f26cbc9e0"; hash = "sha256-NsTf3DR3gHVMYZDmTNvThB5bJcDwTcJ1+3eJhvsiDn8="; }; passthru.requires = [ "json" ]; meta.homepage = "https://github.com/winston0410/tree-sitter-hjson"; }; hlsl = buildGrammar { Loading @@ -1279,6 +1309,9 @@ rev = "bab9111922d53d43668fabb61869bec51bbcb915"; hash = "sha256-BWjgXtMN6y/0ahD44Cm8a+MxxVMpCNhkf33V/vsCBTU="; }; passthru.requires = [ "cpp" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-hlsl"; }; hlsplaylist = buildGrammar { Loading Loading @@ -1422,6 +1455,9 @@ rev = "9b2f9aec2106b94b4e099fe75e73ebd8ae707c04"; hash = "sha256-vxe+g7o0gXgB4GjhjkxqLqcLL2+8wqMB3tm1xQFSitI="; }; passthru.requires = [ "c" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-ispc"; }; janet_simple = buildGrammar { Loading Loading @@ -1478,6 +1514,9 @@ hash = "sha256-a4/+tsouuYkkVEStpOEUiIos9H4Hw7NhJOFaasylWUk="; }; location = "tree-sitter-jinja"; passthru.requires = [ "jinja_inline" ]; meta.homepage = "https://github.com/cathaysia/tree-sitter-jinja"; }; jinja_inline = buildGrammar { Loading Loading @@ -1788,6 +1827,9 @@ rev = "a8914d6c1fc5131f8e1c13f769fa704c9f5eb02f"; hash = "sha256-5qbZA2mxTvrsfUrpgD+4y3oeJsifA91c/hfcVwQBRgI="; }; passthru.requires = [ "lua" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-luau"; }; m68k = buildGrammar { Loading Loading @@ -1822,6 +1864,9 @@ hash = "sha256-IYqh6JT74deu1UU4Nyls9Eg88BvQeYEta2UXZAbuZek="; }; location = "tree-sitter-markdown"; passthru.requires = [ "markdown_inline" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-markdown"; }; markdown_inline = buildGrammar { Loading Loading @@ -1945,6 +1990,9 @@ rev = "4ad352773688deb84a95eeaa9872acda5b466439"; hash = "sha256-dinMmbD36o1QkcLk2mgycgHZ9sW5Mg6lfnxssynaj58="; }; passthru.requires = [ "nim_format_string" ]; meta.homepage = "https://github.com/alaviss/tree-sitter-nim"; }; nim_format_string = buildGrammar { Loading Loading @@ -2011,6 +2059,9 @@ rev = "181a81b8f23a2d593e7ab4259981f50122909fda"; hash = "sha256-7W8ozhQJL+f+tQYz61EZexk9NkMu1pCAP5IIy1m3qak="; }; passthru.requires = [ "c" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-objc"; }; objdump = buildGrammar { Loading Loading @@ -2046,6 +2097,9 @@ hash = "sha256-8u1jtUFMjykVG6aCDzqcb4vFCY401CZ2o+JPGMadg6o="; }; location = "grammars/interface"; passthru.requires = [ "ocaml" ]; meta.homepage = "https://github.com/tree-sitter/tree-sitter-ocaml"; }; ocamllex = buildGrammar { Loading Loading @@ -2125,6 +2179,9 @@ hash = "sha256-XEKlsqC7HJ3mShmcwmfpezNP9DHE8f73f7/ru4MuxEo="; }; location = "php"; passthru.requires = [ "php_only" ]; meta.homepage = "https://github.com/tree-sitter/tree-sitter-php"; }; php_only = buildGrammar { Loading Loading @@ -2259,6 +2316,9 @@ hash = "sha256-SEqqmkfV/wsr1ObcBN5My29RY9TWfxnQlsnEEIZyR18="; }; location = "grammars/problog"; passthru.requires = [ "prolog" ]; meta.homepage = "https://github.com/foxyseta/tree-sitter-prolog"; }; prolog = buildGrammar { Loading Loading @@ -2327,6 +2387,9 @@ hash = "sha256-9mW0kT4av/ULFqLXdMuyLrMPtQxrIOKY60GQ4QDB33o="; }; location = "psv"; passthru.requires = [ "tsv" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-csv"; }; pug = buildGrammar { Loading Loading @@ -2712,6 +2775,9 @@ rev = "c478c6868648eff49eb04a4df90d703dc45b312a"; hash = "sha256-BFtMT6eccBWUyq6b8UXRAbB1R1XD3CrrFf1DM3aUI5c="; }; passthru.requires = [ "css" ]; meta.homepage = "https://github.com/serenadeai/tree-sitter-scss"; }; sflog = buildGrammar { Loading Loading @@ -3126,6 +3192,9 @@ hash = "sha256-Kq0KtkF6xtZcN2s8KzYGyguJH2iOTlA2WRytZ+KGTUE="; }; location = "dialects/terraform"; passthru.requires = [ "hcl" ]; meta.homepage = "https://github.com/MichaHoffmann/tree-sitter-hcl"; }; textproto = buildGrammar { Loading Loading @@ -3227,6 +3296,9 @@ hash = "sha256-A0M6IBoY87ekSV4DfGHDU5zzFWdLjGqSyVr6VENgA+s="; }; location = "tsx"; passthru.requires = [ "typescript" ]; meta.homepage = "https://github.com/tree-sitter/tree-sitter-typescript"; }; turtle = buildGrammar { Loading Loading @@ -3528,6 +3600,9 @@ hash = "sha256-0ztP30xWqVWy5upWPp0JwhpQphOJufzlcYn+KvLejVs="; }; location = "xml"; passthru.requires = [ "dtd" ]; meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-xml"; }; xresources = buildGrammar { Loading Loading @@ -3642,18 +3717,29 @@ }; angular = buildQueries { language = "angular"; requires = [ "html" "html_tags" ]; }; apex = buildQueries { language = "apex"; }; arduino = buildQueries { language = "arduino"; requires = [ "cpp" ]; }; asm = buildQueries { language = "asm"; }; astro = buildQueries { language = "astro"; requires = [ "html" "html_tags" ]; }; authzed = buildQueries { language = "authzed"; Loading Loading @@ -3738,15 +3824,24 @@ }; cpp = buildQueries { language = "cpp"; requires = [ "c" ]; }; css = buildQueries { language = "css"; }; csv = buildQueries { language = "csv"; requires = [ "tsv" ]; }; cuda = buildQueries { language = "cuda"; requires = [ "cpp" ]; }; cue = buildQueries { language = "cue"; Loading Loading @@ -3870,6 +3965,9 @@ }; gaptst = buildQueries { language = "gaptst"; requires = [ "gap" ]; }; gdscript = buildQueries { language = "gdscript"; Loading Loading @@ -3900,12 +3998,21 @@ }; glimmer_javascript = buildQueries { language = "glimmer_javascript"; requires = [ "ecma" ]; }; glimmer_typescript = buildQueries { language = "glimmer_typescript"; requires = [ "typescript" ]; }; glsl = buildQueries { language = "glsl"; requires = [ "c" ]; }; gn = buildQueries { language = "gn"; Loading Loading @@ -3975,9 +4082,15 @@ }; hjson = buildQueries { language = "hjson"; requires = [ "json" ]; }; hlsl = buildQueries { language = "hlsl"; requires = [ "cpp" ]; }; hlsplaylist = buildQueries { language = "hlsplaylist"; Loading @@ -3990,6 +4103,9 @@ }; html = buildQueries { language = "html"; requires = [ "html_tags" ]; }; html_tags = buildQueries { language = "html_tags"; Loading Loading @@ -4020,6 +4136,9 @@ }; ispc = buildQueries { language = "ispc"; requires = [ "c" ]; }; janet_simple = buildQueries { language = "janet_simple"; Loading @@ -4032,9 +4151,16 @@ }; javascript = buildQueries { language = "javascript"; requires = [ "ecma" "jsx" ]; }; jinja = buildQueries { language = "jinja"; requires = [ "jinja_inline" ]; }; jinja_inline = buildQueries { language = "jinja_inline"; Loading Loading @@ -4122,6 +4248,9 @@ }; luau = buildQueries { language = "luau"; requires = [ "lua" ]; }; m68k = buildQueries { language = "m68k"; Loading @@ -4131,6 +4260,9 @@ }; markdown = buildQueries { language = "markdown"; requires = [ "markdown_inline" ]; }; markdown_inline = buildQueries { language = "markdown_inline"; Loading Loading @@ -4164,6 +4296,9 @@ }; nim = buildQueries { language = "nim"; requires = [ "nim_format_string" ]; }; nim_format_string = buildQueries { language = "nim_format_string"; Loading @@ -4182,6 +4317,9 @@ }; objc = buildQueries { language = "objc"; requires = [ "c" ]; }; objdump = buildQueries { language = "objdump"; Loading @@ -4191,6 +4329,9 @@ }; ocaml_interface = buildQueries { language = "ocaml_interface"; requires = [ "ocaml" ]; }; ocamllex = buildQueries { language = "ocamllex"; Loading @@ -4212,6 +4353,9 @@ }; php = buildQueries { language = "php"; requires = [ "php_only" ]; }; php_only = buildQueries { language = "php_only"; Loading Loading @@ -4248,6 +4392,9 @@ }; problog = buildQueries { language = "problog"; requires = [ "prolog" ]; }; prolog = buildQueries { language = "prolog"; Loading @@ -4266,6 +4413,9 @@ }; psv = buildQueries { language = "psv"; requires = [ "tsv" ]; }; pug = buildQueries { language = "pug"; Loading @@ -4290,6 +4440,9 @@ }; qmljs = buildQueries { language = "qmljs"; requires = [ "ecma" ]; }; query = buildQueries { language = "query"; Loading Loading @@ -4371,6 +4524,9 @@ }; scss = buildQueries { language = "scss"; requires = [ "css" ]; }; sflog = buildQueries { language = "sflog"; Loading Loading @@ -4443,6 +4599,9 @@ }; svelte = buildQueries { language = "svelte"; requires = [ "html_tags" ]; }; sway = buildQueries { language = "sway"; Loading Loading @@ -4482,6 +4641,9 @@ }; terraform = buildQueries { language = "terraform"; requires = [ "hcl" ]; }; textproto = buildQueries { language = "textproto"; Loading Loading @@ -4509,6 +4671,11 @@ }; tsx = buildQueries { language = "tsx"; requires = [ "ecma" "jsx" "typescript" ]; }; turtle = buildQueries { language = "turtle"; Loading @@ -4518,6 +4685,9 @@ }; typescript = buildQueries { language = "typescript"; requires = [ "ecma" ]; }; typespec = buildQueries { language = "typespec"; Loading Loading @@ -4569,6 +4739,9 @@ }; vue = buildQueries { language = "vue"; requires = [ "html_tags" ]; }; wgsl = buildQueries { language = "wgsl"; Loading @@ -4590,6 +4763,9 @@ }; xml = buildQueries { language = "xml"; requires = [ "dtd" ]; }; xresources = buildQueries { language = "xresources"; Loading
pkgs/applications/editors/vim/plugins/nvim-treesitter/overrides.nix +43 −8 Original line number Diff line number Diff line Loading @@ -17,12 +17,15 @@ let inherit (neovimUtils) grammarToPlugin; buildQueries = { language }: { language, requires ? [ ], }: vimUtils.toVimPlugin ( runCommand "nvim-treesitter-queries-${language}" { passthru = { inherit language; inherit language requires; isTreesitterQuery = true; }; meta.description = "Queries for ${language} from nvim-treesitter"; Loading @@ -45,18 +48,50 @@ let inherit (generated) parsers queries; parsersWithMeta = lib.mapAttrs ( queriesWithDeps = lib.mapAttrs ( lang: query: let requires = query.requires or [ ]; dependencies = map (req: queries.${req}) requires; in if dependencies != [ ] then query.overrideAttrs (old: { passthru = old.passthru or { } // { inherit dependencies; }; }) else query ) queries; parsersWithQueries = lib.mapAttrs ( lang: parser: if lib.hasAttr lang queries then if lib.hasAttr lang queriesWithDeps then parser.overrideAttrs (old: { passthru = (old.passthru or { }) // { associatedQuery = queries.${lang}; passthru = old.passthru or { } // { associatedQuery = queriesWithDeps.${lang}; }; }) else parser ) parsers; parsersWithMeta = lib.mapAttrs ( lang: parser: let requires = parser.requires or [ ]; dependencies = map (req: grammarToPlugin parsersWithQueries.${req}) requires; in if dependencies != [ ] then parser.overrideAttrs (old: { passthru = old.passthru or { } // { inherit dependencies; }; }) else parser ) parsersWithQueries; # add aliases so grammars from `tree-sitter` are overwritten in `withPlugins` # for example, for ocaml_interface, the following aliases will be added # ocaml-interface Loading Loading @@ -92,7 +127,7 @@ let grammarPlugins = map grammarToPlugin selectedGrammars; queryPlugins = lib.pipe selectedGrammars [ (map (g: g.passthru.associatedQuery or null)) (map (g: g.associatedQuery or null)) (lib.filter (q: q != null)) ]; in Loading @@ -115,9 +150,9 @@ in grammarToPlugin withPlugins withAllGrammars queries ; queries = queriesWithDeps; parsers = grammarPlugins; tests = { Loading
pkgs/applications/editors/vim/plugins/utils/nvim-treesitter/update.py +54 −16 Original line number Diff line number Diff line Loading @@ -15,12 +15,10 @@ log = logging.getLogger("vim-updater") NURR_JSON_URL = ( "https://raw.githubusercontent.com/lumen-oss/nurr/main/tree-sitter-parsers.json" ) NVIM_TREESITTER_QUERIES_URL = ( "https://api.github.com/repos/nvim-treesitter/nvim-treesitter/contents/runtime/queries" ) NVIM_TREESITTER_QUERIES_URL = "https://api.github.com/repos/nvim-treesitter/nvim-treesitter/contents/runtime/queries" def generate_grammar(lang, parser_info): def generate_grammar(lang, parser_info, parsers_map): """Generate grammar for a language based on the parser info""" if "install_info" not in parser_info: log.warning(f"Parser {lang} does not have install_info, skipping") Loading @@ -36,9 +34,7 @@ def generate_grammar(lang, parser_info): version = "0.0.0+rev={rev[:7]}"; src = """ generated += subprocess.check_output( ["nurl", url, rev, "--indent=6"], text=True ) generated += subprocess.check_output(["nurl", url, rev, "--indent=6"], text=True) generated += ";" location = install_info.get("location", "") Loading @@ -50,6 +46,23 @@ def generate_grammar(lang, parser_info): generated += """ generate = true;""" # Add requires field - only include parsers requires = parser_info.get("requires", []) if requires: # Filter to only include parser dependencies (those with install_info) parser_requires = [ req for req in requires if req in parsers_map and "install_info" in parsers_map[req] ] if parser_requires: generated += """ passthru.requires = [ """ for req in parser_requires: generated += f' "{req}"\n' generated += " ];" generated += f""" meta.homepage = "{url}"; }}; Loading @@ -58,12 +71,28 @@ def generate_grammar(lang, parser_info): return generated def generate_query(lang): def generate_query(lang: str, parser_info: dict | None, queries_set: set[str]): """Generate query derivation for a language""" return f""" {lang} = buildQueries {{ language = "{lang}"; }}; generated = f""" {lang} = buildQueries {{ language = "{lang}";""" # Add requires field for queries - include everything that has queries if parser_info and "requires" in parser_info: requires = parser_info["requires"] # Filter to only include langs that have queries query_requires = [req for req in requires if queries_set and req in queries_set] if query_requires: generated += """ requires = [ """ for req in query_requires: generated += f' "{req}"\n' generated += " ];" generated += """ }; """ return generated def fetch_nurr_parsers(): Loading Loading @@ -111,9 +140,9 @@ def fetch_available_queries(): return languages def process_parser_info(parser_info): def process_parser_info(parser_info, parsers_map): """Process a single parser info entry and generate grammar for it""" return generate_grammar(parser_info["lang"], parser_info) return generate_grammar(parser_info["lang"], parser_info, parsers_map) def update_grammars(): Loading @@ -121,6 +150,9 @@ def update_grammars(): parsers_info = fetch_nurr_parsers() queries_list = fetch_available_queries() # Create a mapping of lang -> parser_info for quick lookup parsers_map = {p["lang"]: p for p in parsers_info} generated_file = """# generated by pkgs/applications/editors/vim/plugins/utils/nvim-treesitter/update.py # Using parser data from https://github.com/nvim-neorocks/nurr/blob/main/tree-sitter-parsers.json Loading @@ -141,7 +173,9 @@ def update_grammars(): # Process parsers in parallel for better performance with ThreadPoolExecutor(max_workers=5) as executor: for generated in executor.map(process_parser_info, parsers_info): for generated in executor.map( lambda p: process_parser_info(p, parsers_map), parsers_info ): generated_file += generated generated_file += """ }; Loading @@ -149,9 +183,13 @@ def update_grammars(): queries = { """ # Process queries # Convert queries list to a set for fast lookup queries_set = set(queries_list) # Process queries - include parser info if available for requires field for lang in queries_list: generated_file += generate_query(lang) parser_info = parsers_map.get(lang) generated_file += generate_query(lang, parser_info, queries_set) generated_file += " };\n}\n" return generated_file Loading