From 286728b7e32588e3ef5abc6d99705fee5efe3dec Mon Sep 17 00:00:00 2001 From: ozacod <47009516+ozacod@users.noreply.github.com> Date: Tue, 6 Jan 2026 22:38:16 +0300 Subject: [PATCH] languages: Fix C/C++ outline for mixed storage classes and type qualifiers (#46135) Current tree sitter configuration for the outline was not working correctly since the rule required a strict order, firstly storage_class_specifier then type_qualifier. This resulted in a failure to recognize types such as "constexpr int", "const double", etc. This PR proposes a solution with diagnostic capture of type and storage qualifiers which ensures full context capture and works well with C++. Before: before After: after Release Notes: - Fixed outline configuration for C++ variables with complex specifiers. --- crates/languages/src/cpp/outline.scm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/crates/languages/src/cpp/outline.scm b/crates/languages/src/cpp/outline.scm index f833919e7a..1f20bf693c 100644 --- a/crates/languages/src/cpp/outline.scm +++ b/crates/languages/src/cpp/outline.scm @@ -46,8 +46,10 @@ name: (_) @name) @item (declaration - (storage_class_specifier) @context - (type_qualifier)? @context + [ + (storage_class_specifier) + (type_qualifier) + ]* @context type: (_) @context declarator: (init_declarator ; The declaration may define multiple variables, using @item on the @@ -129,7 +131,10 @@ (type_qualifier)? @context) @item (field_declaration - (type_qualifier)? @context + [ + (storage_class_specifier) + (type_qualifier) + ]* @context type: (_) @context declarator: [ (field_identifier) @name