Skip to content

Commit

Permalink
Change Odin grammar to ap29600/tree-sitter-odin (helix-editor#6766)
Browse files Browse the repository at this point in the history
* Change Odin grammar to `ap29600/tree-sitter-odin`

The previously adopted grammar, `MineBill/tree-sitter-odin`, is unmaintained and mentions my repository as an alternative source.

* update queries

* docgen

* fix queries

* Update runtime/queries/odin/highlights.scm

Co-authored-by: Michael Davis <[email protected]>

* remove `ERROR` query for `odin`

* track the latest rev in `ap29600/tree-sitter-odin`

* runtime/queries/odin/highlights.scm: update rune highlight class

Co-authored-by: Michael Davis <[email protected]>

---------

Co-authored-by: Michael Davis <[email protected]>
  • Loading branch information
2 people authored and Schuyler Mortimer committed Jul 10, 2024
1 parent 35bfd32 commit 13ac52b
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 135 deletions.
2 changes: 1 addition & 1 deletion book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
| nu || | | |
| ocaml || || `ocamllsp` |
| ocaml-interface || | | `ocamllsp` |
| odin || | | `ols` |
| odin || | | `ols` |
| opencl |||| `clangd` |
| openscad || | | `openscad-lsp` |
| org || | | |
Expand Down
2 changes: 1 addition & 1 deletion languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1675,7 +1675,7 @@ indent = { tab-width = 4, unit = "\t" }

[[grammar]]
name = "odin"
source = { git = "https://github.com/MineBill/tree-sitter-odin", rev = "da885f4a387f169b9b69fe0968259ee257a8f69a" }
source = { git = "https://github.com/ap29600/tree-sitter-odin", rev = "b219207e49ffca2952529d33e94ed63b1b75c4f1" }

[[language]]
name = "meson"
Expand Down
151 changes: 18 additions & 133 deletions runtime/queries/odin/highlights.scm
Original file line number Diff line number Diff line change
@@ -1,141 +1,26 @@
; Function calls
(keyword) @keyword
(operator) @operator

(call_expression
function: (identifier) @function)

(call_expression
function: (selector_expression
field: (field_identifier) @function))


; ; Function definitions

(function_declaration
name: (identifier) @function)

(proc_group
(identifier) @function)

; ; Identifiers

(type_identifier) @type
(field_identifier) @variable.other.member
(identifier) @variable

(const_declaration
(identifier) @constant)
(const_declaration_with_type
(identifier) @constant)

"any" @type

(directive_identifier) @constant

; ; Operators

[
"?"
"-"
"-="
":="
"!"
"!="
"*"
"*"
"*="
"/"
"/="
"&"
"&&"
"&="
"%"
"%="
"^"
"+"
"+="
"<-"
"<"
"<<"
"<<="
"<="
"="
"=="
">"
">="
">>"
">>="
"|"
"|="
"||"
"~"
".."
"..<"
"..="
"::"
] @operator

; ; Keywords

[
; "asm"
"auto_cast"
; "bit_set"
"cast"
; "context"
; "or_else"
; "or_return"
"in"
; "not_in"
"distinct"
"foreign"
"transmute"
; "typeid"

"break"
"case"
"continue"
"defer"
"else"
"using"
"when"
"where"
"fallthrough"
"for"
"proc"
"if"
"import"
"map"
"package"
"return"
"struct"
"union"
"enum"
"switch"
"dynamic"
] @keyword

; ; Literals
(int_literal) @constant.numeric.integer
(float_literal) @constant.numeric.float
(rune_literal) @constant.character
(bool_literal) @constant.builtin.boolean
(nil) @constant.builtin

[
(interpreted_string_literal)
(raw_string_literal)
(rune_literal)
] @string
(type_identifier) @type
(package_identifier) @namespace
(label_identifier) @label

(interpreted_string_literal) @string
(raw_string_literal) @string
(escape_sequence) @constant.character.escape

(int_literal) @constant.numeric.integer
(float_literal) @constant.numeric.float
(imaginary_literal) @constant.numeric
(comment) @comment
(const_identifier) @constant

[
(true)
(false)
] @constant.builtin.boolean

[
(nil)
(undefined)
] @constant.builtin
(compiler_directive) @keyword.directive
(calling_convention) @string.special.symbol

(comment) @comment.line
(identifier) @variable
(pragma_identifier) @keyword.directive
16 changes: 16 additions & 0 deletions runtime/queries/odin/indents.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[
(foreign_block)
(block)
(compound_literal)
(proc_call)
(assignment_statement)
(const_declaration)
(var_declaration)
(switch_statement)
] @indent

[
")"
"}"
] @outdent

0 comments on commit 13ac52b

Please sign in to comment.