forked from qt-creator/qt-creator
TextEditor: update the infobar after setting up the highlighter
removes the need of public function and member carrying the information whether a highlight definition was found. Change-Id: I8a0f24c9b376c01246116b502f5bbc06b3c65d21 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -611,6 +611,7 @@ public:
|
|||||||
void updateCodeFoldingVisible();
|
void updateCodeFoldingVisible();
|
||||||
|
|
||||||
void reconfigure();
|
void reconfigure();
|
||||||
|
void updateSyntaxInfoBar(bool showInfo);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TextEditorWidget *q;
|
TextEditorWidget *q;
|
||||||
@@ -768,8 +769,6 @@ public:
|
|||||||
|
|
||||||
QScopedPointer<ClipboardAssistProvider> m_clipboardAssistProvider;
|
QScopedPointer<ClipboardAssistProvider> m_clipboardAssistProvider;
|
||||||
|
|
||||||
bool m_isMissingSyntaxDefinition = false;
|
|
||||||
|
|
||||||
QScopedPointer<AutoCompleter> m_autoCompleter;
|
QScopedPointer<AutoCompleter> m_autoCompleter;
|
||||||
CommentDefinition m_commentDefinition;
|
CommentDefinition m_commentDefinition;
|
||||||
|
|
||||||
@@ -904,33 +903,6 @@ void TextEditorWidgetPrivate::showTextMarksToolTip(const QPoint &pos,
|
|||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
/*!
|
|
||||||
* Test if syntax highlighter is available (or unneeded) for \a widget.
|
|
||||||
* If not found, show a warning with a link to the relevant settings page.
|
|
||||||
*/
|
|
||||||
static void updateEditorInfoBar(TextEditorWidget *widget)
|
|
||||||
{
|
|
||||||
Id id(Constants::INFO_SYNTAX_DEFINITION);
|
|
||||||
InfoBar *infoBar = widget->textDocument()->infoBar();
|
|
||||||
if (!widget->isMissingSyntaxDefinition()) {
|
|
||||||
infoBar->removeInfo(id);
|
|
||||||
} else if (infoBar->canInfoBeAdded(id)) {
|
|
||||||
InfoBarEntry info(id,
|
|
||||||
BaseTextEditor::tr("A highlight definition was not found for this file. "
|
|
||||||
"Would you like to update highlight definition files?"),
|
|
||||||
InfoBarEntry::GlobalSuppressionEnabled);
|
|
||||||
info.setCustomButtonInfo(BaseTextEditor::tr("Update Definitions"), [id, widget]() {
|
|
||||||
widget->textDocument()->infoBar()->removeInfo(id);
|
|
||||||
Highlighter::updateDefinitions([widget = QPointer<TextEditorWidget>(widget)]() {
|
|
||||||
if (widget)
|
|
||||||
widget->configureGenericHighlighter();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
infoBar->addInfo(info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QString TextEditorWidget::plainTextFromSelection(const QTextCursor &cursor) const
|
QString TextEditorWidget::plainTextFromSelection(const QTextCursor &cursor) const
|
||||||
{
|
{
|
||||||
// Copy the selected text as plain text
|
// Copy the selected text as plain text
|
||||||
@@ -3301,6 +3273,30 @@ void TextEditorWidgetPrivate::reconfigure()
|
|||||||
q->configureGenericHighlighter();
|
q->configureGenericHighlighter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TextEditorWidgetPrivate::updateSyntaxInfoBar(bool showInfo)
|
||||||
|
{
|
||||||
|
Id id(Constants::INFO_SYNTAX_DEFINITION);
|
||||||
|
InfoBar *infoBar = m_document->infoBar();
|
||||||
|
|
||||||
|
if (showInfo) {
|
||||||
|
InfoBarEntry info(id,
|
||||||
|
BaseTextEditor::tr(
|
||||||
|
"A highlight definition was not found for this file. "
|
||||||
|
"Would you like to update highlight definition files?"),
|
||||||
|
InfoBarEntry::GlobalSuppressionEnabled);
|
||||||
|
info.setCustomButtonInfo(BaseTextEditor::tr("Update Definitions"), [&]() {
|
||||||
|
m_document->infoBar()->removeInfo(id);
|
||||||
|
Highlighter::updateDefinitions([widget = QPointer<TextEditorWidget>(q)]() {
|
||||||
|
if (widget)
|
||||||
|
widget->configureGenericHighlighter();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
infoBar->addInfo(info);
|
||||||
|
} else {
|
||||||
|
infoBar->removeInfo(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool TextEditorWidget::codeFoldingVisible() const
|
bool TextEditorWidget::codeFoldingVisible() const
|
||||||
{
|
{
|
||||||
return d->m_codeFoldingVisible;
|
return d->m_codeFoldingVisible;
|
||||||
@@ -8514,20 +8510,17 @@ void TextEditorWidget::configureGenericHighlighter()
|
|||||||
|
|
||||||
if (definition.isValid()) {
|
if (definition.isValid()) {
|
||||||
highlighter->setDefinition(definition);
|
highlighter->setDefinition(definition);
|
||||||
d->m_isMissingSyntaxDefinition = false;
|
|
||||||
d->m_commentDefinition.singleLine = definition.singleLineCommentMarker();
|
d->m_commentDefinition.singleLine = definition.singleLineCommentMarker();
|
||||||
d->m_commentDefinition.multiLineStart = definition.multiLineCommentMarker().first;
|
d->m_commentDefinition.multiLineStart = definition.multiLineCommentMarker().first;
|
||||||
d->m_commentDefinition.multiLineEnd = definition.multiLineCommentMarker().second;
|
d->m_commentDefinition.multiLineEnd = definition.multiLineCommentMarker().second;
|
||||||
|
|
||||||
setCodeFoldingSupported(true);
|
setCodeFoldingSupported(true);
|
||||||
} else {
|
|
||||||
d->m_isMissingSyntaxDefinition =
|
|
||||||
!TextEditorSettings::highlighterSettings().isIgnoredFilePattern(fileName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
textDocument()->setFontSettings(TextEditorSettings::fontSettings());
|
d->updateSyntaxInfoBar(!definition.isValid()
|
||||||
|
&& !TextEditorSettings::highlighterSettings().isIgnoredFilePattern(fileName));
|
||||||
|
|
||||||
updateEditorInfoBar(this);
|
textDocument()->setFontSettings(TextEditorSettings::fontSettings());
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextEditorWidget::blockNumberForVisibleRow(int row) const
|
int TextEditorWidget::blockNumberForVisibleRow(int row) const
|
||||||
@@ -8562,11 +8555,6 @@ HighlightScrollBarController *TextEditorWidget::highlightScrollBarController() c
|
|||||||
return d->m_highlightScrollBarController;
|
return d->m_highlightScrollBarController;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextEditorWidget::isMissingSyntaxDefinition() const
|
|
||||||
{
|
|
||||||
return d->m_isMissingSyntaxDefinition;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The remnants of PlainTextEditor.
|
// The remnants of PlainTextEditor.
|
||||||
void TextEditorWidget::setupGenericHighlighter()
|
void TextEditorWidget::setupGenericHighlighter()
|
||||||
{
|
{
|
||||||
|
@@ -332,7 +332,6 @@ public:
|
|||||||
|
|
||||||
// the blocks list must be sorted
|
// the blocks list must be sorted
|
||||||
void setIfdefedOutBlocks(const QList<BlockRange> &blocks);
|
void setIfdefedOutBlocks(const QList<BlockRange> &blocks);
|
||||||
bool isMissingSyntaxDefinition() const;
|
|
||||||
|
|
||||||
enum Side { Left, Right };
|
enum Side { Left, Right };
|
||||||
QAction *insertExtraToolBarWidget(Side side, QWidget *widget);
|
QAction *insertExtraToolBarWidget(Side side, QWidget *widget);
|
||||||
|
Reference in New Issue
Block a user