Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix C++ syntax highlighting, and improve C & WGSL highlighting #4079

Merged
merged 28 commits into from
Oct 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
c31cb5b
Update languages.toml
Chickenkeeper Oct 2, 2022
2f5dd93
Update highlights.scm
Chickenkeeper Oct 2, 2022
4f311c3
Update highlights.scm
Chickenkeeper Oct 2, 2022
5ef73b7
Update highlights.scm
Chickenkeeper Oct 2, 2022
5aaf2c0
Update highlights.scm
Chickenkeeper Oct 4, 2022
46e8092
Update highlights.scm
Chickenkeeper Oct 4, 2022
ad050d9
Update highlights.scm
Chickenkeeper Oct 4, 2022
0ea971b
Update highlights.scm
Chickenkeeper Oct 5, 2022
d342649
Update highlights.scm
Chickenkeeper Oct 5, 2022
1502d0a
Update highlights.scm
Chickenkeeper Oct 5, 2022
b9d0523
Moved inherit to the bottom
Chickenkeeper Oct 5, 2022
cb40b60
Removed unnecessary highlights and comments
Chickenkeeper Oct 5, 2022
6278800
Another update to tree-sitter-cpp
Chickenkeeper Oct 5, 2022
36e0e47
Added attribute highlight
Chickenkeeper Oct 6, 2022
798e196
Added extra operators
Chickenkeeper Oct 6, 2022
bc9206f
Fixed enumerator stanza
Chickenkeeper Oct 10, 2022
beb6e92
Update highlights.scm
Chickenkeeper Oct 10, 2022
fef05aa
Rearranged keywords and operators
Chickenkeeper Oct 12, 2022
8a83962
Rearranged keywords and added more highlights
Chickenkeeper Oct 12, 2022
b116770
Changed `auto` key back to @type
Chickenkeeper Oct 12, 2022
e97f5ec
changed `decltype` key to `@type`
Chickenkeeper Oct 12, 2022
d736fb5
Changed `break` key to `@keyword.control`
Chickenkeeper Oct 12, 2022
f78d635
Changed `continue` & `continuing` keys to `@keyword.control`
Chickenkeeper Oct 12, 2022
852bb9e
Use `@operator` for `:` in conditional expressions
Chickenkeeper Oct 13, 2022
1338e5e
Added `@punctuation.bracket` key for angle brackets in type declarations
Chickenkeeper Oct 13, 2022
372a52b
Improved variable & type highlighting
Chickenkeeper Oct 13, 2022
132211a
Removed unneccesary nested `type_declaration`
Chickenkeeper Oct 13, 2022
f91afcd
Rearranged code to prevent modifiers leaking, and coloured constructo…
Chickenkeeper Oct 13, 2022
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
4 changes: 2 additions & 2 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ args = { console = "internalConsole", attachCommands = [ "platform select remote

[[grammar]]
name = "c"
source = { git = "https://github.com/tree-sitter/tree-sitter-c", rev = "f05e279aedde06a25801c3f2b2cc8ac17fac52ae" }
source = { git = "https://github.com/tree-sitter/tree-sitter-c", rev = "7175a6dd5fc1cee660dce6fe23f6043d75af424a" }

[[language]]
name = "cpp"
Expand Down Expand Up @@ -221,7 +221,7 @@ args = { console = "internalConsole", attachCommands = [ "platform select remote

[[grammar]]
name = "cpp"
source = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev = "e8dcc9d2b404c542fd236ea5f7208f90be8a6e89" }
source = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev = "d5e90fba898f320db48d81ddedd78d52c67c1fed" }

[[language]]
name = "c-sharp"
Expand Down
162 changes: 105 additions & 57 deletions runtime/queries/c/highlights.scm
Original file line number Diff line number Diff line change
@@ -1,65 +1,104 @@
(storage_class_specifier) @keyword.storage

"goto" @keyword
"register" @keyword
"break" @keyword
"case" @keyword
"continue" @keyword
"default" @keyword
"do" @keyword
"else" @keyword
"enum" @keyword
"extern" @keyword
"for" @keyword
"if" @keyword
"inline" @keyword
"return" @keyword
"sizeof" @keyword
"struct" @keyword
"switch" @keyword
"typedef" @keyword
"union" @keyword
"volatile" @keyword
"while" @keyword
"const" @keyword

[
"#define"
"#elif"
"#else"
"#endif"
"#if"
"#ifdef"
"#ifndef"
"#include"
(preproc_directive)
"enum"
"struct"
"typedef"
"union"
] @keyword.storage.type

[
"const"
"extern"
"inline"
"register"
"volatile"
(storage_class_specifier)
] @keyword.storage.modifier

[
"goto"
"break"
Chickenkeeper marked this conversation as resolved.
Show resolved Hide resolved
"continue"
] @keyword.control

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

[
"if"
"else"
"switch"
"case"
"default"
Chickenkeeper marked this conversation as resolved.
Show resolved Hide resolved
] @keyword.control.conditional

"return" @keyword.control.return

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

"--" @operator
"-" @operator
"-=" @operator
"->" @operator
"=" @operator
"!=" @operator
"*" @operator
"&" @operator
"&&" @operator
"+" @operator
"++" @operator
"+=" @operator
"<" @operator
"==" @operator
">" @operator
"||" @operator
">=" @operator
"<=" @operator

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

(conditional_expression ":" @operator)

"..." @punctuation

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

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

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

Chickenkeeper marked this conversation as resolved.
Show resolved Hide resolved
(enumerator) @type.enum.variant
(enumerator name: (identifier) @type.enum.variant)

(string_literal) @string
(system_lib_string) @string
Expand All @@ -73,19 +112,28 @@
(call_expression
function: (field_expression
field: (field_identifier) @function))
(call_expression (argument_list (identifier) @variable))
(function_declarator
declarator: (identifier) @function)
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
(primitive_type) @type
(primitive_type) @type.builtin
the-mikedavis marked this conversation as resolved.
Show resolved Hide resolved
(sized_type_specifier) @type

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

(identifier) @variable

Expand Down
108 changes: 78 additions & 30 deletions runtime/queries/cpp/highlights.scm
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
; inherits: c

; Functions

(call_expression
Expand All @@ -12,56 +10,106 @@
(template_method
name: (field_identifier) @function)

(template_function
name: (identifier) @function)
the-mikedavis marked this conversation as resolved.
Show resolved Hide resolved

(function_declarator
declarator: (qualified_identifier
name: (identifier) @function))

(function_declarator
declarator: (qualified_identifier
name: (identifier) @function))
name: (qualified_identifier
name: (identifier) @function)))

(function_declarator
declarator: (field_identifier) @function)

; Types

((namespace_identifier) @type
(#match? @type "^[A-Z]"))
(using_declaration ("using" "namespace" (identifier) @namespace))
(using_declaration ("using" "namespace" (qualified_identifier name: (identifier) @namespace)))
(namespace_definition name: (identifier) @namespace)
(namespace_identifier) @namespace
Chickenkeeper marked this conversation as resolved.
Show resolved Hide resolved

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

(auto) @type
"decltype" @type

; Constants

(this) @variable.builtin
(nullptr) @constant
(nullptr) @constant.builtin

; Keywords

"catch" @keyword
"class" @keyword
"constexpr" @keyword
"delete" @keyword
"explicit" @keyword
"final" @keyword
"friend" @keyword
"mutable" @keyword
"namespace" @keyword
"noexcept" @keyword
"new" @keyword
"override" @keyword
"private" @keyword
"protected" @keyword
"public" @keyword
"template" @keyword
"throw" @keyword
"try" @keyword
"typename" @keyword
"using" @keyword
"virtual" @keyword
(template_argument_list (["<" ">"] @punctuation.bracket))
(template_parameter_list (["<" ">"] @punctuation.bracket))
(default_method_clause "default" @keyword)

"static_assert" @function.special

[
"<=>"
"[]"
"()"
] @operator

[
"co_await"
"co_return"
"co_yield"
"concept"
"delete"
"final"
"new"
"operator"
"requires"
"using"
] @keyword

[
"catch"
"noexcept"
"throw"
"try"
] @keyword.control.exception


Chickenkeeper marked this conversation as resolved.
Show resolved Hide resolved
[
"and"
"and_eq"
"bitor"
"bitand"
"not"
"not_eq"
"or"
"or_eq"
"xor"
"xor_eq"
] @keyword.operator

[
"class"
"namespace"
"typename"
] @keyword.storage.type

[
"constexpr"
"constinit"
"consteval"
"explicit"
"friend"
"mutable"
"private"
"protected"
"public"
"override"
"template"
"virtual"
] @keyword.storage.modifier

; Strings

(raw_string_literal) @string

; inherits: c
Loading