Skip to content

Commit

Permalink
Add tcl highlighting (helix-editor#9837)
Browse files Browse the repository at this point in the history
Co-authored-by: Michael Davis <[email protected]>
  • Loading branch information
2 people authored and postsolar committed Apr 4, 2024
1 parent 8135991 commit d1db74f
Show file tree
Hide file tree
Showing 5 changed files with 180 additions and 0 deletions.
1 change: 1 addition & 0 deletions book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@
| tablegen |||| |
| tact |||| |
| task || | | |
| tcl || || |
| templ || | | `templ` |
| tfvars || || `terraform-ls` |
| todotxt || | | |
Expand Down
12 changes: 12 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3367,6 +3367,18 @@ grammar = "hyprlang"
name = "hyprlang"
source = { git = "https://github.com/tree-sitter-grammars/tree-sitter-hyprlang", rev = "27af9b74acf89fa6bed4fb8cb8631994fcb2e6f3"}

[[language]]
name = "tcl"
scope = "source.tcl"
injection-regex = "tcl"
file-types = [ "tcl" ]
shebangs = [ "tclish", "jimsh", "wish" ]
comment-token = '#'

[[grammar]]
name = "tcl"
source = { git = "https://github.com/tree-sitter-grammars/tree-sitter-tcl", rev = "56ad1fa6a34ba800e5495d1025a9b0fda338d5b8" }

[[language]]
name = "supercollider"
scope = "source.supercollider"
Expand Down
1 change: 1 addition & 0 deletions runtime/queries/tcl/folds.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(braced_word) @fold
153 changes: 153 additions & 0 deletions runtime/queries/tcl/highlights.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@

(comment) @comment

(command name: (simple_word) @function)

"proc" @keyword.function

(procedure
name: (_) @variable
)

(set (simple_word) @variable)

(argument
name: (_) @variable.parameter
)

((simple_word) @variable.builtin
(#any-of? @variable.builtin
"argc"
"argv"
"argv0"
"auto_path"
"env"
"errorCode"
"errorInfo"
"tcl_interactive"
"tcl_library"
"tcl_nonwordchars"
"tcl_patchLevel"
"tcl_pkgPath"
"tcl_platform"
"tcl_precision"
"tcl_rcFileName"
"tcl_traceCompile"
"tcl_traceExec"
"tcl_wordchars"
"tcl_version"))


"expr" @function.builtin

(command
name: (simple_word) @function.builtin
(#any-of? @function.builtin
"cd"
"exec"
"exit"
"incr"
"info"
"join"
"puts"
"regexp"
"regsub"
"split"
"subst"
"trace"
"source"))

(command name: (simple_word) @keyword
(#any-of? @keyword
"append"
"break"
"catch"
"continue"
"default"
"dict"
"error"
"eval"
"global"
"lappend"
"lassign"
"lindex"
"linsert"
"list"
"llength"
"lmap"
"lrange"
"lrepeat"
"lreplace"
"lreverse"
"lsearch"
"lset"
"lsort"
"package"
"return"
"switch"
"throw"
"unset"
"variable"))

[
"error"
"namespace"
"on"
"set"
"try"
] @keyword

(unpack) @operator

[
"while"
"foreach"
; "for"
] @keyword.control.repeat

[
"if"
"else"
"elseif"
] @keyword.control.conditional

[
"**"
"/" "*" "%" "+" "-"
"<<" ">>"
">" "<" ">=" "<="
"==" "!="
"eq" "ne"
"in" "ni"
"&"
"^"
"|"
"&&"
"||"
] @operator

(variable_substitution) @variable
(quoted_word) @string
(escaped_character) @constant.character.escape

[
"{" "}"
"[" "]"
";"
] @punctuation.delimiter

((simple_word) @constant.numeric
(#match? @constant.numeric "^[0-9]+$"))

((simple_word) @constant.builtin.boolean
(#any-of? @constant.builtin.boolean "true" "false"))

; after apply array auto_execok auto_import auto_load auto_mkindex auto_qualify
; auto_reset bgerror binary chan clock close coroutine dde encoding eof fblocked
; fconfigure fcopy file fileevent filename flush format gets glob history http
; interp load mathfunc mathop memory msgcat my next nextto open parray pid
; pkg::create pkg_mkIndex platform platform::shell pwd re_syntax read refchan
; registry rename safe scan seek self socket source string tailcall tcl::prefix
; tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord
; tcl_wordBreakAfter tcl_wordBreakBefore tcltest tell time timerate tm
; transchan unknown unload update uplevel upvar vwait yield yieldto zlib
13 changes: 13 additions & 0 deletions runtime/queries/tcl/indents.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[
(braced_word_simple)
(namespace)
(command)
(conditional)
(foreach)
(while)
(try)
(procedure)
(command_substitution)
] @indent

[ "}" "]" ] @outdent

0 comments on commit d1db74f

Please sign in to comment.