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 {};
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
@@ -16,8 +16,7 @@ public:
|
||||
|
||||
private:
|
||||
QString changeUnderCursor(const QTextCursor &cursor) const override;
|
||||
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
|
||||
const QSet<QString> &changes) const override;
|
||||
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
|
||||
|
||||
const QRegularExpression m_changesetId;
|
||||
const QRegularExpression m_exactChangesetId;
|
||||
|
||||
@@ -42,9 +42,9 @@ QString ClearCaseEditorWidget::changeUnderCursor(const QTextCursor &c) const
|
||||
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
|
||||
|
||||
@@ -18,8 +18,7 @@ public:
|
||||
|
||||
private:
|
||||
QString changeUnderCursor(const QTextCursor &) const override;
|
||||
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
|
||||
const QSet<QString> &changes) const override;
|
||||
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
|
||||
|
||||
const QRegularExpression m_versionNumberPattern;
|
||||
};
|
||||
|
||||
@@ -93,9 +93,9 @@ QString CvsEditorWidget::changeUnderCursor(const QTextCursor &c) const
|
||||
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
|
||||
|
||||
@@ -18,8 +18,7 @@ public:
|
||||
|
||||
private:
|
||||
QString changeUnderCursor(const QTextCursor &) const override;
|
||||
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
|
||||
const QSet<QString> &changes) const override;
|
||||
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
|
||||
QStringList annotationPreviousVersions(const QString &revision) const override;
|
||||
|
||||
const QRegularExpression m_revisionAnnotationPattern;
|
||||
|
||||
@@ -89,10 +89,9 @@ QStringList FossilEditorWidget::annotationPreviousVersions(const QString &revisi
|
||||
return revisions;
|
||||
}
|
||||
|
||||
VcsBase::BaseAnnotationHighlighter *FossilEditorWidget::createAnnotationHighlighter(
|
||||
const QSet<QString> &changes) const
|
||||
VcsBase::BaseAnnotationHighlighterCreator FossilEditorWidget::annotationHighlighterCreator() const
|
||||
{
|
||||
return new FossilAnnotationHighlighter(changes);
|
||||
return [](const QSet<QString> &changes) { return new FossilAnnotationHighlighter(changes); };
|
||||
}
|
||||
|
||||
} // namespace Fossil::Internal
|
||||
|
||||
@@ -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<QString> &changes) const final;
|
||||
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const final;
|
||||
|
||||
FossilEditorWidgetPrivate *d;
|
||||
};
|
||||
|
||||
@@ -117,9 +117,9 @@ QString GitEditorWidget::changeUnderCursor(const QTextCursor &c) const
|
||||
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:
|
||||
|
||||
@@ -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<QString> &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;
|
||||
|
||||
@@ -48,9 +48,9 @@ QString MercurialEditorWidget::changeUnderCursor(const QTextCursor &cursorIn) co
|
||||
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
|
||||
|
||||
@@ -18,8 +18,7 @@ public:
|
||||
|
||||
private:
|
||||
QString changeUnderCursor(const QTextCursor &cursor) const override;
|
||||
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
|
||||
const QSet<QString> &changes) const override;
|
||||
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
|
||||
QString decorateVersion(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();
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
@@ -18,8 +18,7 @@ public:
|
||||
|
||||
private:
|
||||
QString changeUnderCursor(const QTextCursor &) const override;
|
||||
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
|
||||
const QSet<QString> &changes) const override;
|
||||
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
|
||||
QString findDiffFile(const QString &f) const override;
|
||||
QStringList annotationPreviousVersions(const QString &v) const override;
|
||||
|
||||
|
||||
@@ -75,9 +75,10 @@ QString SubversionEditorWidget::changeUnderCursor(const QTextCursor &c) const
|
||||
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
|
||||
|
||||
@@ -19,8 +19,7 @@ public:
|
||||
|
||||
private:
|
||||
QString changeUnderCursor(const QTextCursor &) const override;
|
||||
VcsBase::BaseAnnotationHighlighter *createAnnotationHighlighter(
|
||||
const QSet<QString> &changes) const override;
|
||||
VcsBase::BaseAnnotationHighlighterCreator annotationHighlighterCreator() const override;
|
||||
QStringList annotationPreviousVersions(const QString &) const override;
|
||||
|
||||
QRegularExpression m_changeNumberPattern;
|
||||
|
||||
@@ -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); });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -109,6 +109,9 @@ public:
|
||||
void finalizeInitialization() override;
|
||||
};
|
||||
|
||||
using BaseAnnotationHighlighterCreator
|
||||
= std::function<BaseAnnotationHighlighter *(const QSet<QString> &)>;
|
||||
|
||||
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<QString> &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;
|
||||
|
||||
Reference in New Issue
Block a user