diff --git a/src/plugins/clangcodemodel/clangcompletion.cpp b/src/plugins/clangcodemodel/clangcompletion.cpp index 3f37f2747c33d1961a85b1aac50a43f8e7757242..2c845d785c34fe191f11e85166226785ebb42cb4 100644 --- a/src/plugins/clangcodemodel/clangcompletion.cpp +++ b/src/plugins/clangcodemodel/clangcompletion.cpp @@ -560,37 +560,7 @@ ClangCompletionAssistInterface::ClangCompletionAssistInterface(ClangCompleter::P } ClangCompletionAssistProcessor::ClangCompletionAssistProcessor() - : m_preprocessorCompletions(QStringList() - << QLatin1String("define") - << QLatin1String("error") - << QLatin1String("include") - << QLatin1String("line") - << QLatin1String("pragma") - << QLatin1String("pragma once") - << QLatin1String("pragma omp atomic") - << QLatin1String("pragma omp parallel") - << QLatin1String("pragma omp for") - << QLatin1String("pragma omp ordered") - << QLatin1String("pragma omp parallel for") - << QLatin1String("pragma omp section") - << QLatin1String("pragma omp sections") - << QLatin1String("pragma omp parallel sections") - << QLatin1String("pragma omp single") - << QLatin1String("pragma omp master") - << QLatin1String("pragma omp critical") - << QLatin1String("pragma omp barrier") - << QLatin1String("pragma omp flush") - << QLatin1String("pragma omp threadprivate") - << QLatin1String("undef") - << QLatin1String("if") - << QLatin1String("ifdef") - << QLatin1String("ifndef") - << QLatin1String("elif") - << QLatin1String("else") - << QLatin1String("endif")) - , m_model(new ClangAssistProposalModel) - , m_hintProposal(0) - + : m_model(new ClangAssistProposalModel) { } diff --git a/src/plugins/clangcodemodel/clangcompletion.h b/src/plugins/clangcodemodel/clangcompletion.h index f30e9d29104894db789cba06a7857a448ca6e577..5aeeab78f4736abcee55645349c79ba02af3a320 100644 --- a/src/plugins/clangcodemodel/clangcompletion.h +++ b/src/plugins/clangcodemodel/clangcompletion.h @@ -35,13 +35,13 @@ #include +#include #include #include #include #include #include -#include #include #include @@ -102,7 +102,7 @@ private: Internal::PchInfo::Ptr m_savedPchPointer; }; -class CLANG_EXPORT ClangCompletionAssistProcessor : public TextEditor::IAssistProcessor +class CLANG_EXPORT ClangCompletionAssistProcessor : public CppTools::CppCompletionAssistProcessor { Q_DECLARE_TR_FUNCTIONS(ClangCodeModel::Internal::ClangCompletionAssistProcessor) @@ -132,13 +132,8 @@ private: const QVariant &data = QVariant()); private: - int m_startPosition; QScopedPointer m_interface; - QList m_completions; - CPlusPlus::Icons m_icons; - QStringList m_preprocessorCompletions; QScopedPointer m_model; - TextEditor::IAssistProposal *m_hintProposal; }; } // namespace Clang diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp index 934c07a52050b61f01dae08d00ea2b8cfcc6fcf7..701cfba31acda5e9374103aeb5f56484e5c827e1 100644 --- a/src/plugins/cpptools/cppcompletionassist.cpp +++ b/src/plugins/cpptools/cppcompletionassist.cpp @@ -602,24 +602,7 @@ bool isQPrivateSignal(const Symbol *symbol) // InternalCppCompletionAssistProcessor // ------------------------------------ InternalCppCompletionAssistProcessor::InternalCppCompletionAssistProcessor() - : m_startPosition(-1) - , m_snippetCollector(QLatin1String(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID), - QIcon(QLatin1String(":/texteditor/images/snippet.png"))) - , preprocessorCompletions(QStringList() - << QLatin1String("define") - << QLatin1String("error") - << QLatin1String("include") - << QLatin1String("line") - << QLatin1String("pragma") - << QLatin1String("undef") - << QLatin1String("if") - << QLatin1String("ifdef") - << QLatin1String("ifndef") - << QLatin1String("elif") - << QLatin1String("else") - << QLatin1String("endif")) - , m_model(new CppAssistProposalModel) - , m_hintProposal(0) + : m_model(new CppAssistProposalModel) { // FIXME: C++11? m_languageFeatures.objCEnabled = true; @@ -1176,7 +1159,7 @@ void InternalCppCompletionAssistProcessor::completeInclude(const QString &realPa void InternalCppCompletionAssistProcessor::completePreprocessor() { - foreach (const QString &preprocessorCompletion, preprocessorCompletions) + foreach (const QString &preprocessorCompletion, m_preprocessorCompletions) addCompletionItem(preprocessorCompletion); if (objcKeywordsWanted()) @@ -1706,11 +1689,6 @@ bool InternalCppCompletionAssistProcessor::completeQtMethod( return !m_completions.isEmpty(); } -void InternalCppCompletionAssistProcessor::addSnippets() -{ - m_completions.append(m_snippetCollector.collect()); -} - void InternalCppCompletionAssistProcessor::addKeywords() { int keywordLimit = T_FIRST_OBJC_AT_KEYWORD; diff --git a/src/plugins/cpptools/cppcompletionassist.h b/src/plugins/cpptools/cppcompletionassist.h index 2fecad0b769949606bf06a57a5fcc4fe23b18756..42de1a1595096d1aa16778be99c294f4bdb1989c 100644 --- a/src/plugins/cpptools/cppcompletionassist.h +++ b/src/plugins/cpptools/cppcompletionassist.h @@ -31,6 +31,7 @@ #ifndef CPPCOMPLETIONASSIST_H #define CPPCOMPLETIONASSIST_H +#include "cppcompletionassistprocessor.h" #include "cppcompletionassistprovider.h" #include "cppmodelmanager.h" #include "cppworkingcopy.h" @@ -96,7 +97,7 @@ public: TextEditor::AssistReason reason) const Q_DECL_OVERRIDE; }; -class InternalCppCompletionAssistProcessor : public TextEditor::IAssistProcessor +class InternalCppCompletionAssistProcessor : public CppCompletionAssistProcessor { public: InternalCppCompletionAssistProcessor(); @@ -144,7 +145,6 @@ private: const QVariant &data = QVariant()); void addCompletionItem(CPlusPlus::Symbol *symbol, int order = 0); - void addSnippets(); void addKeywords(); void addMacros(const QString &fileName, const CPlusPlus::Snapshot &snapshot); void addMacros_helper(const CPlusPlus::Snapshot &snapshot, @@ -152,15 +152,9 @@ private: QSet *processed, QSet *definedMacros); - int m_startPosition; CPlusPlus::LanguageFeatures m_languageFeatures; QScopedPointer m_interface; - QList m_completions; - TextEditor::SnippetAssistCollector m_snippetCollector; - CPlusPlus::Icons m_icons; - QStringList preprocessorCompletions; QScopedPointer m_model; - TextEditor::IAssistProposal *m_hintProposal; }; class CppCompletionAssistInterface : public TextEditor::AssistInterface diff --git a/src/plugins/cpptools/cppcompletionassistprocessor.cpp b/src/plugins/cpptools/cppcompletionassistprocessor.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d6ce5e6a14e4c935f134ca7df2ba647bf6ffd058 --- /dev/null +++ b/src/plugins/cpptools/cppcompletionassistprocessor.cpp @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://www.qt.io/licensing. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "cppcompletionassistprocessor.h" + +#include + +namespace CppTools { + +CppCompletionAssistProcessor::CppCompletionAssistProcessor() + : m_startPosition(-1) + , m_preprocessorCompletions(QStringList() + << QLatin1String("define") + << QLatin1String("error") + << QLatin1String("include") + << QLatin1String("line") + << QLatin1String("pragma") + << QLatin1String("pragma once") + << QLatin1String("pragma omp atomic") + << QLatin1String("pragma omp parallel") + << QLatin1String("pragma omp for") + << QLatin1String("pragma omp ordered") + << QLatin1String("pragma omp parallel for") + << QLatin1String("pragma omp section") + << QLatin1String("pragma omp sections") + << QLatin1String("pragma omp parallel sections") + << QLatin1String("pragma omp single") + << QLatin1String("pragma omp master") + << QLatin1String("pragma omp critical") + << QLatin1String("pragma omp barrier") + << QLatin1String("pragma omp flush") + << QLatin1String("pragma omp threadprivate") + << QLatin1String("undef") + << QLatin1String("if") + << QLatin1String("ifdef") + << QLatin1String("ifndef") + << QLatin1String("elif") + << QLatin1String("else") + << QLatin1String("endif")) + , m_hintProposal(0) + , m_snippetCollector(QLatin1String(CppEditor::Constants::CPP_SNIPPETS_GROUP_ID), + QIcon(QLatin1String(":/texteditor/images/snippet.png"))) +{ +} + +void CppCompletionAssistProcessor::addSnippets() +{ + m_completions.append(m_snippetCollector.collect()); +} + +} // namespace CppTools diff --git a/src/plugins/cpptools/cppcompletionassistprocessor.h b/src/plugins/cpptools/cppcompletionassistprocessor.h new file mode 100644 index 0000000000000000000000000000000000000000..294c5011ca8844787026b2922335998539d17bb7 --- /dev/null +++ b/src/plugins/cpptools/cppcompletionassistprocessor.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://www.qt.io/licensing. For further information +** use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef CPPCOMPLETIONASSISTPROCESSOR_H +#define CPPCOMPLETIONASSISTPROCESSOR_H + +#include "cpptools_global.h" + +#include +#include + +#include + +namespace CppTools { + +class CPPTOOLS_EXPORT CppCompletionAssistProcessor : public TextEditor::IAssistProcessor +{ +public: + CppCompletionAssistProcessor(); + +protected: + void addSnippets(); + + int m_startPosition; + QList m_completions; + QStringList m_preprocessorCompletions; + TextEditor::IAssistProposal *m_hintProposal; + CPlusPlus::Icons m_icons; + +private: + TextEditor::SnippetAssistCollector m_snippetCollector; +}; + +} // namespace CppTools + +#endif // CPPCOMPLETIONASSISTPROCESSOR_H diff --git a/src/plugins/cpptools/cpptools.pro b/src/plugins/cpptools/cpptools.pro index 0526b14712b5194151cf30fb5aea3f2a5575b5b5..318f059345fe346c4b61594c1760081c54f37cc4 100644 --- a/src/plugins/cpptools/cpptools.pro +++ b/src/plugins/cpptools/cpptools.pro @@ -22,6 +22,7 @@ HEADERS += \ cppcodestylesettings.h \ cppcodestylesettingspage.h \ cppcompletionassist.h \ + cppcompletionassistprocessor.h \ cppcompletionassistprovider.h \ cppcurrentdocumentfilter.h \ cppdoxygen.h \ @@ -84,6 +85,7 @@ SOURCES += \ cppcodestylesettings.cpp \ cppcodestylesettingspage.cpp \ cppcompletionassist.cpp \ + cppcompletionassistprocessor.cpp \ cppcompletionassistprovider.cpp \ cppcurrentdocumentfilter.cpp \ cppdoxygen.cpp \ diff --git a/src/plugins/cpptools/cpptools.qbs b/src/plugins/cpptools/cpptools.qbs index 8e7e0837338c14ecc9dad020bf1abc723aa0556b..4ab920650013a3551f10b188a32642ded72145df 100644 --- a/src/plugins/cpptools/cpptools.qbs +++ b/src/plugins/cpptools/cpptools.qbs @@ -40,6 +40,7 @@ QtcPlugin { "cppcodestylesettings.cpp", "cppcodestylesettings.h", "cppcodestylesettingspage.cpp", "cppcodestylesettingspage.h", "cppcodestylesettingspage.ui", "cppcompletionassist.cpp", "cppcompletionassist.h", + "cppcompletionassistprocessor.cpp", "cppcompletionassistprocessor.h", "cppcompletionassistprovider.cpp", "cppcompletionassistprovider.h", "cppcurrentdocumentfilter.cpp", "cppcurrentdocumentfilter.h", "cppdoxygen.cpp", "cppdoxygen.h",