Skip to content

Commit

Permalink
Add OpenCL tree-sitter and LSP config (#6473)
Browse files Browse the repository at this point in the history
  • Loading branch information
lefp authored Apr 12, 2023
1 parent 70de502 commit fff8543
Show file tree
Hide file tree
Showing 6 changed files with 167 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 @@ -97,6 +97,7 @@
| ocaml || || `ocamllsp` |
| ocaml-interface || | | `ocamllsp` |
| odin || | | `ols` |
| opencl |||| `clangd` |
| openscad || | | `openscad-lsp` |
| org || | | |
| pascal ||| | `pasls` |
Expand Down
13 changes: 13 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2472,3 +2472,16 @@ language-server = { command = "markdoc-ls", args = ["--stdio"] }
[[grammar]]
name = "markdoc"
source = { git = "https://github.com/markdoc-extra/tree-sitter-markdoc", rev = "5ffe71b29e8a3f94823913ea9cea51fcfa7e3bf8" }

[[language]]
name = "opencl"
scope = "source.cl"
injection-regex = "(cl|opencl)"
file-types = ["cl"]
roots = []
comment-token = "//"
language-server = { command = "clangd" }

[[grammar]]
name = "opencl"
source = { git = "https://github.com/lefp/tree-sitter-opencl", rev = "8e1d24a57066b3cd1bb9685bbc1ca9de5c1b78fb" }
150 changes: 150 additions & 0 deletions runtime/queries/opencl/highlights.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
[
"sizeof"
; @todo why does "uniform" break highlighting?
; "uniform" ; OpenCL C 3.0.13 reserves this as a keyword, but doesn't seem to use it for anything
(function_qualifier)
] @keyword

[
"enum"
"struct"
"typedef"
"union"
] @keyword.storage.type

[
"extern"
"register"
(type_qualifier)
(access_qualifier)
(storage_class_specifier)
(address_space_qualifier)
] @keyword.storage.modifier

[
"goto"
"break"
"continue"
] @keyword.control

[
"do"
"for"
"while"
] @keyword.control.repeat

[
"if"
"else"
"switch"
"case"
"default"
] @keyword.control.conditional

"return" @keyword.control.return

[
"defined"
"#define"
"#elif"
"#else"
"#endif"
"#if"
"#ifdef"
"#ifndef"
"#include"
(preproc_directive)
] @keyword.directive

(pointer_declarator "*" @type.builtin)
(abstract_pointer_declarator "*" @type.builtin)

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

(conditional_expression ":" @operator)

"..." @punctuation

["," "." ":" ";" "->" "::"] @punctuation.delimiter

["(" ")" "[" "]" "{" "}"] @punctuation.bracket

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

(enumerator name: (identifier) @type.enum.variant)

(string_literal) @string
(system_lib_string) @string

(null) @constant
(number_literal) @constant.numeric
(char_literal) @constant.character

(call_expression
function: (identifier) @function)
(call_expression
function: (field_expression
field: (field_identifier) @function))
(call_expression (argument_list (identifier) @variable))
(function_declarator
declarator: [(identifier) (field_identifier)] @function)
(parameter_declaration
declarator: (identifier) @variable.parameter)
(parameter_declaration
(pointer_declarator
declarator: (identifier) @variable.parameter))
(preproc_function_def
name: (identifier) @function.special)

(attribute
name: (identifier) @attribute)

(field_identifier) @variable.other.member
(statement_identifier) @label
(type_identifier) @type
(scalar_type) @type.builtin
(sized_type_specifier) @type.builtin
(vector_type) @type.builtin
(other_builtin_type) @type.builtin

((identifier) @constant
(#match? @constant "^[A-Z][A-Z\\d_]*$"))

(identifier) @variable

(comment) @comment
1 change: 1 addition & 0 deletions runtime/queries/opencl/indents.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
; inherits: c
1 change: 1 addition & 0 deletions runtime/queries/opencl/injections.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
; inherits: c
1 change: 1 addition & 0 deletions runtime/queries/opencl/textobjects.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
; inherits: c

0 comments on commit fff8543

Please sign in to comment.