File indexing completed on 2024-04-28 04:38:07
0001 /* 0002 SPDX-FileCopyrightText: 2015 Sergey Kalinichev <kalinichev.so.0@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "clanghighlighting.h" 0008 0009 #include "duchain/macrodefinition.h" 0010 0011 #include <language/duchain/topducontext.h> 0012 0013 using namespace KDevelop; 0014 0015 class ClangHighlighting::Instance : public KDevelop::CodeHighlightingInstance 0016 { 0017 public: 0018 explicit Instance(const KDevelop::CodeHighlighting* highlighting); 0019 0020 CodeHighlightingType typeForDeclaration(KDevelop::Declaration* dec, KDevelop::DUContext* context) const override 0021 { 0022 if (auto macro = dynamic_cast<MacroDefinition*>(dec)) { 0023 if (macro->isFunctionLike()) { 0024 return CodeHighlightingType::MacroFunctionLike; 0025 } 0026 } 0027 0028 return CodeHighlightingInstance::typeForDeclaration(dec, context); 0029 } 0030 0031 bool useRainbowColor(KDevelop::Declaration* dec) const override 0032 { 0033 return dec->context()->type() == DUContext::Function || dec->context()->type() == DUContext::Other; 0034 } 0035 0036 }; 0037 0038 ClangHighlighting::Instance::Instance(const KDevelop::CodeHighlighting* highlighting) 0039 : KDevelop::CodeHighlightingInstance(highlighting) 0040 { 0041 } 0042 0043 ClangHighlighting::ClangHighlighting(QObject* parent) 0044 : KDevelop::CodeHighlighting(parent) 0045 { 0046 } 0047 0048 KDevelop::CodeHighlightingInstance* ClangHighlighting::createInstance() const 0049 { 0050 return new Instance(this); 0051 } 0052 0053 #include "moc_clanghighlighting.cpp"