feat!: drop modules, general refactor and cleanup

This commit is contained in:
Christian Clason 2023-06-12 09:54:30 -06:00
parent c13e28f894
commit 2c8f2f2fad
829 changed files with 4905 additions and 8010 deletions

View file

@ -0,0 +1,7 @@
; Folds
[
(case)
(function)
(anonymous_function)
(type_definition)
] @fold

View file

@ -0,0 +1,172 @@
; Keywords
[
"as"
"let"
"panic"
"todo"
"type"
"use"
] @keyword
; Function Keywords
[
"fn"
] @keyword.function
; Imports
[
"import"
] @include
; Conditionals
[
"case"
"if"
] @conditional
; Exceptions
[
"assert"
] @exception
; Punctuation
[
"("
")"
"<<"
">>"
"["
"]"
"{"
"}"
] @punctuation.bracket
[
","
"."
":"
"->"
] @punctuation.delimiter
[
"#"
] @punctuation.special
; Operators
[
"%"
"&&"
"*"
"*."
"+"
"+."
"-"
"-."
".."
"/"
"/."
"<"
"<."
"<="
"<=."
"="
"=="
">"
">."
">="
">=."
"|>"
"||"
] @operator
; Identifiers
(identifier) @variable
; Comments
[
(comment)
] @comment @spell
[
(module_comment)
(statement_comment)
] @comment.documentation @spell
; Unused Identifiers
[
(discard)
(hole)
] @comment
; Modules & Imports
(module) @namespace
(import alias: ((identifier) @namespace)?)
(remote_type_identifier module: (identifier) @namespace)
(unqualified_import name: (identifier) @function)
; Strings
(string) @string
; Bit Strings
(bit_string_segment) @string.special
; Numbers
(integer) @number
(float) @float
; Function Parameter Labels
(function_call arguments: (arguments (argument label: (label) @label)))
(function_parameter label: (label)? @label name: (identifier) @parameter)
; Records
(record arguments: (arguments (argument label: (label) @property)?))
(record_pattern_argument label: (label) @property)
(record_update_argument label: (label) @property)
(field_access record: (identifier) @variable field: (label) @property)
(data_constructor_argument (label) @property)
; Types
[
(type_identifier)
(type_parameter)
(type_var)
] @type
((type_identifier) @type.builtin
(#any-of? @type.builtin "Int" "Float" "String" "List"))
; Type Qualifiers
[
"const"
"external"
(opacity_modifier)
(visibility_modifier)
] @type.qualifier
; Tuples
(tuple_access index: (integer) @operator)
; Functions
(function name: (identifier) @function)
(function_call function: (identifier) @function.call)
(function_call function: (field_access field: (label) @function.call))
; External Functions
(external_function name: (identifier) @function)
(external_function_body (string) @namespace . (string) @function)
; Constructors
(constructor_name) @type @constructor
([(type_identifier) (constructor_name)] @constant.builtin
(#any-of? @constant.builtin "Ok" "Error"))
; Booleans
((constructor_name) @boolean (#any-of? @boolean "True" "False"))
; Pipe Operator
(binary_expression operator: "|>" right: (identifier) @function)
; Parser Errors
(ERROR) @error

View file

@ -0,0 +1,28 @@
; Gleam indents similar to Rust and JavaScript
[
(anonymous_function)
(assert)
(case)
(case_clause)
(constant)
(external_function)
(function)
(import)
(let)
(list)
(constant)
(function)
(type_definition)
(type_alias)
(todo)
(tuple)
] @indent.begin
[
")"
"]"
"}"
] @indent.end @indent.branch
; Gleam pipelines are not indented, but other binary expression chains are
((binary_expression operator: _ @_operator) @indent.begin (#not-eq? @_operator "|>"))

View file

@ -0,0 +1,7 @@
; Comments
([
(module_comment)
(statement_comment)
(comment)
] @injection.content
(#set! injection.language "comment"))

View file

@ -0,0 +1,24 @@
; Let Binding Definition
(let pattern: (identifier) @definition)
; List Pattern Definitions
(list_pattern (identifier) @definition)
(list_pattern assign: (identifier) @definition)
; Tuple Pattern Definition
(tuple_pattern (identifier) @definition)
; Record Pattern Definition
(record_pattern_argument pattern: (identifier) @definition)
; Function Parameter Definition
(function_parameter name: (identifier) @definition)
; References
(identifier) @reference
; Function Body Scope
(function_body) @scope
; Case Scope
(case_clause) @scope