VCS: Refactor createDiffHighlighter

All plugins do the same...

Change-Id: I21e5a1d7507292add91199a3db75df74165b63b1
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Orgad Shaneh
2013-01-17 22:08:29 +02:00
committed by Orgad Shaneh
parent 6dd8726a16
commit 725ecc5f91
18 changed files with 27 additions and 39 deletions

View File

@@ -111,9 +111,9 @@ QString BazaarEditor::changeUnderCursor(const QTextCursor &cursorIn) const
return QString(); 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, VcsBase::BaseAnnotationHighlighter *BazaarEditor::createAnnotationHighlighter(const QSet<QString> &changes,

View File

@@ -46,7 +46,7 @@ public:
private: private:
QSet<QString> annotationChanges() const; QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &cursor) 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; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
QString fileNameFromDiffSpecification(const QTextBlock &diffFileSpec) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileSpec) const;

View File

@@ -93,11 +93,9 @@ QString ClearCaseEditor::changeUnderCursor(const QTextCursor &c) const
+++ main.cpp@@\main\1 +++ main.cpp@@\main\1
@@ -6,6 +6,5 @@ @@ -6,6 +6,5 @@
*/ */
VcsBase::DiffHighlighter *ClearCaseEditor::createDiffHighlighter() const QRegExp ClearCaseEditor::diffFilePattern() const
{ {
const QRegExp filePattern(QLatin1String("^[-+][-+][-+] ")); return QRegExp(QLatin1String("^[-+][-+][-+] "));
QTC_CHECK(filePattern.isValid());
return new VcsBase::DiffHighlighter(filePattern);
} }
VcsBase::BaseAnnotationHighlighter *ClearCaseEditor::createAnnotationHighlighter(const QSet<QString> &changes, VcsBase::BaseAnnotationHighlighter *ClearCaseEditor::createAnnotationHighlighter(const QSet<QString> &changes,

View File

@@ -49,7 +49,7 @@ public:
private: private:
QSet<QString> annotationChanges() const; QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const; QString changeUnderCursor(const QTextCursor &) const;
VcsBase::DiffHighlighter *createDiffHighlighter() const; QRegExp diffFilePattern() const;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const;

View File

@@ -120,12 +120,9 @@ cvs diff -d -u -r1.1 -r1.2:
@@ -6,6 +6,5 @@ @@ -6,6 +6,5 @@
\endcode \endcode
*/ */
QRegExp CvsEditor::diffFilePattern() const
VcsBase::DiffHighlighter *CvsEditor::createDiffHighlighter() const
{ {
const QRegExp filePattern(QLatin1String("^[-+][-+][-+] .*1\\.[\\d\\.]+$")); return QRegExp(QLatin1String("^[-+][-+][-+] .*1\\.[\\d\\.]+$"));
QTC_CHECK(filePattern.isValid());
return new VcsBase::DiffHighlighter(filePattern);
} }
VcsBase::BaseAnnotationHighlighter *CvsEditor::createAnnotationHighlighter(const QSet<QString> &changes, VcsBase::BaseAnnotationHighlighter *CvsEditor::createAnnotationHighlighter(const QSet<QString> &changes,

View File

@@ -48,7 +48,7 @@ public:
private: private:
QSet<QString> annotationChanges() const; QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const; QString changeUnderCursor(const QTextCursor &) const;
VcsBase::DiffHighlighter *createDiffHighlighter() const; QRegExp diffFilePattern() const;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const;
QStringList annotationPreviousVersions(const QString &revision) const; QStringList annotationPreviousVersions(const QString &revision) const;

View File

@@ -107,10 +107,9 @@ QString GitEditor::changeUnderCursor(const QTextCursor &c) const
return QString(); return QString();
} }
VcsBase::DiffHighlighter *GitEditor::createDiffHighlighter() const QRegExp GitEditor::diffFilePattern() const
{ {
const QRegExp filePattern(QLatin1String("^(diff --git a/|index |[+-][+-][+-] [ab/]).*$")); return QRegExp(QLatin1String("^(diff --git a/|index |[+-][+-][+-] [ab/]).*$"));
return new VcsBase::DiffHighlighter(filePattern);
} }
VcsBase::BaseAnnotationHighlighter *GitEditor::createAnnotationHighlighter(const QSet<QString> &changes, VcsBase::BaseAnnotationHighlighter *GitEditor::createAnnotationHighlighter(const QSet<QString> &changes,

View File

@@ -57,7 +57,7 @@ public slots:
private: private:
QSet<QString> annotationChanges() const; QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const; QString changeUnderCursor(const QTextCursor &) const;
VcsBase::DiffHighlighter *createDiffHighlighter() const; QRegExp diffFilePattern() const;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const;
QString decorateVersion(const QString &revision) const; QString decorateVersion(const QString &revision) const;

View File

@@ -88,9 +88,9 @@ QString MercurialEditor::changeUnderCursor(const QTextCursor &cursorIn) const
return QString(); 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, VcsBase::BaseAnnotationHighlighter *MercurialEditor::createAnnotationHighlighter(const QSet<QString> &changes,

View File

@@ -46,7 +46,7 @@ public:
private: private:
QSet<QString> annotationChanges() const; QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &cursor) 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; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
QString fileNameFromDiffSpecification(const QTextBlock &diffFileSpec) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileSpec) const;
QString decorateVersion(const QString &revision) const; QString decorateVersion(const QString &revision) const;

View File

@@ -103,10 +103,9 @@ QString PerforceEditor::changeUnderCursor(const QTextCursor &c) const
return m_changeNumberPattern.exactMatch(change) ? change : QString(); return m_changeNumberPattern.exactMatch(change) ? change : QString();
} }
VcsBase::DiffHighlighter *PerforceEditor::createDiffHighlighter() const QRegExp PerforceEditor::diffFilePattern() const
{ {
const QRegExp filePattern(QLatin1String("^====.*")); return QRegExp(QLatin1String("^====.*"));
return new VcsBase::DiffHighlighter(filePattern);
} }
VcsBase::BaseAnnotationHighlighter *PerforceEditor::createAnnotationHighlighter(const QSet<QString> &changes, VcsBase::BaseAnnotationHighlighter *PerforceEditor::createAnnotationHighlighter(const QSet<QString> &changes,

View File

@@ -50,7 +50,7 @@ public:
private: private:
QSet<QString> annotationChanges() const; QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const; QString changeUnderCursor(const QTextCursor &) const;
VcsBase::DiffHighlighter *createDiffHighlighter() const; QRegExp diffFilePattern() const;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const;
QStringList annotationPreviousVersions(const QString &v) const; QStringList annotationPreviousVersions(const QString &v) const;

View File

@@ -106,12 +106,9 @@ QString SubversionEditor::changeUnderCursor(const QTextCursor &c) const
@@ -6,6 +6,5 @@ @@ -6,6 +6,5 @@
\endcode \endcode
*/ */
QRegExp SubversionEditor::diffFilePattern() const
VcsBase::DiffHighlighter *SubversionEditor::createDiffHighlighter() const
{ {
const QRegExp filePattern(QLatin1String("^[-+][-+][-+] .*|^Index: .*|^==*$")); return QRegExp(QLatin1String("^[-+][-+][-+] .*|^Index: .*|^==*$"));
QTC_CHECK(filePattern.isValid());
return new VcsBase::DiffHighlighter(filePattern);
} }
VcsBase::BaseAnnotationHighlighter *SubversionEditor::createAnnotationHighlighter(const QSet<QString> &changes, VcsBase::BaseAnnotationHighlighter *SubversionEditor::createAnnotationHighlighter(const QSet<QString> &changes,

View File

@@ -48,7 +48,7 @@ public:
private: private:
QSet<QString> annotationChanges() const; QSet<QString> annotationChanges() const;
QString changeUnderCursor(const QTextCursor &) const; QString changeUnderCursor(const QTextCursor &) const;
VcsBase::DiffHighlighter *createDiffHighlighter() const; QRegExp diffFilePattern() const;
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const; VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, const QColor &bg) const;
QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const; QString fileNameFromDiffSpecification(const QTextBlock &diffFileName) const;
QStringList annotationPreviousVersions(const QString &) const; QStringList annotationPreviousVersions(const QString &) const;

View File

@@ -130,9 +130,8 @@ DiffFormats DiffHighlighterPrivate::analyzeLine(const QString &text) const
} // namespace Internal } // namespace Internal
// --- DiffHighlighter // --- DiffHighlighter
DiffHighlighter::DiffHighlighter(const QRegExp &filePattern, DiffHighlighter::DiffHighlighter(const QRegExp &filePattern) :
QTextDocument *document) : TextEditor::SyntaxHighlighter(static_cast<QTextDocument *>(0)),
TextEditor::SyntaxHighlighter(document),
d(new Internal::DiffHighlighterPrivate(filePattern)) d(new Internal::DiffHighlighterPrivate(filePattern))
{ {
} }

View File

@@ -51,8 +51,7 @@ class VCSBASE_EXPORT DiffHighlighter : public TextEditor::SyntaxHighlighter
Q_OBJECT Q_OBJECT
public: public:
explicit DiffHighlighter(const QRegExp &filePattern, explicit DiffHighlighter(const QRegExp &filePattern);
QTextDocument *document = 0);
~DiffHighlighter(); ~DiffHighlighter();
void highlightBlock(const QString &text); void highlightBlock(const QString &text);

View File

@@ -678,10 +678,10 @@ void VcsBaseEditorWidget::init()
connect(this, SIGNAL(textChanged()), this, SLOT(slotActivateAnnotation())); connect(this, SIGNAL(textChanged()), this, SLOT(slotActivateAnnotation()));
break; break;
case DiffOutput: { case DiffOutput: {
DiffHighlighter *dh = createDiffHighlighter(); d->m_diffFilePattern = diffFilePattern();
DiffHighlighter *dh = new DiffHighlighter(d->m_diffFilePattern);
setCodeFoldingSupported(true); setCodeFoldingSupported(true);
baseTextDocument()->setSyntaxHighlighter(dh); baseTextDocument()->setSyntaxHighlighter(dh);
d->m_diffFilePattern = dh->filePattern();
connect(this, SIGNAL(textChanged()), this, SLOT(slotPopulateDiffBrowser())); connect(this, SIGNAL(textChanged()), this, SLOT(slotPopulateDiffBrowser()));
connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(slotDiffCursorPositionChanged())); connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(slotDiffCursorPositionChanged()));
} }

View File

@@ -240,7 +240,7 @@ private:
// 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 DiffHighlighter *createDiffHighlighter() const = 0; virtual QRegExp diffFilePattern() const = 0;
virtual BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, virtual BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes,
const QColor &bg) const = 0; const QColor &bg) const = 0;
// Implement to return a local file name from the diff file specification // Implement to return a local file name from the diff file specification