summaryrefslogtreecommitdiff
path: root/src/plugins/texteditor/texteditor.cpp
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2018-11-08 11:39:48 +0100
committerDavid Schulz <david.schulz@qt.io>2019-01-28 11:37:08 +0000
commit14834e6b0a4e7c1272ec3a1838b0634dd66e72ea (patch)
tree23caed8a748c0d38c59e1f92b448551122d11df2 /src/plugins/texteditor/texteditor.cpp
parent1c77d7e1a79f59485eb90c066d17ec7436f46a93 (diff)
downloadqt-creator-14834e6b0a4e7c1272ec3a1838b0634dd66e72ea.tar.gz
TextEditor: replace generic highlighter with ksyntaxhighlighting
Fixes: QTCREATORBUG-21029 Change-Id: I9894c4384e0e47da6bf030b7b8e07c3ad4737ff3 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/texteditor/texteditor.cpp')
-rw-r--r--src/plugins/texteditor/texteditor.cpp79
1 files changed, 35 insertions, 44 deletions
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp
index 96cf099c5e..aed04a3ba7 100644
--- a/src/plugins/texteditor/texteditor.cpp
+++ b/src/plugins/texteditor/texteditor.cpp
@@ -37,31 +37,27 @@
#include "circularclipboardassist.h"
#include "codecselector.h"
#include "completionsettings.h"
-#include "highlighterutils.h"
+#include "extraencodingsettings.h"
+#include "highlighter.h"
+#include "highlightersettings.h"
#include "icodestylepreferences.h"
#include "indenter.h"
+#include "refactoroverlay.h"
#include "snippets/snippet.h"
+#include "storagesettings.h"
#include "syntaxhighlighter.h"
#include "tabsettings.h"
#include "textdocument.h"
#include "textdocumentlayout.h"
#include "texteditorconstants.h"
#include "texteditoroverlay.h"
-#include "refactoroverlay.h"
#include "texteditorsettings.h"
#include "typingsettings.h"
-#include "extraencodingsettings.h"
-#include "storagesettings.h"
#include <texteditor/codeassist/assistinterface.h>
#include <texteditor/codeassist/codeassistant.h>
#include <texteditor/codeassist/completionassistprovider.h>
#include <texteditor/codeassist/documentcontentcompletion.h>
-#include <texteditor/generichighlighter/context.h>
-#include <texteditor/generichighlighter/highlightdefinition.h>
-#include <texteditor/generichighlighter/highlighter.h>
-#include <texteditor/generichighlighter/highlightersettings.h>
-#include <texteditor/generichighlighter/manager.h>
#include <coreplugin/icore.h>
#include <aggregation/aggregate.h>
@@ -94,6 +90,7 @@
#include <QClipboard>
#include <QCoreApplication>
#include <QDebug>
+#include <QFutureWatcher>
#include <QGridLayout>
#include <QKeyEvent>
#include <QMap>
@@ -847,17 +844,21 @@ TextEditorWidgetPrivate::~TextEditorWidgetPrivate()
*/
static void updateEditorInfoBar(TextEditorWidget *widget)
{
- Id infoSyntaxDefinition(Constants::INFO_SYNTAX_DEFINITION);
+ Id id(Constants::INFO_SYNTAX_DEFINITION);
InfoBar *infoBar = widget->textDocument()->infoBar();
if (!widget->isMissingSyntaxDefinition()) {
- infoBar->removeInfo(infoSyntaxDefinition);
- } else if (infoBar->canInfoBeAdded(infoSyntaxDefinition)) {
- InfoBarEntry info(infoSyntaxDefinition,
+ 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 try to find one?"),
+ "Would you like to update highlight definition files?"),
InfoBarEntry::GlobalSuppressionEnabled);
- info.setCustomButtonInfo(BaseTextEditor::tr("Show Highlighter Options..."), [widget]() {
- ICore::showOptionsDialog(Constants::TEXT_EDITOR_HIGHLIGHTER_SETTINGS, widget);
+ 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);
@@ -8463,37 +8464,30 @@ QString TextEditorWidget::textAt(int from, int to) const
void TextEditorWidget::configureGenericHighlighter()
{
auto highlighter = new Highlighter();
- highlighter->setTabSettings(textDocument()->tabSettings());
textDocument()->setSyntaxHighlighter(highlighter);
setCodeFoldingSupported(false);
const QString type = textDocument()->mimeType();
const MimeType mimeType = Utils::mimeTypeForName(type);
- if (mimeType.isValid()) {
- d->m_isMissingSyntaxDefinition = true;
-
- QString definitionId;
- setMimeTypeForHighlighter(highlighter, mimeType, textDocument()->filePath().toString(),
- &definitionId);
-
- if (!definitionId.isEmpty()) {
- d->m_isMissingSyntaxDefinition = false;
- const QSharedPointer<HighlightDefinition> &definition =
- Manager::instance()->definition(definitionId);
- if (!definition.isNull() && definition->isValid()) {
- d->m_commentDefinition.isAfterWhiteSpaces = definition->isCommentAfterWhiteSpaces();
- d->m_commentDefinition.singleLine = definition->singleLineComment();
- d->m_commentDefinition.multiLineStart = definition->multiLineCommentStart();
- d->m_commentDefinition.multiLineEnd = definition->multiLineCommentEnd();
-
- setCodeFoldingSupported(true);
- }
- } else {
- const QString fileName = textDocument()->filePath().toString();
- if (TextEditorSettings::highlighterSettings().isIgnoredFilePattern(fileName))
- d->m_isMissingSyntaxDefinition = false;
- }
+ const QString fileName = textDocument()->filePath().fileName();
+ KSyntaxHighlighting::Definition definition;
+ if (mimeType.isValid())
+ definition = Highlighter::definitionForMimeType(mimeType.name());
+ if (!definition.isValid())
+ definition = Highlighter::definitionForFileName(fileName);
+
+ if (definition.isValid()) {
+ highlighter->setDefinition(definition);
+ d->m_isMissingSyntaxDefinition = false;
+ d->m_commentDefinition.singleLine = definition.singleLineCommentMarker();
+ d->m_commentDefinition.multiLineStart = definition.multiLineCommentMarker().first;
+ d->m_commentDefinition.multiLineEnd = definition.multiLineCommentMarker().second;
+
+ setCodeFoldingSupported(true);
+ } else {
+ d->m_isMissingSyntaxDefinition =
+ !TextEditorSettings::highlighterSettings().isIgnoredFilePattern(fileName);
}
textDocument()->setFontSettings(TextEditorSettings::fontSettings());
@@ -8546,9 +8540,6 @@ void TextEditorWidget::setupGenericHighlighter()
connect(textDocument(), &IDocument::filePathChanged,
d, &TextEditorWidgetPrivate::reconfigure);
- connect(Manager::instance(), &Manager::highlightingFilesRegistered,
- d, &TextEditorWidgetPrivate::reconfigure);
-
updateEditorInfoBar(this);
}