From 725ecc5f9179df92d4c26dbedea12028fa7d3ea1 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh <orgad.shaneh@audiocodes.com> Date: Thu, 17 Jan 2013 22:08:29 +0200 Subject: [PATCH] VCS: Refactor createDiffHighlighter All plugins do the same... Change-Id: I21e5a1d7507292add91199a3db75df74165b63b1 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> --- src/plugins/bazaar/bazaareditor.cpp | 4 ++-- src/plugins/bazaar/bazaareditor.h | 2 +- src/plugins/clearcase/clearcaseeditor.cpp | 6 ++---- src/plugins/clearcase/clearcaseeditor.h | 2 +- src/plugins/cvs/cvseditor.cpp | 7 ++----- src/plugins/cvs/cvseditor.h | 2 +- src/plugins/git/giteditor.cpp | 5 ++--- src/plugins/git/giteditor.h | 2 +- src/plugins/mercurial/mercurialeditor.cpp | 4 ++-- src/plugins/mercurial/mercurialeditor.h | 2 +- src/plugins/perforce/perforceeditor.cpp | 5 ++--- src/plugins/perforce/perforceeditor.h | 2 +- src/plugins/subversion/subversioneditor.cpp | 7 ++----- src/plugins/subversion/subversioneditor.h | 2 +- src/plugins/vcsbase/diffhighlighter.cpp | 5 ++--- src/plugins/vcsbase/diffhighlighter.h | 3 +-- src/plugins/vcsbase/vcsbaseeditor.cpp | 4 ++-- src/plugins/vcsbase/vcsbaseeditor.h | 2 +- 18 files changed, 27 insertions(+), 39 deletions(-) diff --git a/src/plugins/bazaar/bazaareditor.cpp b/src/plugins/bazaar/bazaareditor.cpp index aaa76f5861d..48a1687b8db 100644 --- a/src/plugins/bazaar/bazaareditor.cpp +++ b/src/plugins/bazaar/bazaareditor.cpp @@ -111,9 +111,9 @@ QString BazaarEditor::changeUnderCursor(const QTextCursor &cursorIn) const return QString(); } -VcsBase::DiffHighlighter *BazaarEditor::createDiffHighlighter() const +QRegExp BazaarEditor::diffFilePattern() const { - return new VcsBase::DiffHighlighter(m_diffFileId); + return m_diffFileId; } VcsBase::BaseAnnotationHighlighter *BazaarEditor::createAnnotationHighlighter(const QSet<QString> &changes, diff --git a/src/plugins/bazaar/bazaareditor.h b/src/plugins/bazaar/bazaareditor.h index b82208aeb5c..b895fb6593b 100644 --- a/src/plugins/bazaar/bazaareditor.h +++ b/src/plugins/bazaar/bazaareditor.h @@ -46,7 +46,7 @@ public: private: QSet<QString> annotationChanges() const; QString changeUnderCursor(const QTextCursor &cursor) const; - VcsBase::DiffHighlighter *createDiffHighlighter() const; + QRegExp diffFilePattern() const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileSpec) const; diff --git a/src/plugins/clearcase/clearcaseeditor.cpp b/src/plugins/clearcase/clearcaseeditor.cpp index 853512f4fd6..c00a973b428 100644 --- a/src/plugins/clearcase/clearcaseeditor.cpp +++ b/src/plugins/clearcase/clearcaseeditor.cpp @@ -93,11 +93,9 @@ QString ClearCaseEditor::changeUnderCursor(const QTextCursor &c) const +++ main.cpp@@\main\1 @@ -6,6 +6,5 @@ */ -VcsBase::DiffHighlighter *ClearCaseEditor::createDiffHighlighter() const +QRegExp ClearCaseEditor::diffFilePattern() const { - const QRegExp filePattern(QLatin1String("^[-+][-+][-+] ")); - QTC_CHECK(filePattern.isValid()); - return new VcsBase::DiffHighlighter(filePattern); + return QRegExp(QLatin1String("^[-+][-+][-+] ")); } VcsBase::BaseAnnotationHighlighter *ClearCaseEditor::createAnnotationHighlighter(const QSet<QString> &changes, diff --git a/src/plugins/clearcase/clearcaseeditor.h b/src/plugins/clearcase/clearcaseeditor.h index 2418a011571..afb79553666 100644 --- a/src/plugins/clearcase/clearcaseeditor.h +++ b/src/plugins/clearcase/clearcaseeditor.h @@ -49,7 +49,7 @@ public: private: QSet<QString> annotationChanges() const; QString changeUnderCursor(const QTextCursor &) const; - VcsBase::DiffHighlighter *createDiffHighlighter() const; + QRegExp diffFilePattern() const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const; diff --git a/src/plugins/cvs/cvseditor.cpp b/src/plugins/cvs/cvseditor.cpp index fbc69bec1d1..f2624fb15f2 100644 --- a/src/plugins/cvs/cvseditor.cpp +++ b/src/plugins/cvs/cvseditor.cpp @@ -120,12 +120,9 @@ cvs diff -d -u -r1.1 -r1.2: @@ -6,6 +6,5 @@ \endcode */ - -VcsBase::DiffHighlighter *CvsEditor::createDiffHighlighter() const +QRegExp CvsEditor::diffFilePattern() const { - const QRegExp filePattern(QLatin1String("^[-+][-+][-+] .*1\\.[\\d\\.]+$")); - QTC_CHECK(filePattern.isValid()); - return new VcsBase::DiffHighlighter(filePattern); + return QRegExp(QLatin1String("^[-+][-+][-+] .*1\\.[\\d\\.]+$")); } VcsBase::BaseAnnotationHighlighter *CvsEditor::createAnnotationHighlighter(const QSet<QString> &changes, diff --git a/src/plugins/cvs/cvseditor.h b/src/plugins/cvs/cvseditor.h index dd18e2f4767..5e4a2fda980 100644 --- a/src/plugins/cvs/cvseditor.h +++ b/src/plugins/cvs/cvseditor.h @@ -48,7 +48,7 @@ public: private: QSet<QString> annotationChanges() const; QString changeUnderCursor(const QTextCursor &) const; - VcsBase::DiffHighlighter *createDiffHighlighter() const; + QRegExp diffFilePattern() const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const; QStringList annotationPreviousVersions(const QString &revision) const; diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp index 27bed9a6bdc..40997ffcd6c 100644 --- a/src/plugins/git/giteditor.cpp +++ b/src/plugins/git/giteditor.cpp @@ -107,10 +107,9 @@ QString GitEditor::changeUnderCursor(const QTextCursor &c) const return QString(); } -VcsBase::DiffHighlighter *GitEditor::createDiffHighlighter() const +QRegExp GitEditor::diffFilePattern() const { - const QRegExp filePattern(QLatin1String("^(diff --git a/|index |[+-][+-][+-] [ab/]).*$")); - return new VcsBase::DiffHighlighter(filePattern); + return QRegExp(QLatin1String("^(diff --git a/|index |[+-][+-][+-] [ab/]).*$")); } VcsBase::BaseAnnotationHighlighter *GitEditor::createAnnotationHighlighter(const QSet<QString> &changes, diff --git a/src/plugins/git/giteditor.h b/src/plugins/git/giteditor.h index cbb5acf1fd0..5fc066c4cc7 100644 --- a/src/plugins/git/giteditor.h +++ b/src/plugins/git/giteditor.h @@ -57,7 +57,7 @@ public slots: private: QSet<QString> annotationChanges() const; QString changeUnderCursor(const QTextCursor &) const; - VcsBase::DiffHighlighter *createDiffHighlighter() const; + QRegExp diffFilePattern() const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const; QString decorateVersion(const QString &revision) const; diff --git a/src/plugins/mercurial/mercurialeditor.cpp b/src/plugins/mercurial/mercurialeditor.cpp index 60a86d4fd7c..4e775e6a935 100644 --- a/src/plugins/mercurial/mercurialeditor.cpp +++ b/src/plugins/mercurial/mercurialeditor.cpp @@ -88,9 +88,9 @@ QString MercurialEditor::changeUnderCursor(const QTextCursor &cursorIn) const return QString(); } -VcsBase::DiffHighlighter *MercurialEditor::createDiffHighlighter() const +QRegExp MercurialEditor::diffFilePattern() const { - return new VcsBase::DiffHighlighter(diffIdentifier); + return diffIdentifier; } VcsBase::BaseAnnotationHighlighter *MercurialEditor::createAnnotationHighlighter(const QSet<QString> &changes, diff --git a/src/plugins/mercurial/mercurialeditor.h b/src/plugins/mercurial/mercurialeditor.h index cde52c086cc..da0d48789b4 100644 --- a/src/plugins/mercurial/mercurialeditor.h +++ b/src/plugins/mercurial/mercurialeditor.h @@ -46,7 +46,7 @@ public: private: QSet<QString> annotationChanges() const; QString changeUnderCursor(const QTextCursor &cursor) const; - VcsBase::DiffHighlighter *createDiffHighlighter() const; + QRegExp diffFilePattern() const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileSpec) const; QString decorateVersion(const QString &revision) const; diff --git a/src/plugins/perforce/perforceeditor.cpp b/src/plugins/perforce/perforceeditor.cpp index 271a612ff9c..aa925a86ec4 100644 --- a/src/plugins/perforce/perforceeditor.cpp +++ b/src/plugins/perforce/perforceeditor.cpp @@ -103,10 +103,9 @@ QString PerforceEditor::changeUnderCursor(const QTextCursor &c) const return m_changeNumberPattern.exactMatch(change) ? change : QString(); } -VcsBase::DiffHighlighter *PerforceEditor::createDiffHighlighter() const +QRegExp PerforceEditor::diffFilePattern() const { - const QRegExp filePattern(QLatin1String("^====.*")); - return new VcsBase::DiffHighlighter(filePattern); + return QRegExp(QLatin1String("^====.*")); } VcsBase::BaseAnnotationHighlighter *PerforceEditor::createAnnotationHighlighter(const QSet<QString> &changes, diff --git a/src/plugins/perforce/perforceeditor.h b/src/plugins/perforce/perforceeditor.h index a9435eb6295..3a8791eb522 100644 --- a/src/plugins/perforce/perforceeditor.h +++ b/src/plugins/perforce/perforceeditor.h @@ -50,7 +50,7 @@ public: private: QSet<QString> annotationChanges() const; QString changeUnderCursor(const QTextCursor &) const; - VcsBase::DiffHighlighter *createDiffHighlighter() const; + QRegExp diffFilePattern() const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const; QStringList annotationPreviousVersions(const QString &v) const; diff --git a/src/plugins/subversion/subversioneditor.cpp b/src/plugins/subversion/subversioneditor.cpp index 433d110a241..7a7b44424bf 100644 --- a/src/plugins/subversion/subversioneditor.cpp +++ b/src/plugins/subversion/subversioneditor.cpp @@ -106,12 +106,9 @@ QString SubversionEditor::changeUnderCursor(const QTextCursor &c) const @@ -6,6 +6,5 @@ \endcode */ - -VcsBase::DiffHighlighter *SubversionEditor::createDiffHighlighter() const +QRegExp SubversionEditor::diffFilePattern() const { - const QRegExp filePattern(QLatin1String("^[-+][-+][-+] .*|^Index: .*|^==*$")); - QTC_CHECK(filePattern.isValid()); - return new VcsBase::DiffHighlighter(filePattern); + return QRegExp(QLatin1String("^[-+][-+][-+] .*|^Index: .*|^==*$")); } VcsBase::BaseAnnotationHighlighter *SubversionEditor::createAnnotationHighlighter(const QSet<QString> &changes, diff --git a/src/plugins/subversion/subversioneditor.h b/src/plugins/subversion/subversioneditor.h index 96c139685de..f2ec7843677 100644 --- a/src/plugins/subversion/subversioneditor.h +++ b/src/plugins/subversion/subversioneditor.h @@ -48,7 +48,7 @@ public: private: QSet<QString> annotationChanges() const; QString changeUnderCursor(const QTextCursor &) const; - VcsBase::DiffHighlighter *createDiffHighlighter() const; + QRegExp diffFilePattern() const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const; QStringList annotationPreviousVersions(const QString &) const; diff --git a/src/plugins/vcsbase/diffhighlighter.cpp b/src/plugins/vcsbase/diffhighlighter.cpp index 538a5a82f31..278b32a1388 100644 --- a/src/plugins/vcsbase/diffhighlighter.cpp +++ b/src/plugins/vcsbase/diffhighlighter.cpp @@ -130,9 +130,8 @@ DiffFormats DiffHighlighterPrivate::analyzeLine(const QString &text) const } // namespace Internal // --- DiffHighlighter -DiffHighlighter::DiffHighlighter(const QRegExp &filePattern, - QTextDocument *document) : - TextEditor::SyntaxHighlighter(document), +DiffHighlighter::DiffHighlighter(const QRegExp &filePattern) : + TextEditor::SyntaxHighlighter(static_cast<QTextDocument *>(0)), d(new Internal::DiffHighlighterPrivate(filePattern)) { } diff --git a/src/plugins/vcsbase/diffhighlighter.h b/src/plugins/vcsbase/diffhighlighter.h index 1ca4adb9fd1..05ccce2b1f8 100644 --- a/src/plugins/vcsbase/diffhighlighter.h +++ b/src/plugins/vcsbase/diffhighlighter.h @@ -51,8 +51,7 @@ class VCSBASE_EXPORT DiffHighlighter : public TextEditor::SyntaxHighlighter Q_OBJECT public: - explicit DiffHighlighter(const QRegExp &filePattern, - QTextDocument *document = 0); + explicit DiffHighlighter(const QRegExp &filePattern); ~DiffHighlighter(); void highlightBlock(const QString &text); diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index 480295c59dc..1a25ad7a438 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -678,10 +678,10 @@ void VcsBaseEditorWidget::init() connect(this, SIGNAL(textChanged()), this, SLOT(slotActivateAnnotation())); break; case DiffOutput: { - DiffHighlighter *dh = createDiffHighlighter(); + d->m_diffFilePattern = diffFilePattern(); + DiffHighlighter *dh = new DiffHighlighter(d->m_diffFilePattern); setCodeFoldingSupported(true); baseTextDocument()->setSyntaxHighlighter(dh); - d->m_diffFilePattern = dh->filePattern(); connect(this, SIGNAL(textChanged()), this, SLOT(slotPopulateDiffBrowser())); connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(slotDiffCursorPositionChanged())); } diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h index 6e15c9d9b82..88b61834ff7 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.h +++ b/src/plugins/vcsbase/vcsbaseeditor.h @@ -240,7 +240,7 @@ private: // Implement to identify a change number at the cursor position virtual QString changeUnderCursor(const QTextCursor &) const = 0; // Factory functions for highlighters - virtual DiffHighlighter *createDiffHighlighter() const = 0; + virtual QRegExp diffFilePattern() const = 0; virtual BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const = 0; // Implement to return a local file name from the diff file specification -- GitLab