[clang-tools-extra] feat: highlight for import, export keyword of CXX Module (PR #204511)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 18 03:22:06 PDT 2026
https://github.com/Decodetalkers updated https://github.com/llvm/llvm-project/pull/204511
>From eb262bc8f3ca3918ca255f1e98c0cd1cb8c836d8 Mon Sep 17 00:00:00 2001
From: ShootingStarDragons <ShootingStarDragons at protonmail.com>
Date: Thu, 18 Jun 2026 18:08:05 +0900
Subject: [PATCH] feat: highlight for import, export keyword This pr aims to
add highlight for import and export keyword And induced new SemanticHighlight
`keyword`
---
.../clangd/SemanticHighlighting.cpp | 16 ++++++++++++++++
clang-tools-extra/clangd/SemanticHighlighting.h | 1 +
2 files changed, 17 insertions(+)
diff --git a/clang-tools-extra/clangd/SemanticHighlighting.cpp b/clang-tools-extra/clangd/SemanticHighlighting.cpp
index 856904bc810d1..2f8f39818d24f 100644
--- a/clang-tools-extra/clangd/SemanticHighlighting.cpp
+++ b/clang-tools-extra/clangd/SemanticHighlighting.cpp
@@ -582,6 +582,18 @@ class CollectExtraHighlightings
return true;
}
+ bool VisitImportDecl(const ImportDecl *D) {
+ H.addToken(D->getLocation(), HighlightingKind::Keyword);
+ for (const auto ModuleLoc: D->getIdentifierLocs()) {
+ H.addToken(ModuleLoc, HighlightingKind::Namespace);
+ }
+ return true;
+ }
+ bool VisitExportDecl(const ExportDecl *D) {
+ H.addToken(D->getLocation(), HighlightingKind::Keyword);
+ return true;
+ }
+
bool VisitTagDecl(TagDecl *D) {
for (TemplateParameterList *TPL : D->getTemplateParameterLists())
H.addAngleBracketTokens(TPL->getLAngleLoc(), TPL->getRAngleLoc());
@@ -1120,6 +1132,8 @@ llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, HighlightingKind K) {
return OS << "Function";
case HighlightingKind::Method:
return OS << "Method";
+ case HighlightingKind::Keyword:
+ return OS << "Keyword";
case HighlightingKind::StaticMethod:
return OS << "StaticMethod";
case HighlightingKind::Field:
@@ -1323,6 +1337,8 @@ llvm::StringRef toSemanticTokenType(HighlightingKind Kind) {
return "function";
case HighlightingKind::Method:
return "method";
+ case HighlightingKind::Keyword:
+ return "keyword";
case HighlightingKind::StaticMethod:
// FIXME: better method with static modifier?
return "function";
diff --git a/clang-tools-extra/clangd/SemanticHighlighting.h b/clang-tools-extra/clangd/SemanticHighlighting.h
index 59d742b83ee52..3b1c12418becb 100644
--- a/clang-tools-extra/clangd/SemanticHighlighting.h
+++ b/clang-tools-extra/clangd/SemanticHighlighting.h
@@ -34,6 +34,7 @@ enum class HighlightingKind {
Parameter,
Function,
Method,
+ Keyword,
StaticMethod,
Field,
StaticField,
More information about the cfe-commits
mailing list