forked from qt-creator/qt-creator
TextEditor/Clang: Add font settings for clang diagnostics
Change-Id: Iea2b4fabf0f4620b12f88b108eb59c160945c8d8 Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
This commit is contained in:
committed by
David Schulz
parent
408ac55741
commit
0d20d56183
@@ -42,7 +42,10 @@
|
|||||||
#include <cpptools/cpptoolsplugin.h>
|
#include <cpptools/cpptoolsplugin.h>
|
||||||
#include <cpptools/cppworkingcopy.h>
|
#include <cpptools/cppworkingcopy.h>
|
||||||
|
|
||||||
|
#include <texteditor/fontsettings.h>
|
||||||
#include <texteditor/texteditor.h>
|
#include <texteditor/texteditor.h>
|
||||||
|
#include <texteditor/texteditorconstants.h>
|
||||||
|
#include <texteditor/texteditorsettings.h>
|
||||||
|
|
||||||
#include <cplusplus/CppDocument.h>
|
#include <cplusplus/CppDocument.h>
|
||||||
|
|
||||||
@@ -389,34 +392,31 @@ void addSelections(const std::vector<ClangBackEnd::DiagnosticContainer> &diagnos
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QTextCharFormat fontsettingsTextFormat(TextEditor::TextStyle textStyle)
|
||||||
|
{
|
||||||
|
return TextEditor::TextEditorSettings::fontSettings().toTextCharFormat(textStyle);
|
||||||
|
}
|
||||||
|
|
||||||
void addWarningSelections(const std::vector<ClangBackEnd::DiagnosticContainer> &diagnostics,
|
void addWarningSelections(const std::vector<ClangBackEnd::DiagnosticContainer> &diagnostics,
|
||||||
QTextDocument *textDocument,
|
QTextDocument *textDocument,
|
||||||
QList<QTextEdit::ExtraSelection> &extraSelections)
|
QList<QTextEdit::ExtraSelection> &extraSelections)
|
||||||
{
|
{
|
||||||
QTextCharFormat warningFormat;
|
addSelections(diagnostics,
|
||||||
warningFormat.setUnderlineStyle(QTextCharFormat::SingleUnderline);
|
textDocument,
|
||||||
warningFormat.setUnderlineColor(QColor(180, 180, 0, 255));
|
fontsettingsTextFormat(TextEditor::C_WARNING),
|
||||||
|
fontsettingsTextFormat(TextEditor::C_WARNING_CONTEXT),
|
||||||
QTextCharFormat warningRangeFormat;
|
extraSelections);
|
||||||
warningRangeFormat.setUnderlineStyle(QTextCharFormat::DotLine);
|
|
||||||
warningRangeFormat.setUnderlineColor(QColor(180, 180, 0, 255));
|
|
||||||
|
|
||||||
addSelections(diagnostics, textDocument, warningFormat, warningRangeFormat, extraSelections);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void addErrorSelections(const std::vector<ClangBackEnd::DiagnosticContainer> &diagnostics,
|
void addErrorSelections(const std::vector<ClangBackEnd::DiagnosticContainer> &diagnostics,
|
||||||
QTextDocument *textDocument,
|
QTextDocument *textDocument,
|
||||||
QList<QTextEdit::ExtraSelection> &extraSelections)
|
QList<QTextEdit::ExtraSelection> &extraSelections)
|
||||||
{
|
{
|
||||||
QTextCharFormat errorFormat;
|
addSelections(diagnostics,
|
||||||
errorFormat.setUnderlineStyle(QTextCharFormat::SingleUnderline);
|
textDocument,
|
||||||
errorFormat.setUnderlineColor(QColor(255, 0, 0, 255));
|
fontsettingsTextFormat(TextEditor::C_ERROR),
|
||||||
|
fontsettingsTextFormat(TextEditor::C_ERROR_CONTEXT),
|
||||||
QTextCharFormat errorRangeFormat;
|
extraSelections);
|
||||||
errorRangeFormat.setUnderlineStyle(QTextCharFormat::DotLine);
|
|
||||||
errorRangeFormat.setUnderlineColor(QColor(255, 0, 0, 255));
|
|
||||||
|
|
||||||
addSelections(diagnostics, textDocument, errorFormat, errorRangeFormat, extraSelections);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
|||||||
@@ -152,6 +152,19 @@ bool FontSettings::equals(const FontSettings &f) const
|
|||||||
&& m_scheme == f.m_scheme;
|
&& m_scheme == f.m_scheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool isDiagnostic(TextStyle textStyle)
|
||||||
|
{
|
||||||
|
switch (textStyle) {
|
||||||
|
case C_ERROR:
|
||||||
|
case C_ERROR_CONTEXT:
|
||||||
|
case C_WARNING:
|
||||||
|
case C_WARNING_CONTEXT: return true;
|
||||||
|
default: return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_UNREACHABLE();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the QTextCharFormat of the given format category.
|
* Returns the QTextCharFormat of the given format category.
|
||||||
*/
|
*/
|
||||||
@@ -175,12 +188,23 @@ QTextCharFormat FontSettings::toTextCharFormat(TextStyle category) const
|
|||||||
tf.setToolTip(QCoreApplication::translate("FontSettings_C_OCCURRENCES_UNUSED",
|
tf.setToolTip(QCoreApplication::translate("FontSettings_C_OCCURRENCES_UNUSED",
|
||||||
"Unused variable"));
|
"Unused variable"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isDiagnostic(category)) {
|
||||||
|
if (category == C_ERROR || category == C_WARNING)
|
||||||
|
tf.setUnderlineStyle(QTextCharFormat::SingleUnderline);
|
||||||
|
else
|
||||||
|
tf.setUnderlineStyle(QTextCharFormat::DotLine);
|
||||||
|
|
||||||
|
tf.setUnderlineColor(f.foreground());
|
||||||
|
}
|
||||||
|
|
||||||
if (f.foreground().isValid()
|
if (f.foreground().isValid()
|
||||||
&& category != C_OCCURRENCES
|
&& category != C_OCCURRENCES
|
||||||
&& category != C_OCCURRENCES_RENAME
|
&& category != C_OCCURRENCES_RENAME
|
||||||
&& category != C_OCCURRENCES_UNUSED
|
&& category != C_OCCURRENCES_UNUSED
|
||||||
&& category != C_SEARCH_RESULT
|
&& category != C_SEARCH_RESULT
|
||||||
&& category != C_PARENTHESES_MISMATCH)
|
&& category != C_PARENTHESES_MISMATCH
|
||||||
|
&& !isDiagnostic(category))
|
||||||
tf.setForeground(f.foreground());
|
tf.setForeground(f.foreground());
|
||||||
if (f.background().isValid() && (category == C_TEXT || f.background() != m_scheme.formatFor(C_TEXT).background()))
|
if (f.background().isValid() && (category == C_TEXT || f.background() != m_scheme.formatFor(C_TEXT).background()))
|
||||||
tf.setBackground(f.background());
|
tf.setBackground(f.background());
|
||||||
|
|||||||
@@ -99,6 +99,11 @@ const char *nameForStyle(TextStyle style)
|
|||||||
|
|
||||||
case C_LOG_CHANGE_LINE: return "LogChangeLine";
|
case C_LOG_CHANGE_LINE: return "LogChangeLine";
|
||||||
|
|
||||||
|
case C_ERROR: return "Error";
|
||||||
|
case C_ERROR_CONTEXT: return "ErrorContext";
|
||||||
|
case C_WARNING: return "Warning";
|
||||||
|
case C_WARNING_CONTEXT: return "WarningContext";
|
||||||
|
|
||||||
case C_LAST_STYLE_SENTINEL: return "LastStyleSentinel";
|
case C_LAST_STYLE_SENTINEL: return "LastStyleSentinel";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,6 +98,11 @@ enum TextStyle {
|
|||||||
|
|
||||||
C_LOG_CHANGE_LINE,
|
C_LOG_CHANGE_LINE,
|
||||||
|
|
||||||
|
C_WARNING,
|
||||||
|
C_WARNING_CONTEXT,
|
||||||
|
C_ERROR,
|
||||||
|
C_ERROR_CONTEXT,
|
||||||
|
|
||||||
C_LAST_STYLE_SENTINEL
|
C_LAST_STYLE_SENTINEL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -276,6 +276,24 @@ TextEditorSettings::TextEditorSettings(QObject *parent)
|
|||||||
tr("Applied to lines describing changes in VCS log."),
|
tr("Applied to lines describing changes in VCS log."),
|
||||||
Format(QColor(192, 0, 0), QColor())));
|
Format(QColor(192, 0, 0), QColor())));
|
||||||
|
|
||||||
|
formatDescr.append(FormatDescription(C_ERROR,
|
||||||
|
tr("Error"),
|
||||||
|
tr("Underline color of error diagnostics."),
|
||||||
|
{{255,0, 0}, QColor()}));
|
||||||
|
formatDescr.append(FormatDescription(C_ERROR_CONTEXT,
|
||||||
|
tr("Error Context"),
|
||||||
|
tr("Underline color of the contexts of error diagnostics."),
|
||||||
|
{{255,0, 0}, QColor()}));
|
||||||
|
formatDescr.append(FormatDescription(C_WARNING,
|
||||||
|
tr("Warning"),
|
||||||
|
tr("Underline color of warning diagnostics."),
|
||||||
|
{{255, 190, 0}, QColor()}));
|
||||||
|
formatDescr.append(FormatDescription(C_WARNING_CONTEXT,
|
||||||
|
tr("Warning Context"),
|
||||||
|
tr("Underline color of the contexts of warning diagnostics."),
|
||||||
|
{{255, 190, 0}, QColor()}));
|
||||||
|
|
||||||
|
|
||||||
d->m_fontSettingsPage = new FontSettingsPage(formatDescr,
|
d->m_fontSettingsPage = new FontSettingsPage(formatDescr,
|
||||||
Constants::TEXT_EDITOR_FONT_SETTINGS,
|
Constants::TEXT_EDITOR_FONT_SETTINGS,
|
||||||
this);
|
this);
|
||||||
|
|||||||
Reference in New Issue
Block a user