diff --git a/src/plugins/bazaar/bazaareditor.cpp b/src/plugins/bazaar/bazaareditor.cpp index 146b2e71932..305fa8eb8a3 100644 --- a/src/plugins/bazaar/bazaareditor.cpp +++ b/src/plugins/bazaar/bazaareditor.cpp @@ -59,9 +59,9 @@ QString BazaarEditorWidget::changeUnderCursor(const QTextCursor &cursorIn) const return {}; } -VcsBase::BaseAnnotationHighlighter *BazaarEditorWidget::createAnnotationHighlighter(const QSet &changes) const +VcsBase::BaseAnnotationHighlighterCreator BazaarEditorWidget::annotationHighlighterCreator() const { - return new BazaarAnnotationHighlighter(changes); + return [](const QSet &changes) { return new BazaarAnnotationHighlighter(changes); }; } } // Bazaar::Internal diff --git a/src/plugins/bazaar/bazaareditor.h b/src/plugins/bazaar/bazaareditor.h index 4f88d778f1a..2de63e70b4f 100644 --- a/src/plugins/bazaar/bazaareditor.h +++ b/src/plugins/bazaar/bazaareditor.h @@ -16,8 +16,7 @@ public: private: QString changeUnderCursor(const QTextCursor &cursor) const override; - VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter( - const QSet &changes) const override; + VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override; const QRegularExpression m_changesetId; const QRegularExpression m_exactChangesetId; diff --git a/src/plugins/clearcase/clearcaseeditor.cpp b/src/plugins/clearcase/clearcaseeditor.cpp index df3cd3406d8..02b07383585 100644 --- a/src/plugins/clearcase/clearcaseeditor.cpp +++ b/src/plugins/clearcase/clearcaseeditor.cpp @@ -42,9 +42,9 @@ QString ClearCaseEditorWidget::changeUnderCursor(const QTextCursor &c) const return QString(); } -VcsBase::BaseAnnotationHighlighter *ClearCaseEditorWidget::createAnnotationHighlighter(const QSet &changes) const +VcsBase::BaseAnnotationHighlighterCreator ClearCaseEditorWidget::annotationHighlighterCreator() const { - return new ClearCaseAnnotationHighlighter(changes); + return [](const QSet &changes) { return new ClearCaseAnnotationHighlighter(changes); }; } } // ClearCase::Internal diff --git a/src/plugins/clearcase/clearcaseeditor.h b/src/plugins/clearcase/clearcaseeditor.h index 061807a45db..90b7a9c34ec 100644 --- a/src/plugins/clearcase/clearcaseeditor.h +++ b/src/plugins/clearcase/clearcaseeditor.h @@ -18,8 +18,7 @@ public: private: QString changeUnderCursor(const QTextCursor &) const override; - VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter( - const QSet &changes) const override; + VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override; const QRegularExpression m_versionNumberPattern; }; diff --git a/src/plugins/cvs/cvseditor.cpp b/src/plugins/cvs/cvseditor.cpp index d28144e3146..4e0aac6956b 100644 --- a/src/plugins/cvs/cvseditor.cpp +++ b/src/plugins/cvs/cvseditor.cpp @@ -93,9 +93,9 @@ QString CvsEditorWidget::changeUnderCursor(const QTextCursor &c) const return {}; } -VcsBase::BaseAnnotationHighlighter *CvsEditorWidget::createAnnotationHighlighter(const QSet &changes) const +VcsBase::BaseAnnotationHighlighterCreator CvsEditorWidget::annotationHighlighterCreator() const { - return new CvsAnnotationHighlighter(changes); + return [](const QSet &changes) { return new CvsAnnotationHighlighter(changes); }; } QStringList CvsEditorWidget::annotationPreviousVersions(const QString &revision) const diff --git a/src/plugins/cvs/cvseditor.h b/src/plugins/cvs/cvseditor.h index 3e9ed8e639e..37db5222392 100644 --- a/src/plugins/cvs/cvseditor.h +++ b/src/plugins/cvs/cvseditor.h @@ -18,8 +18,7 @@ public: private: QString changeUnderCursor(const QTextCursor &) const override; - VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter( - const QSet &changes) const override; + VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override; QStringList annotationPreviousVersions(const QString &revision) const override; const QRegularExpression m_revisionAnnotationPattern; diff --git a/src/plugins/fossil/fossileditor.cpp b/src/plugins/fossil/fossileditor.cpp index 01fc9e821a5..0b5e5255f34 100644 --- a/src/plugins/fossil/fossileditor.cpp +++ b/src/plugins/fossil/fossileditor.cpp @@ -89,10 +89,9 @@ QStringList FossilEditorWidget::annotationPreviousVersions(const QString &revisi return revisions; } -VcsBase::BaseAnnotationHighlighter *FossilEditorWidget::createAnnotationHighlighter( - const QSet &changes) const +VcsBase::BaseAnnotationHighlighterCreator FossilEditorWidget::annotationHighlighterCreator() const { - return new FossilAnnotationHighlighter(changes); + return [](const QSet &changes) { return new FossilAnnotationHighlighter(changes); }; } } // namespace Fossil::Internal diff --git a/src/plugins/fossil/fossileditor.h b/src/plugins/fossil/fossileditor.h index f2ca97e4418..70b398fc035 100644 --- a/src/plugins/fossil/fossileditor.h +++ b/src/plugins/fossil/fossileditor.h @@ -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 &changes) const final; + VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const final; FossilEditorWidgetPrivate *d; }; diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp index 05be7e7a4a4..66c3bc01bb7 100644 --- a/src/plugins/git/giteditor.cpp +++ b/src/plugins/git/giteditor.cpp @@ -117,9 +117,9 @@ QString GitEditorWidget::changeUnderCursor(const QTextCursor &c) const return {}; } -BaseAnnotationHighlighter *GitEditorWidget::createAnnotationHighlighter(const QSet &changes) const +VcsBase::BaseAnnotationHighlighterCreator GitEditorWidget::annotationHighlighterCreator() const { - return new GitAnnotationHighlighter(changes); + return [](const QSet &changes) { return new GitAnnotationHighlighter(changes); }; } /* Remove the date specification from annotation, which is tabular: diff --git a/src/plugins/git/giteditor.h b/src/plugins/git/giteditor.h index 23eb4d6ff3a..43fc8b10f54 100644 --- a/src/plugins/git/giteditor.h +++ b/src/plugins/git/giteditor.h @@ -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 &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; diff --git a/src/plugins/mercurial/mercurialeditor.cpp b/src/plugins/mercurial/mercurialeditor.cpp index b08802b8d66..63008f19d61 100644 --- a/src/plugins/mercurial/mercurialeditor.cpp +++ b/src/plugins/mercurial/mercurialeditor.cpp @@ -48,9 +48,9 @@ QString MercurialEditorWidget::changeUnderCursor(const QTextCursor &cursorIn) co return {}; } -VcsBase::BaseAnnotationHighlighter *MercurialEditorWidget::createAnnotationHighlighter(const QSet &changes) const +VcsBase::BaseAnnotationHighlighterCreator MercurialEditorWidget::annotationHighlighterCreator() const { - return new MercurialAnnotationHighlighter(changes); + return [](const QSet &changes) { return new MercurialAnnotationHighlighter(changes); }; } QString MercurialEditorWidget::decorateVersion(const QString &revision) const diff --git a/src/plugins/mercurial/mercurialeditor.h b/src/plugins/mercurial/mercurialeditor.h index 9a9cd88aed9..d5162697a27 100644 --- a/src/plugins/mercurial/mercurialeditor.h +++ b/src/plugins/mercurial/mercurialeditor.h @@ -18,8 +18,7 @@ public: private: QString changeUnderCursor(const QTextCursor &cursor) const override; - VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter( - const QSet &changes) const override; + VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override; QString decorateVersion(const QString &revision) const override; QStringList annotationPreviousVersions(const QString &revision) const override; diff --git a/src/plugins/perforce/perforceeditor.cpp b/src/plugins/perforce/perforceeditor.cpp index 623ac1ed8fe..88e790c3c03 100644 --- a/src/plugins/perforce/perforceeditor.cpp +++ b/src/plugins/perforce/perforceeditor.cpp @@ -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 &changes) const +VcsBase::BaseAnnotationHighlighterCreator PerforceEditorWidget::annotationHighlighterCreator() const { - return new PerforceAnnotationHighlighter(changes); + return [](const QSet &changes) { return new PerforceAnnotationHighlighter(changes); }; } QString PerforceEditorWidget::findDiffFile(const QString &f) const diff --git a/src/plugins/perforce/perforceeditor.h b/src/plugins/perforce/perforceeditor.h index ce0d05b6871..9ec6ae3b3b6 100644 --- a/src/plugins/perforce/perforceeditor.h +++ b/src/plugins/perforce/perforceeditor.h @@ -18,8 +18,7 @@ public: private: QString changeUnderCursor(const QTextCursor &) const override; - VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter( - const QSet &changes) const override; + VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override; QString findDiffFile(const QString &f) const override; QStringList annotationPreviousVersions(const QString &v) const override; diff --git a/src/plugins/subversion/subversioneditor.cpp b/src/plugins/subversion/subversioneditor.cpp index 4549c6e14da..5e614532d6a 100644 --- a/src/plugins/subversion/subversioneditor.cpp +++ b/src/plugins/subversion/subversioneditor.cpp @@ -75,9 +75,10 @@ QString SubversionEditorWidget::changeUnderCursor(const QTextCursor &c) const return {}; } -VcsBase::BaseAnnotationHighlighter *SubversionEditorWidget::createAnnotationHighlighter(const QSet &changes) const +VcsBase::BaseAnnotationHighlighterCreator SubversionEditorWidget::annotationHighlighterCreator() const { - return new SubversionAnnotationHighlighter(changes); + return + [](const QSet &changes) { return new SubversionAnnotationHighlighter(changes); }; } QStringList SubversionEditorWidget::annotationPreviousVersions(const QString &v) const diff --git a/src/plugins/subversion/subversioneditor.h b/src/plugins/subversion/subversioneditor.h index 5538b396e99..a6443c23836 100644 --- a/src/plugins/subversion/subversioneditor.h +++ b/src/plugins/subversion/subversioneditor.h @@ -19,8 +19,7 @@ public: private: QString changeUnderCursor(const QTextCursor &) const override; - VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter( - const QSet &changes) const override; + VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override; QStringList annotationPreviousVersions(const QString &) const override; QRegularExpression m_changeNumberPattern; diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index bb89b1cd321..b768c58c974 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -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); }); } } diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h index 1b588b3e6e7..b34f01ce7e4 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.h +++ b/src/plugins/vcsbase/vcsbaseeditor.h @@ -109,6 +109,9 @@ public: void finalizeInitialization() override; }; +using BaseAnnotationHighlighterCreator + = std::function &)>; + 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 &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;