diff --git a/aider/linter.py b/aider/linter.py index 4e38f1767..9b9ef24f7 100644 --- a/aider/linter.py +++ b/aider/linter.py @@ -8,7 +8,7 @@ from dataclasses import dataclass from pathlib import Path from grep_ast import TreeContext, filename_to_lang -from tree_sitter_language_pack import get_parser # noqa: E402 +from grep_ast.tsl import get_parser # noqa: E402 from aider.dump import dump # noqa: F401 from aider.run_cmd import run_cmd_subprocess # noqa: F401 diff --git a/aider/queries/tree-sitter-javascript-tags.scm b/aider/queries/tree-sitter-language-pack/tree-sitter-javascript-tags.scm similarity index 100% rename from aider/queries/tree-sitter-javascript-tags.scm rename to aider/queries/tree-sitter-language-pack/tree-sitter-javascript-tags.scm diff --git a/aider/queries/README.md b/aider/queries/tree-sitter-languages/README.md similarity index 100% rename from aider/queries/README.md rename to aider/queries/tree-sitter-languages/README.md diff --git a/aider/queries/tree-sitter-c-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-c-tags.scm similarity index 100% rename from aider/queries/tree-sitter-c-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-c-tags.scm diff --git a/aider/queries/tree-sitter-c_sharp-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-c_sharp-tags.scm similarity index 100% rename from aider/queries/tree-sitter-c_sharp-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-c_sharp-tags.scm diff --git a/aider/queries/tree-sitter-cpp-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-cpp-tags.scm similarity index 100% rename from aider/queries/tree-sitter-cpp-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-cpp-tags.scm diff --git a/aider/queries/tree-sitter-dart-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-dart-tags.scm similarity index 100% rename from aider/queries/tree-sitter-dart-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-dart-tags.scm diff --git a/aider/queries/tree-sitter-elisp-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-elisp-tags.scm similarity index 100% rename from aider/queries/tree-sitter-elisp-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-elisp-tags.scm diff --git a/aider/queries/tree-sitter-elixir-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-elixir-tags.scm similarity index 100% rename from aider/queries/tree-sitter-elixir-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-elixir-tags.scm diff --git a/aider/queries/tree-sitter-elm-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-elm-tags.scm similarity index 100% rename from aider/queries/tree-sitter-elm-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-elm-tags.scm diff --git a/aider/queries/tree-sitter-go-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-go-tags.scm similarity index 100% rename from aider/queries/tree-sitter-go-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-go-tags.scm diff --git a/aider/queries/tree-sitter-hcl-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-hcl-tags.scm similarity index 100% rename from aider/queries/tree-sitter-hcl-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-hcl-tags.scm diff --git a/aider/queries/tree-sitter-java-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-java-tags.scm similarity index 100% rename from aider/queries/tree-sitter-java-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-java-tags.scm diff --git a/aider/queries/tree-sitter-languages/tree-sitter-javascript-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-javascript-tags.scm new file mode 100644 index 000000000..3bc55c5c5 --- /dev/null +++ b/aider/queries/tree-sitter-languages/tree-sitter-javascript-tags.scm @@ -0,0 +1,88 @@ +( + (comment)* @doc + . + (method_definition + name: (property_identifier) @name.definition.method) @definition.method + (#not-eq? @name.definition.method "constructor") + (#strip! @doc "^[\\s\\*/]+|^[\\s\\*/]$") + (#select-adjacent! @doc @definition.method) +) + +( + (comment)* @doc + . + [ + (class + name: (_) @name.definition.class) + (class_declaration + name: (_) @name.definition.class) + ] @definition.class + (#strip! @doc "^[\\s\\*/]+|^[\\s\\*/]$") + (#select-adjacent! @doc @definition.class) +) + +( + (comment)* @doc + . + [ + (function + name: (identifier) @name.definition.function) + (function_declaration + name: (identifier) @name.definition.function) + (generator_function + name: (identifier) @name.definition.function) + (generator_function_declaration + name: (identifier) @name.definition.function) + ] @definition.function + (#strip! @doc "^[\\s\\*/]+|^[\\s\\*/]$") + (#select-adjacent! @doc @definition.function) +) + +( + (comment)* @doc + . + (lexical_declaration + (variable_declarator + name: (identifier) @name.definition.function + value: [(arrow_function) (function)]) @definition.function) + (#strip! @doc "^[\\s\\*/]+|^[\\s\\*/]$") + (#select-adjacent! @doc @definition.function) +) + +( + (comment)* @doc + . + (variable_declaration + (variable_declarator + name: (identifier) @name.definition.function + value: [(arrow_function) (function)]) @definition.function) + (#strip! @doc "^[\\s\\*/]+|^[\\s\\*/]$") + (#select-adjacent! @doc @definition.function) +) + +(assignment_expression + left: [ + (identifier) @name.definition.function + (member_expression + property: (property_identifier) @name.definition.function) + ] + right: [(arrow_function) (function)] +) @definition.function + +(pair + key: (property_identifier) @name.definition.function + value: [(arrow_function) (function)]) @definition.function + +( + (call_expression + function: (identifier) @name.reference.call) @reference.call + (#not-match? @name.reference.call "^(require)$") +) + +(call_expression + function: (member_expression + property: (property_identifier) @name.reference.call) + arguments: (_) @reference.call) + +(new_expression + constructor: (_) @name.reference.class) @reference.class diff --git a/aider/queries/tree-sitter-kotlin-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-kotlin-tags.scm similarity index 100% rename from aider/queries/tree-sitter-kotlin-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-kotlin-tags.scm diff --git a/aider/queries/tree-sitter-ocaml-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-ocaml-tags.scm similarity index 100% rename from aider/queries/tree-sitter-ocaml-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-ocaml-tags.scm diff --git a/aider/queries/tree-sitter-php-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-php-tags.scm similarity index 100% rename from aider/queries/tree-sitter-php-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-php-tags.scm diff --git a/aider/queries/tree-sitter-python-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-python-tags.scm similarity index 100% rename from aider/queries/tree-sitter-python-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-python-tags.scm diff --git a/aider/queries/tree-sitter-ql-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-ql-tags.scm similarity index 100% rename from aider/queries/tree-sitter-ql-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-ql-tags.scm diff --git a/aider/queries/tree-sitter-ruby-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-ruby-tags.scm similarity index 100% rename from aider/queries/tree-sitter-ruby-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-ruby-tags.scm diff --git a/aider/queries/tree-sitter-rust-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-rust-tags.scm similarity index 100% rename from aider/queries/tree-sitter-rust-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-rust-tags.scm diff --git a/aider/queries/tree-sitter-typescript-tags.scm b/aider/queries/tree-sitter-languages/tree-sitter-typescript-tags.scm similarity index 100% rename from aider/queries/tree-sitter-typescript-tags.scm rename to aider/queries/tree-sitter-languages/tree-sitter-typescript-tags.scm diff --git a/aider/repomap.py b/aider/repomap.py index 789891866..2a202253a 100644 --- a/aider/repomap.py +++ b/aider/repomap.py @@ -11,7 +11,6 @@ from collections import Counter, defaultdict, namedtuple from importlib import resources from pathlib import Path -import tree_sitter from diskcache import Cache from grep_ast import TreeContext, filename_to_lang from pygments.lexers import guess_lexer_for_filename @@ -24,7 +23,9 @@ from aider.utils import Spinner # tree_sitter is throwing a FutureWarning warnings.simplefilter("ignore", category=FutureWarning) -from tree_sitter_language_pack import get_language, get_parser # noqa: E402 +from grep_ast.tsl import USING_TSL_PACK, get_language, get_parser # noqa: E402 + +dump(USING_TSL_PACK) Tag = namedtuple("Tag", "rel_fname fname line name kind".split()) @@ -280,18 +281,9 @@ class RepoMap: tree = parser.parse(bytes(code, "utf-8")) # Run the tags queries - try: - query = language.query(query_scm) - except tree_sitter.QueryError as err: - dump(fname, err) - return - + query = language.query(query_scm) captures = query.captures(tree.root_node) - # dump(fname) - # dump(captures) - # dump(captures.keys()) - saw = set() for tag, nodes in captures.items(): for node in nodes: