forked from qt-creator/qt-creator
SyntiaxHighlighter: Move VCS highlighters creating to TextDocument
Change-Id: I531b30d31fb630d2292eaf4d8c61ff1e95fed460 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user