Enhance syntax highlight for C++20 keywords (#36817)
Closes #36439 and #32999 ## C++20 modules: Before (Zed Preview v0.201.3): <img width="1048" height="704" alt="image" src="https://github.com/user-attachments/assets/8eaaf77f-4e27-4a5a-9e87-4e5ba7293990" /> After: <img width="1048" height="704" alt="image" src="https://github.com/user-attachments/assets/df8d0b2c-f2d0-4b0e-9a52-495e6be5a8c0" /> ## C++20 coroutines: Before (Zed Preview v0.201.3): <img width="1048" height="704" alt="image" src="https://github.com/user-attachments/assets/652191ec-a653-444d-a239-da3e4e4b661e" /> After: <img width="1048" height="704" alt="image" src="https://github.com/user-attachments/assets/36947eb5-8997-483a-b36c-8af84872b158" /> ## Logical operators: Before (Zed Preview v0.201.3): <img width="511" height="102" alt="image" src="https://github.com/user-attachments/assets/9bf95bac-b076-4edd-a1f3-c3dfee98c2fd" /> After: <img width="511" height="102" alt="image" src="https://github.com/user-attachments/assets/82c7564d-b94d-41f5-9c48-e39fe3ba3b3e" /> ## Operator keyword: Before (Zed Preview v0.201.3): <img width="591" height="381" alt="image" src="https://github.com/user-attachments/assets/1d9dad05-2d86-4566-97f4-aff440dcd1df" /> After: <img width="591" height="381" alt="image" src="https://github.com/user-attachments/assets/a1ca289a-8a5d-4ffd-96db-0d511405da4b" /> ## Goto: Before (Zed Preview v0.201.3): <img width="610" height="430" alt="image" src="https://github.com/user-attachments/assets/2d00382b-d1ad-4e36-a3ee-88e06ec528ed" /> After: <img width="610" height="430" alt="image" src="https://github.com/user-attachments/assets/de887b21-66f0-4a70-9ed2-e18dbb3c81c9" /> Release Notes: - Enhance keyword highlighting for C++
This commit is contained in:
Generated
+1
-2
@@ -17185,8 +17185,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "tree-sitter-cpp"
|
||||
version = "0.23.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df2196ea9d47b4ab4a31b9297eaa5a5d19a0b121dceb9f118f6790ad0ab94743"
|
||||
source = "git+https://github.com/tree-sitter/tree-sitter-cpp?rev=5cb9b693cfd7bfacab1d9ff4acac1a4150700609#5cb9b693cfd7bfacab1d9ff4acac1a4150700609"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"tree-sitter-language",
|
||||
|
||||
+1
-1
@@ -624,7 +624,7 @@ tower-http = "0.4.4"
|
||||
tree-sitter = { version = "0.25.6", features = ["wasm"] }
|
||||
tree-sitter-bash = "0.25.0"
|
||||
tree-sitter-c = "0.23"
|
||||
tree-sitter-cpp = "0.23"
|
||||
tree-sitter-cpp = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev = "5cb9b693cfd7bfacab1d9ff4acac1a4150700609" }
|
||||
tree-sitter-css = "0.23"
|
||||
tree-sitter-diff = "0.1.0"
|
||||
tree-sitter-elixir = "0.3"
|
||||
|
||||
@@ -3,8 +3,27 @@
|
||||
(namespace_identifier) @namespace
|
||||
|
||||
(concept_definition
|
||||
(identifier) @concept)
|
||||
name: (identifier) @concept)
|
||||
|
||||
(requires_clause
|
||||
constraint: (template_type
|
||||
name: (type_identifier) @concept))
|
||||
|
||||
(module_name
|
||||
(identifier) @module)
|
||||
|
||||
(module_declaration
|
||||
name: (module_name
|
||||
(identifier) @module))
|
||||
|
||||
(import_declaration
|
||||
name: (module_name
|
||||
(identifier) @module))
|
||||
|
||||
(import_declaration
|
||||
partition: (module_partition
|
||||
(module_name
|
||||
(identifier) @module)))
|
||||
|
||||
(call_expression
|
||||
function: (qualified_identifier
|
||||
@@ -61,6 +80,9 @@
|
||||
(operator_name
|
||||
(identifier)? @operator) @function
|
||||
|
||||
(operator_name
|
||||
"<=>" @operator.spaceship)
|
||||
|
||||
(destructor_name (identifier) @function)
|
||||
|
||||
((namespace_identifier) @type
|
||||
@@ -68,21 +90,17 @@
|
||||
|
||||
(auto) @type
|
||||
(type_identifier) @type
|
||||
type :(primitive_type) @type.primitive
|
||||
(sized_type_specifier) @type.primitive
|
||||
|
||||
(requires_clause
|
||||
constraint: (template_type
|
||||
name: (type_identifier) @concept))
|
||||
type: (primitive_type) @type.builtin
|
||||
(sized_type_specifier) @type.builtin
|
||||
|
||||
(attribute
|
||||
name: (identifier) @keyword)
|
||||
name: (identifier) @attribute)
|
||||
|
||||
((identifier) @constant
|
||||
(#match? @constant "^_*[A-Z][A-Z\\d_]*$"))
|
||||
((identifier) @constant.builtin
|
||||
(#match? @constant.builtin "^_*[A-Z][A-Z\\d_]*$"))
|
||||
|
||||
(statement_identifier) @label
|
||||
(this) @variable.special
|
||||
(this) @variable.builtin
|
||||
("static_assert") @function.builtin
|
||||
|
||||
[
|
||||
@@ -96,7 +114,9 @@ type :(primitive_type) @type.primitive
|
||||
"co_return"
|
||||
"co_yield"
|
||||
"concept"
|
||||
"consteval"
|
||||
"constexpr"
|
||||
"constinit"
|
||||
"continue"
|
||||
"decltype"
|
||||
"default"
|
||||
@@ -105,15 +125,20 @@ type :(primitive_type) @type.primitive
|
||||
"else"
|
||||
"enum"
|
||||
"explicit"
|
||||
"export"
|
||||
"extern"
|
||||
"final"
|
||||
"for"
|
||||
"friend"
|
||||
"goto"
|
||||
"if"
|
||||
"import"
|
||||
"inline"
|
||||
"module"
|
||||
"namespace"
|
||||
"new"
|
||||
"noexcept"
|
||||
"operator"
|
||||
"override"
|
||||
"private"
|
||||
"protected"
|
||||
@@ -124,6 +149,7 @@ type :(primitive_type) @type.primitive
|
||||
"struct"
|
||||
"switch"
|
||||
"template"
|
||||
"thread_local"
|
||||
"throw"
|
||||
"try"
|
||||
"typedef"
|
||||
@@ -146,7 +172,7 @@ type :(primitive_type) @type.primitive
|
||||
"#ifndef"
|
||||
"#include"
|
||||
(preproc_directive)
|
||||
] @keyword
|
||||
] @keyword.directive
|
||||
|
||||
(comment) @comment
|
||||
|
||||
@@ -224,10 +250,24 @@ type :(primitive_type) @type.primitive
|
||||
">"
|
||||
"<="
|
||||
">="
|
||||
"<=>"
|
||||
"||"
|
||||
"?"
|
||||
"and"
|
||||
"and_eq"
|
||||
"bitand"
|
||||
"bitor"
|
||||
"compl"
|
||||
"not"
|
||||
"not_eq"
|
||||
"or"
|
||||
"or_eq"
|
||||
"xor"
|
||||
"xor_eq"
|
||||
] @operator
|
||||
|
||||
"<=>" @operator.spaceship
|
||||
|
||||
(binary_expression
|
||||
operator: "<=>" @operator.spaceship)
|
||||
|
||||
(conditional_expression ":" @operator)
|
||||
(user_defined_literal (literal_suffix) @operator)
|
||||
|
||||
Reference in New Issue
Block a user