82 lines
2.6 KiB
C
82 lines
2.6 KiB
C
/* date = July 11th 2025 6:04 pm */
|
|
|
|
#ifndef TREE_SITTER_CPP_H
|
|
#define TREE_SITTER_CPP_H
|
|
|
|
String_Const_u8 TS_CPP_NEST_QUERY = string_u8_litexpr("(_ \"{\" @scope_begin \"}\" @scope_end )\n");
|
|
|
|
String_Const_u8 TS_CPP_FUNCTION_QUERY = string_u8_litexpr(R"DONE(
|
|
(function_declarator) @function_identifier
|
|
)DONE");
|
|
|
|
String_Const_u8 TS_CPP_TYPE_QUERY = string_u8_litexpr(R"DONE(
|
|
(struct_specifier
|
|
name: (type_identifier) @prefixStruct
|
|
)
|
|
(enum_specifier
|
|
name: (type_identifier) @prefixEnum
|
|
)
|
|
(class_specifier
|
|
name: (type_identifier) @prefixClass
|
|
)
|
|
)DONE");
|
|
|
|
String_Const_u8 TS_CPP_HIGHLIGHT_QUERY = string_u8_litexpr(R"DONE(
|
|
(call_expression function: [
|
|
(identifier) @defcolor_function
|
|
(field_expression field: (field_identifier) @defcolor_function)])
|
|
|
|
(function_declarator
|
|
declarator: [(identifier) (field_identifier)] @defcolor_function)
|
|
|
|
(preproc_def
|
|
name: (identifier) @defcolor_macro)
|
|
|
|
(preproc_function_def
|
|
name: (identifier) @defcolor_macro)
|
|
|
|
(type_identifier) @defcolor_type
|
|
|
|
(call_expression
|
|
function: (parenthesized_expression
|
|
(identifier) @defcolor_type))
|
|
|
|
[(primitive_type) (type_qualifier) (storage_class_specifier)
|
|
(break_statement) (continue_statement) "union" "return" "do"
|
|
"while" "for" "if" "class" "struct" "enum" "sizeof"
|
|
"else" "switch" "case"] @defcolor_keyword
|
|
|
|
[(number_literal) (string_literal) (raw_string_literal)] @defcolor_str_constant
|
|
|
|
[(preproc_directive) "#define" "#if" "#elif" "#else" "#endif"
|
|
"#include"] @defcolor_preproc
|
|
|
|
["{" "}" ";" ":" ","] @defcolor_text_default
|
|
|
|
(comment) @defcolor_comment
|
|
)DONE");
|
|
|
|
extern "C" {
|
|
TSLanguage *tree_sitter_cpp();
|
|
}
|
|
|
|
void
|
|
tree_sitter_register_cpp(Application_Links* app)
|
|
{
|
|
TSLanguage* language = tree_sitter_cpp();
|
|
String_Const_u8 highlight_query_str = TS_CPP_HIGHLIGHT_QUERY;
|
|
|
|
Tree_Sitter_Language_Queries queries = {};
|
|
queries.ptr[Tree_Sitter_Language_Query_Highlights] = tree_sitter_query_new(app, language, TS_CPP_HIGHLIGHT_QUERY);
|
|
queries.ptr[Tree_Sitter_Language_Query_Nests] = tree_sitter_query_new(app, language, TS_CPP_NEST_QUERY);
|
|
queries.ptr[Tree_Sitter_Language_Query_Functions] = tree_sitter_query_new(app, language, TS_CPP_FUNCTION_QUERY);
|
|
queries.ptr[Tree_Sitter_Language_Query_Types] = tree_sitter_query_new(app, language, TS_CPP_TYPE_QUERY);
|
|
tree_sitter_register_language(SCu8("c"), language, queries);
|
|
tree_sitter_register_language(SCu8("cpp"), language, queries);
|
|
tree_sitter_register_language(SCu8("h"), language, queries);
|
|
tree_sitter_register_language(SCu8("hpp"), language, queries);
|
|
tree_sitter_register_language(SCu8("cc"), language, queries);
|
|
}
|
|
|
|
#endif //TREE_SITTER_CPP_H
|