Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions BUILTIN_TEXTOBJECTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@
<tr>
<td>git_config</td><td><span title="@assignment.inner">⬜</span></td> <td><span title="@assignment.lhs">⬜</span></td> <td><span title="@assignment.outer">⬜</span></td> <td><span title="@assignment.rhs">⬜</span></td> <td><span title="@attribute.inner">⬜</span></td> <td><span title="@attribute.outer">⬜</span></td> <td><span title="@block.inner">⬜</span></td> <td><span title="@block.outer">⬜</span></td> <td><span title="@call.inner">⬜</span></td> <td><span title="@call.outer">⬜</span></td> <td><span title="@class.inner">⬜</span></td> <td><span title="@class.outer">⬜</span></td> <td><span title="@comment.inner">⬜</span></td> <td><span title="@comment.outer">🟩</span></td> <td><span title="@conditional.inner">⬜</span></td> <td><span title="@conditional.outer">⬜</span></td> <td><span title="@frame.inner">⬜</span></td> <td><span title="@frame.outer">⬜</span></td> <td><span title="@function.inner">⬜</span></td> <td><span title="@function.outer">⬜</span></td> <td><span title="@loop.inner">⬜</span></td> <td><span title="@loop.outer">⬜</span></td> <td><span title="@number.inner">⬜</span></td> <td><span title="@parameter.inner">⬜</span></td> <td><span title="@parameter.outer">⬜</span></td> <td><span title="@regex.inner">⬜</span></td> <td><span title="@regex.outer">⬜</span></td> <td><span title="@return.inner">⬜</span></td> <td><span title="@return.outer">⬜</span></td> <td><span title="@scopename.inner">⬜</span></td> <td><span title="@statement.outer">⬜</span></td> </tr>
<tr>
<td>gleam</td><td><span title="@assignment.inner">🟩</span></td> <td><span title="@assignment.lhs">🟩</span></td> <td><span title="@assignment.outer">🟩</span></td> <td><span title="@assignment.rhs">🟩</span></td> <td><span title="@attribute.inner">⬜</span></td> <td><span title="@attribute.outer">⬜</span></td> <td><span title="@block.inner">🟩</span></td> <td><span title="@block.outer">🟩</span></td> <td><span title="@call.inner">🟩</span></td> <td><span title="@call.outer">🟩</span></td> <td><span title="@class.inner">🟩</span></td> <td><span title="@class.outer">🟩</span></td> <td><span title="@comment.inner">⬜</span></td> <td><span title="@comment.outer">🟩</span></td> <td><span title="@conditional.inner">🟩</span></td> <td><span title="@conditional.outer">🟩</span></td> <td><span title="@frame.inner">⬜</span></td> <td><span title="@frame.outer">⬜</span></td> <td><span title="@function.inner">🟩</span></td> <td><span title="@function.outer">🟩</span></td> <td><span title="@loop.inner">⬜</span></td> <td><span title="@loop.outer">⬜</span></td> <td><span title="@number.inner">🟩</span></td> <td><span title="@parameter.inner">🟩</span></td> <td><span title="@parameter.outer">🟩</span></td> <td><span title="@regex.inner">⬜</span></td> <td><span title="@regex.outer">⬜</span></td> <td><span title="@return.inner">🟩</span></td> <td><span title="@return.outer">🟩</span></td> <td><span title="@scopename.inner">⬜</span></td> <td><span title="@statement.outer">🟩</span></td> </tr>
<tr>
<td>glimmer</td><td><span title="@assignment.inner">⬜</span></td> <td><span title="@assignment.lhs">⬜</span></td> <td><span title="@assignment.outer">⬜</span></td> <td><span title="@assignment.rhs">⬜</span></td> <td><span title="@attribute.inner">🟩</span></td> <td><span title="@attribute.outer">🟩</span></td> <td><span title="@block.inner">🟩</span></td> <td><span title="@block.outer">🟩</span></td> <td><span title="@call.inner">⬜</span></td> <td><span title="@call.outer">⬜</span></td> <td><span title="@class.inner">⬜</span></td> <td><span title="@class.outer">⬜</span></td> <td><span title="@comment.inner">⬜</span></td> <td><span title="@comment.outer">🟩</span></td> <td><span title="@conditional.inner">⬜</span></td> <td><span title="@conditional.outer">⬜</span></td> <td><span title="@frame.inner">⬜</span></td> <td><span title="@frame.outer">⬜</span></td> <td><span title="@function.inner">🟩</span></td> <td><span title="@function.outer">🟩</span></td> <td><span title="@loop.inner">⬜</span></td> <td><span title="@loop.outer">⬜</span></td> <td><span title="@number.inner">⬜</span></td> <td><span title="@parameter.inner">⬜</span></td> <td><span title="@parameter.outer">⬜</span></td> <td><span title="@regex.inner">⬜</span></td> <td><span title="@regex.outer">⬜</span></td> <td><span title="@return.inner">⬜</span></td> <td><span title="@return.outer">⬜</span></td> <td><span title="@scopename.inner">⬜</span></td> <td><span title="@statement.outer">⬜</span></td> </tr>
<tr>
<td>glsl</td><td><span title="@assignment.inner">🟩</span></td> <td><span title="@assignment.lhs">🟩</span></td> <td><span title="@assignment.outer">🟩</span></td> <td><span title="@assignment.rhs">🟩</span></td> <td><span title="@attribute.inner">⬜</span></td> <td><span title="@attribute.outer">⬜</span></td> <td><span title="@block.inner">⬜</span></td> <td><span title="@block.outer">🟩</span></td> <td><span title="@call.inner">🟩</span></td> <td><span title="@call.outer">🟩</span></td> <td><span title="@class.inner">🟩</span></td> <td><span title="@class.outer">🟩</span></td> <td><span title="@comment.inner">⬜</span></td> <td><span title="@comment.outer">🟩</span></td> <td><span title="@conditional.inner">🟩</span></td> <td><span title="@conditional.outer">🟩</span></td> <td><span title="@frame.inner">⬜</span></td> <td><span title="@frame.outer">⬜</span></td> <td><span title="@function.inner">🟩</span></td> <td><span title="@function.outer">🟩</span></td> <td><span title="@loop.inner">🟩</span></td> <td><span title="@loop.outer">🟩</span></td> <td><span title="@number.inner">🟩</span></td> <td><span title="@parameter.inner">🟩</span></td> <td><span title="@parameter.outer">🟩</span></td> <td><span title="@regex.inner">⬜</span></td> <td><span title="@regex.outer">⬜</span></td> <td><span title="@return.inner">🟩</span></td> <td><span title="@return.outer">🟩</span></td> <td><span title="@scopename.inner">⬜</span></td> <td><span title="@statement.outer">🟩</span></td> </tr>
Expand Down
212 changes: 212 additions & 0 deletions queries/gleam/textobjects.scm
Original file line number Diff line number Diff line change
@@ -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)