Introduced our own document revision.

This commit is contained in:
Roberto Raggi
2009-09-24 10:12:33 +02:00
parent 6051584cfd
commit 6b510cb487
2 changed files with 20 additions and 8 deletions

View File

@@ -538,6 +538,8 @@ CPPEditor::CPPEditor(QWidget *parent)
{
qRegisterMetaType<SemanticInfo>("SemanticInfo");
m_revision = 0;
m_semanticHighlighter = new SemanticHighlighter(this);
m_semanticHighlighter->start();
@@ -900,6 +902,8 @@ void CPPEditor::onContentsChanged(int position, int charsRemoved, int charsAdded
Q_UNUSED(position)
Q_UNUSED(charsAdded)
++m_revision;
if (m_currentRenameSelection == -1)
return;
@@ -1307,6 +1311,11 @@ Symbol *CPPEditor::findDefinition(Symbol *symbol)
return 0;
}
unsigned CPPEditor::revision() const
{
return m_revision;
}
SemanticInfo CPPEditor::semanticInfo() const
{
return m_lastSemanticInfo;
@@ -1763,7 +1772,7 @@ void CPPEditor::semanticRehighlight()
void CPPEditor::updateSemanticInfo(const SemanticInfo &semanticInfo)
{
if (semanticInfo.revision != document()->revision()) {
if (semanticInfo.revision != m_revision) {
// got outdated semantic info
semanticRehighlight();
return;
@@ -1807,10 +1816,10 @@ SemanticHighlighter::Source CPPEditor::currentSource()
const QString fileName = file()->fileName();
QString code;
if (m_lastSemanticInfo.revision != document()->revision())
if (m_lastSemanticInfo.revision != m_revision)
code = toPlainText(); // get the source code only when needed.
const int revision = document()->revision();
const int revision = m_revision;
const SemanticHighlighter::Source source(snapshot, fileName, code,
line, column, revision);
return source;

View File

@@ -84,10 +84,10 @@ public:
typedef QHashIterator<CPlusPlus::Identifier *, QList<Use> > ExternalUseIterator;
SemanticInfo()
: revision(-1)
: revision(0)
{ }
int revision;
unsigned revision;
CPlusPlus::Snapshot snapshot;
CPlusPlus::Document::Ptr doc;
LocalUseMap localUses;
@@ -190,6 +190,7 @@ public:
void indentInsertedText(const QTextCursor &tc);
SemanticInfo semanticInfo() const;
unsigned revision() const;
public Q_SLOTS:
virtual void setFontSettings(const TextEditor::FontSettings &);
@@ -295,6 +296,8 @@ private:
SemanticHighlighter *m_semanticHighlighter;
SemanticInfo m_lastSemanticInfo;
unsigned m_revision;
};