forked from qt-creator/qt-creator
		
	New code assist API
This is a re-work of our completion engine. Primary goals are: - Allow the computation to run in a separate thread so the GUI is not locked. - Support a model-based approach. QStrings are still needed (filtering, etc), but internal structures are free to use more efficient representations. - Unifiy all kinds of *assist* into a more reusable and extensible framework. - Remove unnecessary dependencies on the text editor so we have more generic and easily "plugable" components (still things to be resolved).
This commit is contained in:
		@@ -1,175 +0,0 @@
 | 
			
		||||
/**************************************************************************
 | 
			
		||||
**
 | 
			
		||||
** This file is part of Qt Creator
 | 
			
		||||
**
 | 
			
		||||
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
 | 
			
		||||
**
 | 
			
		||||
** Contact: Nokia Corporation (info@qt.nokia.com)
 | 
			
		||||
**
 | 
			
		||||
**
 | 
			
		||||
** GNU Lesser General Public License Usage
 | 
			
		||||
**
 | 
			
		||||
** This file may be used under the terms of the GNU Lesser General Public
 | 
			
		||||
** License version 2.1 as published by the Free Software Foundation and
 | 
			
		||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
 | 
			
		||||
** Please review the following information to ensure the GNU Lesser General
 | 
			
		||||
** Public License version 2.1 requirements will be met:
 | 
			
		||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 | 
			
		||||
**
 | 
			
		||||
** In addition, as a special exception, Nokia gives you certain additional
 | 
			
		||||
** rights. These rights are described in the Nokia Qt LGPL Exception
 | 
			
		||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 | 
			
		||||
**
 | 
			
		||||
** Other Usage
 | 
			
		||||
**
 | 
			
		||||
** Alternatively, this file may be used in accordance with the terms and
 | 
			
		||||
** conditions contained in a signed written agreement between you and Nokia.
 | 
			
		||||
**
 | 
			
		||||
** If you have questions regarding the use of this file, please contact
 | 
			
		||||
** Nokia at info@qt.nokia.com.
 | 
			
		||||
**
 | 
			
		||||
**************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifndef CPPCODECOMPLETION_H
 | 
			
		||||
#define CPPCODECOMPLETION_H
 | 
			
		||||
 | 
			
		||||
#include <ASTfwd.h>
 | 
			
		||||
#include <FullySpecifiedType.h>
 | 
			
		||||
#include <cplusplus/Icons.h>
 | 
			
		||||
#include <cplusplus/Overview.h>
 | 
			
		||||
#include <cplusplus/TypeOfExpression.h>
 | 
			
		||||
 | 
			
		||||
#include <texteditor/icompletioncollector.h>
 | 
			
		||||
#include <texteditor/snippets/snippetcollector.h>
 | 
			
		||||
 | 
			
		||||
#include <QtCore/QObject>
 | 
			
		||||
#include <QtCore/QPointer>
 | 
			
		||||
 | 
			
		||||
QT_BEGIN_NAMESPACE
 | 
			
		||||
class QTextCursor;
 | 
			
		||||
QT_END_NAMESPACE
 | 
			
		||||
 | 
			
		||||
namespace TextEditor {
 | 
			
		||||
class ITextEditor;
 | 
			
		||||
class BaseTextEditorWidget;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace CPlusPlus {
 | 
			
		||||
class LookupItem;
 | 
			
		||||
class ClassOrNamespace;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace CppTools {
 | 
			
		||||
namespace Internal {
 | 
			
		||||
 | 
			
		||||
class CppModelManager;
 | 
			
		||||
class FunctionArgumentWidget;
 | 
			
		||||
 | 
			
		||||
class CppCodeCompletion : public TextEditor::ICompletionCollector
 | 
			
		||||
{
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
public:
 | 
			
		||||
    explicit CppCodeCompletion(CppModelManager *manager);
 | 
			
		||||
 | 
			
		||||
    void setObjcEnabled(bool objcEnabled)
 | 
			
		||||
    { m_objcEnabled = objcEnabled; }
 | 
			
		||||
 | 
			
		||||
    TextEditor::ITextEditor *editor() const;
 | 
			
		||||
    int startPosition() const;
 | 
			
		||||
    bool shouldRestartCompletion();
 | 
			
		||||
    QList<TextEditor::CompletionItem> getCompletions();
 | 
			
		||||
    bool supportsEditor(TextEditor::ITextEditor *editor) const;
 | 
			
		||||
    bool supportsPolicy(TextEditor::CompletionPolicy policy) const;
 | 
			
		||||
    bool triggersCompletion(TextEditor::ITextEditor *editor);
 | 
			
		||||
    int startCompletion(TextEditor::ITextEditor *editor);
 | 
			
		||||
    void completions(QList<TextEditor::CompletionItem> *completions);
 | 
			
		||||
 | 
			
		||||
    bool typedCharCompletes(const TextEditor::CompletionItem &item, QChar typedChar);
 | 
			
		||||
    void complete(const TextEditor::CompletionItem &item, QChar typedChar);
 | 
			
		||||
    bool partiallyComplete(const QList<TextEditor::CompletionItem> &completionItems);
 | 
			
		||||
    void cleanup();
 | 
			
		||||
 | 
			
		||||
    QIcon iconForSymbol(CPlusPlus::Symbol *symbol) const;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void addSnippets();
 | 
			
		||||
    void addKeywords();
 | 
			
		||||
    void addMacros(const QString &fileName, const CPlusPlus::Snapshot &snapshot);
 | 
			
		||||
    void addMacros_helper(const CPlusPlus::Snapshot &snapshot,
 | 
			
		||||
                          const QString &fileName,
 | 
			
		||||
                          QSet<QString> *processed,
 | 
			
		||||
                          QSet<QString> *definedMacros);
 | 
			
		||||
    void addCompletionItem(CPlusPlus::Symbol *symbol);
 | 
			
		||||
 | 
			
		||||
    bool completeInclude(const QTextCursor &cursor);
 | 
			
		||||
    void completePreprocessor();
 | 
			
		||||
 | 
			
		||||
    void globalCompletion(CPlusPlus::Scope *scope);
 | 
			
		||||
 | 
			
		||||
    bool completeConstructorOrFunction(const QList<CPlusPlus::LookupItem> &results,
 | 
			
		||||
                                       int endOfExpression, bool toolTipOnly);
 | 
			
		||||
 | 
			
		||||
    bool completeMember(const QList<CPlusPlus::LookupItem> &results);
 | 
			
		||||
    bool completeScope(const QList<CPlusPlus::LookupItem> &results);
 | 
			
		||||
 | 
			
		||||
    void completeNamespace(CPlusPlus::ClassOrNamespace *binding);
 | 
			
		||||
 | 
			
		||||
    void completeClass(CPlusPlus::ClassOrNamespace *b,
 | 
			
		||||
                       bool staticLookup = true);
 | 
			
		||||
 | 
			
		||||
    bool completeConstructors(CPlusPlus::Class *klass);
 | 
			
		||||
 | 
			
		||||
    bool completeQtMethod(const QList<CPlusPlus::LookupItem> &results,
 | 
			
		||||
                          bool wantSignals);
 | 
			
		||||
 | 
			
		||||
    bool completeSignal(const QList<CPlusPlus::LookupItem> &results)
 | 
			
		||||
    { return completeQtMethod(results, true); }
 | 
			
		||||
 | 
			
		||||
    bool completeSlot(const QList<CPlusPlus::LookupItem> &results)
 | 
			
		||||
    { return completeQtMethod(results, false); }
 | 
			
		||||
 | 
			
		||||
    int findStartOfName(int pos = -1) const;
 | 
			
		||||
 | 
			
		||||
    int startCompletionHelper(TextEditor::ITextEditor *editor);
 | 
			
		||||
 | 
			
		||||
    int startCompletionInternal(TextEditor::BaseTextEditorWidget *edit,
 | 
			
		||||
                                const QString fileName,
 | 
			
		||||
                                unsigned line, unsigned column,
 | 
			
		||||
                                const QString &expression,
 | 
			
		||||
                                int endOfExpression);
 | 
			
		||||
 | 
			
		||||
    QList<TextEditor::CompletionItem> removeDuplicates(const QList<TextEditor::CompletionItem> &items);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    void completeObjCMsgSend(CPlusPlus::ClassOrNamespace *binding,
 | 
			
		||||
                             bool staticClassAccess);
 | 
			
		||||
    bool tryObjCCompletion(TextEditor::BaseTextEditorWidget *edit);
 | 
			
		||||
    bool objcKeywordsWanted() const;
 | 
			
		||||
 | 
			
		||||
    static QStringList preprocessorCompletions;
 | 
			
		||||
 | 
			
		||||
    CppModelManager *m_manager;
 | 
			
		||||
    TextEditor::ITextEditor *m_editor;
 | 
			
		||||
    int m_startPosition;     // Position of the cursor from which completion started
 | 
			
		||||
    bool m_shouldRestartCompletion;
 | 
			
		||||
 | 
			
		||||
    bool m_automaticCompletion;
 | 
			
		||||
    unsigned m_completionOperator;
 | 
			
		||||
    bool m_objcEnabled;
 | 
			
		||||
 | 
			
		||||
    TextEditor::SnippetCollector m_snippetProvider;
 | 
			
		||||
 | 
			
		||||
    CPlusPlus::Icons m_icons;
 | 
			
		||||
    CPlusPlus::Overview overview;
 | 
			
		||||
    CPlusPlus::TypeOfExpression typeOfExpression;
 | 
			
		||||
    QPointer<FunctionArgumentWidget> m_functionArgumentWidget;
 | 
			
		||||
 | 
			
		||||
    QList<TextEditor::CompletionItem> m_completions;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Internal
 | 
			
		||||
} // namespace CppTools
 | 
			
		||||
 | 
			
		||||
Q_DECLARE_METATYPE(CPlusPlus::Symbol *)
 | 
			
		||||
 | 
			
		||||
#endif // CPPCODECOMPLETION_H
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										172
									
								
								src/plugins/cpptools/cppcompletionassist.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								src/plugins/cpptools/cppcompletionassist.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,172 @@
 | 
			
		||||
/**************************************************************************
 | 
			
		||||
**
 | 
			
		||||
** This file is part of Qt Creator
 | 
			
		||||
**
 | 
			
		||||
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
 | 
			
		||||
**
 | 
			
		||||
** Contact: Nokia Corporation (info@qt.nokia.com)
 | 
			
		||||
**
 | 
			
		||||
**
 | 
			
		||||
** GNU Lesser General Public License Usage
 | 
			
		||||
**
 | 
			
		||||
** This file may be used under the terms of the GNU Lesser General Public
 | 
			
		||||
** License version 2.1 as published by the Free Software Foundation and
 | 
			
		||||
** appearing in the file LICENSE.LGPL included in the packaging of this file.
 | 
			
		||||
** Please review the following information to ensure the GNU Lesser General
 | 
			
		||||
** Public License version 2.1 requirements will be met:
 | 
			
		||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 | 
			
		||||
**
 | 
			
		||||
** In addition, as a special exception, Nokia gives you certain additional
 | 
			
		||||
** rights. These rights are described in the Nokia Qt LGPL Exception
 | 
			
		||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 | 
			
		||||
**
 | 
			
		||||
** Other Usage
 | 
			
		||||
**
 | 
			
		||||
** Alternatively, this file may be used in accordance with the terms and
 | 
			
		||||
** conditions contained in a signed written agreement between you and Nokia.
 | 
			
		||||
**
 | 
			
		||||
** If you have questions regarding the use of this file, please contact
 | 
			
		||||
** Nokia at info@qt.nokia.com.
 | 
			
		||||
**
 | 
			
		||||
**************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifndef CPPCOMPLETIONASSIST_H
 | 
			
		||||
#define CPPCOMPLETIONASSIST_H
 | 
			
		||||
 | 
			
		||||
#include <cplusplus/Icons.h>
 | 
			
		||||
#include <cplusplus/Overview.h>
 | 
			
		||||
#include <cplusplus/TypeOfExpression.h>
 | 
			
		||||
#include <cplusplus/CppDocument.h>
 | 
			
		||||
 | 
			
		||||
#include <texteditor/codeassist/completionassistprovider.h>
 | 
			
		||||
#include <texteditor/codeassist/iassistprocessor.h>
 | 
			
		||||
#include <texteditor/snippets/snippetassistcollector.h>
 | 
			
		||||
#include <texteditor/codeassist/defaultassistinterface.h>
 | 
			
		||||
 | 
			
		||||
#include <QtCore/QStringList>
 | 
			
		||||
#include <QtCore/QVariant>
 | 
			
		||||
 | 
			
		||||
QT_BEGIN_NAMESPACE
 | 
			
		||||
class QTextCursor;
 | 
			
		||||
QT_END_NAMESPACE
 | 
			
		||||
 | 
			
		||||
namespace CPlusPlus {
 | 
			
		||||
class LookupItem;
 | 
			
		||||
class ClassOrNamespace;
 | 
			
		||||
class Function;
 | 
			
		||||
class LookupContext;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace CppTools {
 | 
			
		||||
namespace Internal {
 | 
			
		||||
 | 
			
		||||
class CppCompletionAssistInterface;
 | 
			
		||||
class CppAssistProposalModel;
 | 
			
		||||
 | 
			
		||||
class CppCompletionAssistProvider : public TextEditor::CompletionAssistProvider
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    virtual bool supportsEditor(const QString &editorId) const;
 | 
			
		||||
    virtual int activationCharSequenceLength() const;
 | 
			
		||||
    virtual bool isActivationCharSequence(const QString &sequence) const;
 | 
			
		||||
    virtual TextEditor::IAssistProcessor *createProcessor() const;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class CppCompletionAssistProcessor : public TextEditor::IAssistProcessor
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    CppCompletionAssistProcessor();
 | 
			
		||||
    virtual ~CppCompletionAssistProcessor();
 | 
			
		||||
 | 
			
		||||
    virtual TextEditor::IAssistProposal *perform(const TextEditor::IAssistInterface *interface);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    TextEditor::IAssistProposal *createContentProposal();
 | 
			
		||||
    TextEditor::IAssistProposal *createHintProposal(QList<CPlusPlus::Function *> symbols) const;
 | 
			
		||||
    bool accepts() const;
 | 
			
		||||
 | 
			
		||||
    int startOfOperator(int pos, unsigned *kind, bool wantFunctionCall) const;
 | 
			
		||||
    int findStartOfName(int pos = -1) const;
 | 
			
		||||
    int startCompletionHelper();
 | 
			
		||||
    bool tryObjCCompletion();
 | 
			
		||||
    bool objcKeywordsWanted() const;
 | 
			
		||||
    int startCompletionInternal(const QString fileName,
 | 
			
		||||
                                unsigned line, unsigned column,
 | 
			
		||||
                                const QString &expression,
 | 
			
		||||
                                int endOfExpression);
 | 
			
		||||
 | 
			
		||||
    void completeObjCMsgSend(CPlusPlus::ClassOrNamespace *binding, bool staticClassAccess);
 | 
			
		||||
    bool completeInclude(const QTextCursor &cursor);
 | 
			
		||||
    void completePreprocessor();
 | 
			
		||||
    bool completeConstructorOrFunction(const QList<CPlusPlus::LookupItem> &results,
 | 
			
		||||
                                       int endOfExpression,
 | 
			
		||||
                                       bool toolTipOnly);
 | 
			
		||||
    bool completeMember(const QList<CPlusPlus::LookupItem> &results);
 | 
			
		||||
    bool completeScope(const QList<CPlusPlus::LookupItem> &results);
 | 
			
		||||
    void completeNamespace(CPlusPlus::ClassOrNamespace *binding);
 | 
			
		||||
    void completeClass(CPlusPlus::ClassOrNamespace *b, bool staticLookup = true);
 | 
			
		||||
    bool completeQtMethod(const QList<CPlusPlus::LookupItem> &results, bool wantSignals);
 | 
			
		||||
    bool completeSignal(const QList<CPlusPlus::LookupItem> &results)
 | 
			
		||||
    { return completeQtMethod(results, true); }
 | 
			
		||||
    bool completeSlot(const QList<CPlusPlus::LookupItem> &results)
 | 
			
		||||
    { return completeQtMethod(results, false); }
 | 
			
		||||
    void globalCompletion(CPlusPlus::Scope *scope);
 | 
			
		||||
 | 
			
		||||
    void addCompletionItem(const QString &text,
 | 
			
		||||
                           const QIcon &icon = QIcon(),
 | 
			
		||||
                           int order = 0,
 | 
			
		||||
                           const QVariant &data = QVariant());
 | 
			
		||||
    void addCompletionItem(CPlusPlus::Symbol *symbol);
 | 
			
		||||
    void addSnippets();
 | 
			
		||||
    void addKeywords();
 | 
			
		||||
    void addMacros(const QString &fileName, const CPlusPlus::Snapshot &snapshot);
 | 
			
		||||
    void addMacros_helper(const CPlusPlus::Snapshot &snapshot,
 | 
			
		||||
                          const QString &fileName,
 | 
			
		||||
                          QSet<QString> *processed,
 | 
			
		||||
                          QSet<QString> *definedMacros);
 | 
			
		||||
 | 
			
		||||
    int m_startPosition;
 | 
			
		||||
    bool m_objcEnabled;
 | 
			
		||||
    QScopedPointer<const CppCompletionAssistInterface> m_interface;
 | 
			
		||||
    QList<TextEditor::BasicProposalItem *> m_completions;
 | 
			
		||||
    TextEditor::SnippetAssistCollector m_snippetCollector;
 | 
			
		||||
    const CppCompletionAssistProvider *m_provider;
 | 
			
		||||
    CPlusPlus::Icons m_icons;
 | 
			
		||||
    CPlusPlus::TypeOfExpression typeOfExpression;
 | 
			
		||||
    QStringList preprocessorCompletions;
 | 
			
		||||
    QScopedPointer<CppAssistProposalModel> m_model;
 | 
			
		||||
    TextEditor::IAssistProposal *m_hintProposal;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
class CppCompletionAssistInterface : public TextEditor::DefaultAssistInterface
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    CppCompletionAssistInterface(QTextDocument *document,
 | 
			
		||||
                                 int position,
 | 
			
		||||
                                 Core::IFile *file,
 | 
			
		||||
                                 TextEditor::AssistReason reason,
 | 
			
		||||
                                 const CPlusPlus::Snapshot &snapshot,
 | 
			
		||||
                                 const QStringList &includePaths,
 | 
			
		||||
                                 const QStringList &frameworkPaths)
 | 
			
		||||
        : TextEditor::DefaultAssistInterface(document, position, file, reason)
 | 
			
		||||
        , m_snapshot(snapshot)
 | 
			
		||||
        , m_includePaths(includePaths)
 | 
			
		||||
        , m_frameworkPaths(frameworkPaths)
 | 
			
		||||
    {}
 | 
			
		||||
 | 
			
		||||
    const CPlusPlus::Snapshot &snapshot() const { return m_snapshot; }
 | 
			
		||||
    const QStringList &includePaths() const { return m_includePaths; }
 | 
			
		||||
    const QStringList &frameworkPaths() const { return m_frameworkPaths; }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    CPlusPlus::Snapshot m_snapshot;
 | 
			
		||||
    QStringList m_includePaths;
 | 
			
		||||
    QStringList m_frameworkPaths;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // Internal
 | 
			
		||||
} // CppTools
 | 
			
		||||
 | 
			
		||||
Q_DECLARE_METATYPE(CPlusPlus::Symbol *)
 | 
			
		||||
 | 
			
		||||
#endif // CPPCOMPLETIONASSIST_H
 | 
			
		||||
@@ -10,7 +10,6 @@ INCLUDEPATH += .
 | 
			
		||||
DEFINES += CPPTOOLS_LIBRARY
 | 
			
		||||
HEADERS += completionsettingspage.h \
 | 
			
		||||
    cppclassesfilter.h \
 | 
			
		||||
    cppcodecompletion.h \
 | 
			
		||||
    cppcurrentdocumentfilter.h \
 | 
			
		||||
    cppfunctionsfilter.h \
 | 
			
		||||
    cppmodelmanager.h \
 | 
			
		||||
@@ -28,11 +27,11 @@ HEADERS += completionsettingspage.h \
 | 
			
		||||
    uicodecompletionsupport.h \
 | 
			
		||||
    insertionpointlocator.h \
 | 
			
		||||
    cpprefactoringchanges.h \
 | 
			
		||||
    abstracteditorsupport.h
 | 
			
		||||
    abstracteditorsupport.h \
 | 
			
		||||
    cppcompletionassist.h
 | 
			
		||||
 | 
			
		||||
SOURCES += completionsettingspage.cpp \
 | 
			
		||||
    cppclassesfilter.cpp \
 | 
			
		||||
    cppcodecompletion.cpp \
 | 
			
		||||
    cppcurrentdocumentfilter.cpp \
 | 
			
		||||
    cppfunctionsfilter.cpp \
 | 
			
		||||
    cppmodelmanager.cpp \
 | 
			
		||||
@@ -48,7 +47,8 @@ SOURCES += completionsettingspage.cpp \
 | 
			
		||||
    symbolsfindfilter.cpp \
 | 
			
		||||
    uicodecompletionsupport.cpp \
 | 
			
		||||
    insertionpointlocator.cpp \
 | 
			
		||||
    cpprefactoringchanges.cpp
 | 
			
		||||
    cpprefactoringchanges.cpp \
 | 
			
		||||
    cppcompletionassist.cpp
 | 
			
		||||
 | 
			
		||||
FORMS += completionsettingspage.ui \
 | 
			
		||||
    cppfilesettingspage.ui
 | 
			
		||||
 
 | 
			
		||||
@@ -34,13 +34,13 @@
 | 
			
		||||
#include "completionsettingspage.h"
 | 
			
		||||
#include "cppfilesettingspage.h"
 | 
			
		||||
#include "cppclassesfilter.h"
 | 
			
		||||
#include "cppcodecompletion.h"
 | 
			
		||||
#include "cppfunctionsfilter.h"
 | 
			
		||||
#include "cppcurrentdocumentfilter.h"
 | 
			
		||||
#include "cppmodelmanager.h"
 | 
			
		||||
#include "cpptoolsconstants.h"
 | 
			
		||||
#include "cpplocatorfilter.h"
 | 
			
		||||
#include "symbolsfindfilter.h"
 | 
			
		||||
#include "cppcompletionassist.h"
 | 
			
		||||
 | 
			
		||||
#include <extensionsystem/pluginmanager.h>
 | 
			
		||||
 | 
			
		||||
@@ -113,9 +113,7 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error)
 | 
			
		||||
            m_modelManager, SLOT(updateSourceFiles(QStringList)));
 | 
			
		||||
    addAutoReleasedObject(m_modelManager);
 | 
			
		||||
 | 
			
		||||
    CppCodeCompletion *completion = new CppCodeCompletion(m_modelManager);
 | 
			
		||||
    addAutoReleasedObject(completion);
 | 
			
		||||
 | 
			
		||||
    addAutoReleasedObject(new CppCompletionAssistProvider);
 | 
			
		||||
    addAutoReleasedObject(new CppLocatorFilter(m_modelManager));
 | 
			
		||||
    addAutoReleasedObject(new CppClassesFilter(m_modelManager));
 | 
			
		||||
    addAutoReleasedObject(new CppFunctionsFilter(m_modelManager));
 | 
			
		||||
@@ -141,12 +139,6 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error)
 | 
			
		||||
    mcpptools->addAction(command);
 | 
			
		||||
    connect(switchAction, SIGNAL(triggered()), this, SLOT(switchHeaderSource()));
 | 
			
		||||
 | 
			
		||||
    // Set completion settings and keep them up to date
 | 
			
		||||
    TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance();
 | 
			
		||||
    completion->setCompletionSettings(textEditorSettings->completionSettings());
 | 
			
		||||
    connect(textEditorSettings, SIGNAL(completionSettingsChanged(TextEditor::CompletionSettings)),
 | 
			
		||||
            completion, SLOT(setCompletionSettings(TextEditor::CompletionSettings)));
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user