forked from qt-creator/qt-creator
ClangCodeModel/TextEditor: Add support for highlighting parameters
This is already built into clang, so we just need to expose it to the highlighter and the UI. Fixes: QTCREATORBUG-24880 Change-Id: I6d0595af2589a9b69eb954aafad46457ab2c5752 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
<style name="String" foreground="#d69545"/>
|
||||
<style name="Type" foreground="#ff8080"/>
|
||||
<style name="Local" foreground="#d6bb9a"/>
|
||||
<style name="Parameter" foreground="#d6bb9a"/>
|
||||
<style name="Global" foreground="#9aa7d6"/>
|
||||
<style name="Field"/>
|
||||
<style name="Static" foreground="#66a334" italic="true"/>
|
||||
|
@@ -13,6 +13,7 @@
|
||||
<style name="PrimitiveType" foreground="#000080" bold="true"/>
|
||||
<style name="Label" foreground="#800000" bold="true"/>
|
||||
<style name="Local" foreground="#000000"/>
|
||||
<style name="Parameter" foreground="#000000"/>
|
||||
<style name="Number" foreground="#0000ff"/>
|
||||
<style name="Operator" foreground="#000000"/>
|
||||
<style name="Overloaded Operator" foreground="#000000"/>
|
||||
|
@@ -26,6 +26,7 @@
|
||||
<style name="String" foreground="#2aa198"/>
|
||||
<style name="Type" foreground="#b58900"/>
|
||||
<style name="Local" foreground="#839496"/>
|
||||
<style name="Parameter" foreground="#839496"/>
|
||||
<style name="Global"/>
|
||||
<style name="Field" foreground="#268bd2"/>
|
||||
<style name="Static" foreground="#b58900" italic="true"/>
|
||||
|
@@ -26,6 +26,7 @@
|
||||
<style name="String" foreground="#2aa198"/>
|
||||
<style name="Type" foreground="#b58900"/>
|
||||
<style name="Local" foreground="#657b83"/>
|
||||
<style name="Parameter" foreground="#657b83"/>
|
||||
<style name="Global"/>
|
||||
<style name="Field" foreground="#268bd2"/>
|
||||
<style name="Static" foreground="#b58900" italic="true"/>
|
||||
|
@@ -78,6 +78,7 @@ enum class HighlightingType : quint8
|
||||
Type,
|
||||
PrimitiveType,
|
||||
LocalVariable,
|
||||
Parameter,
|
||||
Field,
|
||||
GlobalVariable,
|
||||
Enumeration,
|
||||
|
@@ -138,6 +138,7 @@ public:
|
||||
|
||||
return extraInfo.declaration
|
||||
&& types.mainHighlightingType != HighlightingType::LocalVariable
|
||||
&& types.mainHighlightingType != HighlightingType::Parameter
|
||||
&& (types.mixinHighlightingTypes.contains(HighlightingType::Operator)
|
||||
== extraInfo.token.startsWith("operator"));
|
||||
}
|
||||
|
@@ -50,6 +50,8 @@ TextEditor::TextStyle toTextStyle(ClangBackEnd::HighlightingType type)
|
||||
return TextEditor::C_PRIMITIVE_TYPE;
|
||||
case HighlightingType::LocalVariable:
|
||||
return TextEditor::C_LOCAL;
|
||||
case HighlightingType::Parameter:
|
||||
return TextEditor::C_PARAMETER;
|
||||
case HighlightingType::Field:
|
||||
case HighlightingType::QtProperty:
|
||||
return TextEditor::C_FIELD;
|
||||
|
@@ -80,7 +80,7 @@ static Utils::optional<TextEditor::TextStyle> styleForScopes(const QList<QString
|
||||
{"variable.other.member", TextEditor::C_FIELD},
|
||||
{"variable.other.field", TextEditor::C_FIELD},
|
||||
{"variable.other.field.static", TextEditor::C_GLOBAL},
|
||||
{"variable.parameter", TextEditor::C_LOCAL},
|
||||
{"variable.parameter", TextEditor::C_PARAMETER},
|
||||
};
|
||||
|
||||
for (QString scope : scopes) {
|
||||
|
@@ -55,6 +55,7 @@ const char *nameForStyle(TextStyle style)
|
||||
case C_STRING: return "String";
|
||||
case C_TYPE: return "Type";
|
||||
case C_LOCAL: return "Local";
|
||||
case C_PARAMETER: return "Parameter";
|
||||
case C_GLOBAL: return "Global";
|
||||
case C_FIELD: return "Field";
|
||||
// TODO: Rename "Static" to "Enumeration" in next major update,
|
||||
|
@@ -55,6 +55,7 @@ enum TextStyle : quint8 {
|
||||
C_STRING,
|
||||
C_TYPE,
|
||||
C_LOCAL,
|
||||
C_PARAMETER,
|
||||
C_GLOBAL,
|
||||
C_FIELD,
|
||||
C_ENUMERATION,
|
||||
|
@@ -162,6 +162,8 @@ FormatDescriptions TextEditorSettingsPrivate::initialFormats()
|
||||
Qt::darkMagenta);
|
||||
formatDescr.emplace_back(C_LOCAL, tr("Local"),
|
||||
tr("Local variables."), QColor(9, 46, 100));
|
||||
formatDescr.emplace_back(C_PARAMETER, tr("Parameter"),
|
||||
tr("Function or method parameters."), QColor(9, 46, 100));
|
||||
formatDescr.emplace_back(C_FIELD, tr("Field"),
|
||||
tr("Class' data members."), Qt::darkRed);
|
||||
formatDescr.emplace_back(C_GLOBAL, tr("Global"),
|
||||
|
@@ -110,6 +110,11 @@ bool Cursor::isInvalidDeclaration() const
|
||||
return clang_isInvalidDeclaration(m_cxCursor);
|
||||
}
|
||||
|
||||
bool Cursor::isParameter() const
|
||||
{
|
||||
return kind() == CXCursor_ParmDecl;
|
||||
}
|
||||
|
||||
bool Cursor::isLocalVariable() const
|
||||
{
|
||||
switch (semanticParent().kind()) {
|
||||
|
@@ -62,6 +62,7 @@ public:
|
||||
bool isCompoundType() const;
|
||||
bool isDeclaration() const;
|
||||
bool isInvalidDeclaration() const;
|
||||
bool isParameter() const;
|
||||
bool isLocalVariable() const;
|
||||
bool isReference() const;
|
||||
bool isExpression() const;
|
||||
|
@@ -142,7 +142,9 @@ void TokenInfo::overloadedDeclRefKind(const Cursor &cursor)
|
||||
|
||||
void TokenInfo::variableKind(const Cursor &cursor)
|
||||
{
|
||||
if (cursor.isLocalVariable())
|
||||
if (cursor.isParameter())
|
||||
m_types.mainHighlightingType = HighlightingType::Parameter;
|
||||
else if (cursor.isLocalVariable())
|
||||
m_types.mainHighlightingType = HighlightingType::LocalVariable;
|
||||
else
|
||||
m_types.mainHighlightingType = HighlightingType::GlobalVariable;
|
||||
|
Reference in New Issue
Block a user