SyntiaxHighlighter: Move VCS highlighters creating to TextDocument

Change-Id: I531b30d31fb630d2292eaf4d8c61ff1e95fed460
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
Artem Sokolovskii
2023-05-17 10:28:06 +02:00
parent 4bfc3476f4
commit 52f4c66b7e
18 changed files with 31 additions and 35 deletions

View File

@@ -59,9 +59,9 @@ QString BazaarEditorWidget::changeUnderCursor(const QTextCursor &cursorIn) const
return {};
}
VcsBase::BaseAnnotationHighlighter *BazaarEditorWidget::createAnnotationHighlighter(const QSet<QString> &changes) const
VcsBase::BaseAnnotationHighlighterCreator BazaarEditorWidget::annotationHighlighterCreator() const
{
return new BazaarAnnotationHighlighter(changes);
return [](const QSet<QString> &changes) { return new BazaarAnnotationHighlighter(changes); };
}
} // Bazaar::Internal

View File

@@ -16,8 +16,7 @@ public:
private:
QString changeUnderCursor(const QTextCursor &cursor) const override;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
const QSet<QString> &changes) const override;
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
const QRegularExpression m_changesetId;
const QRegularExpression m_exactChangesetId;

View File

@@ -42,9 +42,9 @@ QString ClearCaseEditorWidget::changeUnderCursor(const QTextCursor &c) const
return QString();
}
VcsBase::BaseAnnotationHighlighter *ClearCaseEditorWidget::createAnnotationHighlighter(const QSet<QString> &changes) const
VcsBase::BaseAnnotationHighlighterCreator ClearCaseEditorWidget::annotationHighlighterCreator() const
{
return new ClearCaseAnnotationHighlighter(changes);
return [](const QSet<QString> &changes) { return new ClearCaseAnnotationHighlighter(changes); };
}
} // ClearCase::Internal

View File

@@ -18,8 +18,7 @@ public:
private:
QString changeUnderCursor(const QTextCursor &) const override;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
const QSet<QString> &changes) const override;
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
const QRegularExpression m_versionNumberPattern;
};

View File

@@ -93,9 +93,9 @@ QString CvsEditorWidget::changeUnderCursor(const QTextCursor &c) const
return {};
}
VcsBase::BaseAnnotationHighlighter *CvsEditorWidget::createAnnotationHighlighter(const QSet<QString> &changes) const
VcsBase::BaseAnnotationHighlighterCreator CvsEditorWidget::annotationHighlighterCreator() const
{
return new CvsAnnotationHighlighter(changes);
return [](const QSet<QString> &changes) { return new CvsAnnotationHighlighter(changes); };
}
QStringList CvsEditorWidget::annotationPreviousVersions(const QString &revision) const

View File

@@ -18,8 +18,7 @@ public:
private:
QString changeUnderCursor(const QTextCursor &) const override;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
const QSet<QString> &changes) const override;
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
QStringList annotationPreviousVersions(const QString &revision) const override;
const QRegularExpression m_revisionAnnotationPattern;

View File

@@ -89,10 +89,9 @@ QStringList FossilEditorWidget::annotationPreviousVersions(const QString &revisi
return revisions;
}
VcsBase::BaseAnnotationHighlighter *FossilEditorWidget::createAnnotationHighlighter(
const QSet<QString> &changes) const
VcsBase::BaseAnnotationHighlighterCreator FossilEditorWidget::annotationHighlighterCreator() const
{
return new FossilAnnotationHighlighter(changes);
return [](const QSet<QString> &changes) { return new FossilAnnotationHighlighter(changes); };
}
} // namespace Fossil::Internal

View File

@@ -22,8 +22,7 @@ private:
QString changeUnderCursor(const QTextCursor &cursor) const final;
QString decorateVersion(const QString &revision) const final;
QStringList annotationPreviousVersions(const QString &revision) const final;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
const QSet<QString> &changes) const final;
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const final;
FossilEditorWidgetPrivate *d;
};

View File

@@ -117,9 +117,9 @@ QString GitEditorWidget::changeUnderCursor(const QTextCursor &c) const
return {};
}
BaseAnnotationHighlighter *GitEditorWidget::createAnnotationHighlighter(const QSet<QString> &changes) const
VcsBase::BaseAnnotationHighlighterCreator GitEditorWidget::annotationHighlighterCreator() const
{
return new GitAnnotationHighlighter(changes);
return [](const QSet<QString> &changes) { return new GitAnnotationHighlighter(changes); };
}
/* Remove the date specification from annotation, which is tabular:

View File

@@ -42,7 +42,7 @@ private:
void addDiffActions(QMenu *menu, const VcsBase::DiffChunk &chunk) override;
void aboutToOpen(const Utils::FilePath &filePath, const Utils::FilePath &realFilePath) override;
QString changeUnderCursor(const QTextCursor &) const override;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes) const override;
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
QString decorateVersion(const QString &revision) const override;
QStringList annotationPreviousVersions(const QString &revision) const override;
bool isValidRevision(const QString &revision) const override;

View File

@@ -48,9 +48,9 @@ QString MercurialEditorWidget::changeUnderCursor(const QTextCursor &cursorIn) co
return {};
}
VcsBase::BaseAnnotationHighlighter *MercurialEditorWidget::createAnnotationHighlighter(const QSet<QString> &changes) const
VcsBase::BaseAnnotationHighlighterCreator MercurialEditorWidget::annotationHighlighterCreator() const
{
return new MercurialAnnotationHighlighter(changes);
return [](const QSet<QString> &changes) { return new MercurialAnnotationHighlighter(changes); };
}
QString MercurialEditorWidget::decorateVersion(const QString &revision) const

View File

@@ -18,8 +18,7 @@ public:
private:
QString changeUnderCursor(const QTextCursor &cursor) const override;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
const QSet<QString> &changes) const override;
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
QString decorateVersion(const QString &revision) const override;
QStringList annotationPreviousVersions(const QString &revision) const override;

View File

@@ -51,9 +51,9 @@ QString PerforceEditorWidget::changeUnderCursor(const QTextCursor &c) const
return m_changeNumberPattern.match(change).hasMatch() ? change : QString();
}
VcsBase::BaseAnnotationHighlighter *PerforceEditorWidget::createAnnotationHighlighter(const QSet<QString> &changes) const
VcsBase::BaseAnnotationHighlighterCreator PerforceEditorWidget::annotationHighlighterCreator() const
{
return new PerforceAnnotationHighlighter(changes);
return [](const QSet<QString> &changes) { return new PerforceAnnotationHighlighter(changes); };
}
QString PerforceEditorWidget::findDiffFile(const QString &f) const

View File

@@ -18,8 +18,7 @@ public:
private:
QString changeUnderCursor(const QTextCursor &) const override;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
const QSet<QString> &changes) const override;
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
QString findDiffFile(const QString &f) const override;
QStringList annotationPreviousVersions(const QString &v) const override;

View File

@@ -75,9 +75,10 @@ QString SubversionEditorWidget::changeUnderCursor(const QTextCursor &c) const
return {};
}
VcsBase::BaseAnnotationHighlighter *SubversionEditorWidget::createAnnotationHighlighter(const QSet<QString> &changes) const
VcsBase::BaseAnnotationHighlighterCreator SubversionEditorWidget::annotationHighlighterCreator() const
{
return new SubversionAnnotationHighlighter(changes);
return
[](const QSet<QString> &changes) { return new SubversionAnnotationHighlighter(changes); };
}
QStringList SubversionEditorWidget::annotationPreviousVersions(const QString &v) const

View File

@@ -19,8 +19,7 @@ public:
private:
QString changeUnderCursor(const QTextCursor &) const override;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
const QSet<QString> &changes) const override;
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
QStringList annotationPreviousVersions(const QString &) const override;
QRegularExpression m_changeNumberPattern;

View File

@@ -1104,8 +1104,8 @@ void VcsBaseEditorWidget::slotActivateAnnotation()
ah->setChangeNumbers(changes);
ah->rehighlight();
} else {
BaseAnnotationHighlighter *highlighter = createAnnotationHighlighter(changes);
textDocument()->setSyntaxHighlighterCreator([highlighter] { return highlighter; });
BaseAnnotationHighlighterCreator creator = annotationHighlighterCreator();
textDocument()->setSyntaxHighlighterCreator([creator, changes] { return creator(changes); });
}
}

View File

@@ -109,6 +109,9 @@ public:
void finalizeInitialization() override;
};
using BaseAnnotationHighlighterCreator
= std::function<BaseAnnotationHighlighter *(const QSet<QString> &)>;
class VCSBASE_EXPORT VcsBaseEditorWidget : public TextEditor::TextEditorWidget
{
Q_OBJECT
@@ -223,7 +226,7 @@ protected:
// Implement to identify a change number at the cursor position
virtual QString changeUnderCursor(const QTextCursor &) const = 0;
// Factory functions for highlighters
virtual BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes) const = 0;
virtual BaseAnnotationHighlighterCreator annotationHighlighterCreator() const = 0;
// Returns a local file name from the diff file specification
// (text cursor at position above change hunk)
QString fileNameFromDiffSpecification(const QTextBlock &inBlock, QString *header = nullptr) const;