Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/cpp/highlights.scm')
-rw-r--r--runtime/queries/cpp/highlights.scm180
1 files changed, 35 insertions, 145 deletions
diff --git a/runtime/queries/cpp/highlights.scm b/runtime/queries/cpp/highlights.scm
index 96e2a7e0..3348ef3c 100644
--- a/runtime/queries/cpp/highlights.scm
+++ b/runtime/queries/cpp/highlights.scm
@@ -1,47 +1,10 @@
; inherits: c
-; Constants
-
-(this) @variable.builtin
-(null) @constant.builtin
-
-; Types
-
-(using_declaration ("using" "namespace" (identifier) @namespace))
-(using_declaration ("using" "namespace" (qualified_identifier name: (identifier) @namespace)))
-(namespace_definition name: (namespace_identifier) @namespace)
-(namespace_identifier) @namespace
-
-(auto) @type
-"decltype" @type
-
-(ref_qualifier ["&" "&&"] @type.builtin)
-(reference_declarator ["&" "&&"] @type.builtin)
-(abstract_reference_declarator ["&" "&&"] @type.builtin)
-
-; -------
; Functions
-; -------
-; Support up to 4 levels of nesting of qualifiers
-; i.e. a::b::c::d::func();
+
(call_expression
function: (qualified_identifier
name: (identifier) @function))
-(call_expression
- function: (qualified_identifier
- name: (qualified_identifier
- name: (identifier) @function)))
-(call_expression
- function: (qualified_identifier
- name: (qualified_identifier
- name: (qualified_identifier
- name: (identifier) @function))))
-(call_expression
- function: (qualified_identifier
- name: (qualified_identifier
- name: (qualified_identifier
- name: (qualified_identifier
- name: (identifier) @function)))))
(template_function
name: (identifier) @function)
@@ -49,128 +12,55 @@
(template_method
name: (field_identifier) @function)
-; Support up to 4 levels of nesting of qualifiers
-; i.e. a::b::c::d::func();
+(template_function
+ name: (identifier) @function)
+
(function_declarator
declarator: (qualified_identifier
name: (identifier) @function))
+
(function_declarator
declarator: (qualified_identifier
- name: (qualified_identifier
- name: (identifier) @function)))
-(function_declarator
- declarator: (qualified_identifier
- name: (qualified_identifier
- name: (qualified_identifier
- name: (identifier) @function))))
-(function_declarator
- declarator: (qualified_identifier
- name: (qualified_identifier
- name: (qualified_identifier
- name: (qualified_identifier
- name: (identifier) @function)))))
+ name: (identifier) @function))
(function_declarator
declarator: (field_identifier) @function)
-; Constructors
+; Types
-(class_specifier
- (type_identifier) @type
- (field_declaration_list
- (function_definition
- (function_declarator
- (identifier) @constructor)))
- (#eq? @type @constructor))
-(destructor_name "~" @constructor
- (identifier) @constructor)
+((namespace_identifier) @type
+ (#match? @type "^[A-Z]"))
-; Parameters
+(auto) @type
-(parameter_declaration
- declarator: (reference_declarator (identifier) @variable.parameter))
-(optional_parameter_declaration
- declarator: (identifier) @variable.parameter)
+; Constants
+
+(this) @variable.builtin
+(nullptr) @constant
; Keywords
-(template_argument_list (["<" ">"] @punctuation.bracket))
-(template_parameter_list (["<" ">"] @punctuation.bracket))
-(default_method_clause "default" @keyword)
-
-"static_assert" @function.special
-
-[
- "<=>"
- "[]"
- "()"
-] @operator
-
-
-; 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"))
-
-[
- "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
+"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
; Strings