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 {}; 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 } // Bazaar::Internal

View File

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

View File

@@ -42,9 +42,9 @@ QString ClearCaseEditorWidget::changeUnderCursor(const QTextCursor &c) const
return QString(); 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 } // ClearCase::Internal

View File

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

View File

@@ -93,9 +93,9 @@ QString CvsEditorWidget::changeUnderCursor(const QTextCursor &c) const
return {}; 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 QStringList CvsEditorWidget::annotationPreviousVersions(const QString &revision) const

View File

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

View File

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

View File

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

View File

@@ -117,9 +117,9 @@ QString GitEditorWidget::changeUnderCursor(const QTextCursor &c) const
return {}; 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: /* 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 addDiffActions(QMenu *menu, const VcsBase::DiffChunk &chunk) override;
void aboutToOpen(const Utils::FilePath &filePath, const Utils::FilePath &realFilePath) override; void aboutToOpen(const Utils::FilePath &filePath, const Utils::FilePath &realFilePath) override;
QString changeUnderCursor(const QTextCursor &) const 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; QString decorateVersion(const QString &revision) const override;
QStringList annotationPreviousVersions(const QString &revision) const override; QStringList annotationPreviousVersions(const QString &revision) const override;
bool isValidRevision(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 {}; 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 QString MercurialEditorWidget::decorateVersion(const QString &revision) const

View File

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

View File

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

View File

@@ -75,9 +75,10 @@ QString SubversionEditorWidget::changeUnderCursor(const QTextCursor &c) const
return {}; 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 QStringList SubversionEditorWidget::annotationPreviousVersions(const QString &v) const

View File

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

View File

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

View File

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