From de8c6edabda2228e2ea4cb7c4fae1e40d9a95d2a Mon Sep 17 00:00:00 2001 From: locnide Date: Tue, 6 Jan 2026 22:21:35 +0100 Subject: [PATCH 1/4] feat(gleam): add textobjects --- queries/gleam/textobjects.scm | 201 ++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 queries/gleam/textobjects.scm diff --git a/queries/gleam/textobjects.scm b/queries/gleam/textobjects.scm new file mode 100644 index 00000000..2bc882c6 --- /dev/null +++ b/queries/gleam/textobjects.scm @@ -0,0 +1,201 @@ +; assignments +(let + pattern: (_) @assignment.lhs + value: (_) @assignment.rhs) @assignment.outer + +(let_assert + pattern: (_) @assignment.lhs + value: (_) @assignment.rhs) @assignment.outer + +(use + assignments: (use_assignments) @assignment.lhs + value: (_) @assignment.rhs) @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) + +(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_string + "," @parameter.outer + (_) @parameter.inner @parameter.outer) + +(bit_string + . + (_) @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) From bf6afbed9ec302eff8f93abcd89f5a8c5e999f12 Mon Sep 17 00:00:00 2001 From: locnide Date: Tue, 6 Jan 2026 23:10:35 +0100 Subject: [PATCH 2/4] docs(gleam): generate doc --- BUILTIN_TEXTOBJECTS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILTIN_TEXTOBJECTS.md b/BUILTIN_TEXTOBJECTS.md index 64ccfaa4..aa8f3054 100644 --- a/BUILTIN_TEXTOBJECTS.md +++ b/BUILTIN_TEXTOBJECTS.md @@ -75,6 +75,7 @@ git_config 🟩 +gleam 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 glimmer 🟩 🟩 🟩 🟩 🟩 🟩 🟩 glsl🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 From ac9e70f9f3ef3c128af87e0460061163d430644d Mon Sep 17 00:00:00 2001 From: locnide Date: Wed, 14 Jan 2026 01:01:39 +0100 Subject: [PATCH 3/4] fixup! feat(gleam): add textobjects --- queries/gleam/textobjects.scm | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/queries/gleam/textobjects.scm b/queries/gleam/textobjects.scm index 2bc882c6..5f86f47d 100644 --- a/queries/gleam/textobjects.scm +++ b/queries/gleam/textobjects.scm @@ -1,15 +1,15 @@ ; assignments (let - pattern: (_) @assignment.lhs - value: (_) @assignment.rhs) @assignment.outer + pattern: (_) @assignment.lhs @assignment.inner + value: (_) @assignment.rhs @assignment.inner) @assignment.outer (let_assert - pattern: (_) @assignment.lhs - value: (_) @assignment.rhs) @assignment.outer + pattern: (_) @assignment.lhs @assignment.inner + value: (_) @assignment.rhs @assignment.inner) @assignment.outer (use - assignments: (use_assignments) @assignment.lhs - value: (_) @assignment.rhs) @assignment.outer + assignments: (use_assignments) @assignment.lhs @assignment.inner + value: (_) @assignment.rhs @assignment.inner) @assignment.outer ; block (block @@ -107,6 +107,17 @@ . ","? @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 . @@ -170,11 +181,11 @@ ","? @parameter.outer) ; parameters in bit strings -(bit_string +(bit_array "," @parameter.outer (_) @parameter.inner @parameter.outer) -(bit_string +(bit_array . (_) @parameter.inner @parameter.outer . From 1498f5b3b6436f3725b5a9a948c0bada3a26e7c9 Mon Sep 17 00:00:00 2001 From: locnide Date: Wed, 14 Jan 2026 01:12:30 +0100 Subject: [PATCH 4/4] fixup! docs(gleam): generate doc --- BUILTIN_TEXTOBJECTS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BUILTIN_TEXTOBJECTS.md b/BUILTIN_TEXTOBJECTS.md index aa8f3054..09efaf02 100644 --- a/BUILTIN_TEXTOBJECTS.md +++ b/BUILTIN_TEXTOBJECTS.md @@ -75,7 +75,8 @@ git_config 🟩 -gleam 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 +gleam🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 + glimmer 🟩 🟩 🟩 🟩 🟩 🟩 🟩 glsl🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩 🟩