diff --git a/BUILTIN_TEXTOBJECTS.md b/BUILTIN_TEXTOBJECTS.md index 64ccfaa4..09efaf02 100644 --- a/BUILTIN_TEXTOBJECTS.md +++ b/BUILTIN_TEXTOBJECTS.md @@ -75,6 +75,8 @@ git_config 🟩 +gleam🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 + glimmer 🟩 🟩 🟩 🟩 🟩 🟩 🟩 glsl🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 diff --git a/queries/gleam/textobjects.scm b/queries/gleam/textobjects.scm new file mode 100644 index 00000000..5f86f47d --- /dev/null +++ b/queries/gleam/textobjects.scm @@ -0,0 +1,212 @@ +; assignments +(let + pattern: (_) @assignment.lhs @assignment.inner + value: (_) @assignment.rhs @assignment.inner) @assignment.outer + +(let_assert + pattern: (_) @assignment.lhs @assignment.inner + value: (_) @assignment.rhs @assignment.inner) @assignment.outer + +(use + assignments: (use_assignments) @assignment.lhs @assignment.inner + value: (_) @assignment.rhs @assignment.inner) @assignment.outer + +; block +(block + "{" + . + _+ @block.inner + . + "}") @block.outer + +; calls +(function_call + arguments: (arguments + . + "(" + _+ @call.inner + ")")) @call.outer + +(record + arguments: (arguments + . + "(" + _+ @call.inner + ")")) @call.outer + +(record_update + ".." @call.inner + . + spread: (_) @call.inner + . + "," @call.inner + arguments: (record_update_arguments) @call.inner) @call.outer + +; class +(type_definition + (data_constructors) @class.inner) @class.outer + +; comment +(comment) @comment.outer + +; conditionals +(case + clauses: (case_clauses + (case_clause) @conditional.inner)) @conditional.outer + +; numbers +[ + (integer) + (float) +] @number.inner + +; parameters +(function_parameters + "," @parameter.outer + . + (function_parameter) @parameter.inner @parameter.outer) + +(function_parameters + . + (function_parameter) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +; parameters in calls +(arguments + "," @parameter.outer + . + (argument) @parameter.inner @parameter.outer) + +(arguments + . + (argument) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +; parameters for types and records +(data_constructor_arguments + "," @parameter.outer + . + (data_constructor_argument) @parameter.inner @parameter.outer) + +(data_constructor_arguments + . + (data_constructor_argument) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +(type_parameters + "," @parameter.outer + . + (type_parameter) @parameter.inner @parameter.outer) + +(type_parameters + . + (type_parameter) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +(type_arguments + "," @parameter.outer + . + (type_argument) @parameter.inner @parameter.outer) + +(type_arguments + . + (type_argument) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +(record_pattern_arguments + "," @parameter.outer + . + (record_pattern_argument) @parameter.inner @parameter.outer) + +(record_pattern_arguments + . + (record_pattern_argument) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +(record_update + "," @parameter.outer + arguments: (record_update_arguments + . + (record_update_argument) @parameter.inner @parameter.outer)) + +(record_update + arguments: (record_update_arguments + "," @parameter.outer + . + (record_update_argument) @parameter.inner @parameter.outer)) + +(record_update + ".." @parameter.inner @parameter.outer + . + spread: (_) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +; parameters in lists +(list + "," @parameter.outer + (_) @parameter.inner @parameter.outer) + +(list + . + (_) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +(list_pattern + "," @parameter.outer + (_) @parameter.inner @parameter.outer) + +(list_pattern + . + (_) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +; parameters in tuples +(tuple + "," @parameter.outer + (_) @parameter.inner @parameter.outer) + +(tuple + . + (_) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +; parameters in bit strings +(bit_array + "," @parameter.outer + (_) @parameter.inner @parameter.outer) + +(bit_array + . + (_) @parameter.inner @parameter.outer + . + ","? @parameter.outer) + +; functions +(function + body: (block) @function.inner) @function.outer + +(anonymous_function + body: (block) @function.inner) @function.outer + +; returns +(function + body: (block + (_) @return.inner @return.outer .)) + +(anonymous_function + body: (block + (_) @return.inner @return.outer .)) + +; statements +(block + (_) @statement.outer)