Introduced the quick fix engine

This commit is contained in:
Roberto Raggi
2009-11-13 16:14:26 +01:00
parent e35a754dc9
commit c13b8697d2
10 changed files with 258 additions and 443 deletions

View File

@@ -55,45 +55,6 @@ namespace Internal {
class CppModelManager;
class QuickFixOperation;
typedef QSharedPointer<QuickFixOperation> QuickFixOperationPtr;
class QuickFixOperation
{
Q_DISABLE_COPY(QuickFixOperation)
public:
QuickFixOperation(CPlusPlus::Document::Ptr doc,
const CPlusPlus::Snapshot &snapshot);
virtual ~QuickFixOperation();
virtual QString description() const = 0;
virtual void apply(QTextCursor cursor) = 0;
CPlusPlus::Document::Ptr document() const { return _doc; }
CPlusPlus::Snapshot snapshot() const { return _snapshot; }
QTextCursor textCursor() const;
void setTextCursor(const QTextCursor &tc);
protected:
const CPlusPlus::Token &tokenAt(unsigned index) const;
void getTokenStartPosition(unsigned index, unsigned *line,
unsigned *column) const;
void getTokenEndPosition(unsigned index, unsigned *line,
unsigned *column) const;
QTextCursor cursor(unsigned index) const;
QTextCursor moveAtStartOfToken(unsigned index) const;
QTextCursor moveAtEndOfToken(unsigned index) const;
private:
CPlusPlus::Document::Ptr _doc;
CPlusPlus::Snapshot _snapshot;
QTextCursor _textCursor;
};
class CppEditorSupport: public QObject
{
Q_OBJECT
@@ -102,9 +63,6 @@ public:
CppEditorSupport(CppModelManager *modelManager);
virtual ~CppEditorSupport();
QList<QuickFixOperationPtr> quickFixes() const
{ return _quickFixes; }
TextEditor::ITextEditor *textEditor() const;
void setTextEditor(TextEditor::ITextEditor *textEditor);
@@ -120,9 +78,6 @@ private Q_SLOTS:
void updateDocument();
void updateDocumentNow();
void checkDocument();
void checkDocumentNow();
private:
enum { UPDATE_DOCUMENT_DEFAULT_INTERVAL = 150 };
@@ -132,10 +87,6 @@ private:
int _updateDocumentInterval;
QFuture<void> _documentParser;
QString _cachedContents;
QTimer *_quickFixTimer;
TextEditor::ITextMark *_quickFixMark;
QList<QuickFixOperationPtr> _quickFixes;
};
} // namespace Internal