From 30ca3ac44ef8a0497c0806ead7343c3001954669 Mon Sep 17 00:00:00 2001
From: ozacod <47009516+ozacod@users.noreply.github.com>
Date: Fri, 23 Jan 2026 17:57:23 +0300
Subject: [PATCH] languages: Add attribute highlighting in C (#47156)
Closes #46125.
Before:
After:
Release Notes:
- Updated tree-sitter-c for highlighting attribute specifier in C
---
Cargo.lock | 4 ++--
Cargo.toml | 2 +-
crates/languages/src/c/highlights.scm | 12 ++++++++++++
3 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 4f5c18e14c03a97619ea1c59c9880eeae45cbcbd..f5abe2d4df9f346c35dcb952e231951cd503c5e9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -17594,9 +17594,9 @@ dependencies = [
[[package]]
name = "tree-sitter-c"
-version = "0.23.4"
+version = "0.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afd2b1bf1585dc2ef6d69e87d01db8adb059006649dd5f96f31aa789ee6e9c71"
+checksum = "1a3aad8f0129083a59fe8596157552d2bb7148c492d44c21558d68ca1c722707"
dependencies = [
"cc",
"tree-sitter-language",
diff --git a/Cargo.toml b/Cargo.toml
index d8f2b1cdf7d7327bd7aee30466c34f0a712c6ecc..038ccf0e823f8e321f1ea815b843983e56e8714c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -685,7 +685,7 @@ toml_edit = { version = "0.22", default-features = false, features = ["display",
tower-http = "0.4.4"
tree-sitter = { version = "0.26", features = ["wasm"] }
tree-sitter-bash = "0.25.1"
-tree-sitter-c = "0.23"
+tree-sitter-c = "0.24.1"
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"
diff --git a/crates/languages/src/c/highlights.scm b/crates/languages/src/c/highlights.scm
index 578ef7aedda304f0e7e0b0ffee61e2761d62b918..0ba43f2f7c6422271d476ba415bea5a42beb9c41 100644
--- a/crates/languages/src/c/highlights.scm
+++ b/crates/languages/src/c/highlights.scm
@@ -136,3 +136,15 @@
(primitive_type)
(sized_type_specifier)
] @type
+
+; GNU __attribute__
+(attribute_specifier) @attribute
+(attribute_specifier
+ (argument_list
+ (identifier) @attribute))
+
+; C23 [[attributes]]
+(attribute
+ prefix: (identifier) @attribute)
+(attribute
+ name: (identifier) @attribute)