diff options
Diffstat (limited to 'runtime/queries/cpp/highlights.scm')
-rw-r--r-- | runtime/queries/cpp/highlights.scm | 122 |
1 files changed, 92 insertions, 30 deletions
diff --git a/runtime/queries/cpp/highlights.scm b/runtime/queries/cpp/highlights.scm index 3348ef3c..8637489e 100644 --- a/runtime/queries/cpp/highlights.scm +++ b/runtime/queries/cpp/highlights.scm @@ -1,7 +1,11 @@ -; inherits: c - ; Functions +; These casts are parsed as function calls, but are not. +((identifier) @keyword (#eq? @keyword "static_cast")) +((identifier) @keyword (#eq? @keyword "dynamic_cast")) +((identifier) @keyword (#eq? @keyword "reinterpret_cast")) +((identifier) @keyword (#eq? @keyword "const_cast")) + (call_expression function: (qualified_identifier name: (identifier) @function)) @@ -12,56 +16,114 @@ (template_method name: (field_identifier) @function) -(template_function - name: (identifier) @function) - (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 + +(qualified_identifier name: (identifier) @type.enum.variant) (auto) @type +"decltype" @type + +(ref_qualifier ["&" "&&"] @type.builtin) +(reference_declarator ["&" "&&"] @type.builtin) +(abstract_reference_declarator ["&" "&&"] @type.builtin) ; 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" + "new" + "operator" + "requires" + "using" +] @keyword + +[ + "catch" + "noexcept" + "throw" + "try" +] @keyword.control.exception + + +[ + "and" + "and_eq" + "bitor" + "bitand" + "not" + "not_eq" + "or" + "or_eq" + "xor" + "xor_eq" +] @keyword.operator + +[ + "class" + "namespace" + "typename" + "template" +] @keyword.storage.type + +[ + "constexpr" + "constinit" + "consteval" + "mutable" +] @keyword.storage.modifier + +; Modifiers that aren't plausibly type/storage related. +[ + "explicit" + "friend" + "virtual" + (virtual_specifier) ; override/final + "private" + "protected" + "public" + "inline" ; C++ meaning differs from C! +] @keyword ; Strings (raw_string_literal) @string + +; inherits: c |