diff options
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r-- | src/plugins/cpptools/completionsettingspage.cpp | 44 | ||||
-rw-r--r-- | src/plugins/cpptools/completionsettingspage.h | 10 | ||||
-rw-r--r-- | src/plugins/cpptools/cppcodecompletion.cpp | 59 | ||||
-rw-r--r-- | src/plugins/cpptools/cppcodecompletion.h | 16 | ||||
-rw-r--r-- | src/plugins/cpptools/cpptoolsplugin.cpp | 33 | ||||
-rw-r--r-- | src/plugins/cpptools/cpptoolsplugin.h | 2 |
6 files changed, 49 insertions, 115 deletions
diff --git a/src/plugins/cpptools/completionsettingspage.cpp b/src/plugins/cpptools/completionsettingspage.cpp index e001313e10..ae1882b009 100644 --- a/src/plugins/cpptools/completionsettingspage.cpp +++ b/src/plugins/cpptools/completionsettingspage.cpp @@ -32,15 +32,15 @@ #include <coreplugin/icore.h> #include <extensionsystem/pluginmanager.h> +#include <texteditor/texteditorsettings.h> #include <QtCore/QTextStream> #include <QtCore/QCoreApplication> using namespace CppTools::Internal; -CompletionSettingsPage::CompletionSettingsPage(CppCodeCompletion *completion) - : m_completion(completion) - , m_page(new Ui_CompletionSettingsPage) +CompletionSettingsPage::CompletionSettingsPage() + : m_page(new Ui_CompletionSettingsPage) { } @@ -64,23 +64,27 @@ QWidget *CompletionSettingsPage::createPage(QWidget *parent) QWidget *w = new QWidget(parent); m_page->setupUi(w); + const TextEditor::CompletionSettings &settings = + TextEditor::TextEditorSettings::instance()->completionSettings(); + int caseSensitivityIndex = 0; - switch (m_completion->caseSensitivity()) { - case CppCodeCompletion::CaseSensitive: + switch (settings.m_caseSensitivity) { + case TextEditor::CaseSensitive: caseSensitivityIndex = 0; break; - case CppCodeCompletion::CaseInsensitive: + case TextEditor::CaseInsensitive: caseSensitivityIndex = 1; break; - case CppCodeCompletion::FirstLetterCaseSensitive: + case TextEditor::FirstLetterCaseSensitive: caseSensitivityIndex = 2; break; } m_page->caseSensitivity->setCurrentIndex(caseSensitivityIndex); - m_page->autoInsertBrackets->setChecked(m_completion->autoInsertBrackets()); - m_page->partiallyComplete->setChecked(m_completion->isPartialCompletionEnabled()); - m_page->spaceAfterFunctionName->setChecked(m_completion->isSpaceAfterFunctionName()); + m_page->autoInsertBrackets->setChecked(settings.m_autoInsertBrackets); + m_page->partiallyComplete->setChecked(settings.m_partiallyComplete); + m_page->spaceAfterFunctionName->setChecked(settings.m_spaceAfterFunctionName); + if (m_searchKeywords.isEmpty()) { QTextStream(&m_searchKeywords) << m_page->caseSensitivityLabel->text() << ' ' << m_page->autoInsertBrackets->text() @@ -88,15 +92,19 @@ QWidget *CompletionSettingsPage::createPage(QWidget *parent) << ' ' << m_page->spaceAfterFunctionName->text(); m_searchKeywords.remove(QLatin1Char('&')); } + return w; } void CompletionSettingsPage::apply() { - m_completion->setCaseSensitivity(caseSensitivity()); - m_completion->setAutoInsertBrackets(m_page->autoInsertBrackets->isChecked()); - m_completion->setPartialCompletionEnabled(m_page->partiallyComplete->isChecked()); - m_completion->setSpaceAfterFunctionName(m_page->spaceAfterFunctionName->isChecked()); + TextEditor::CompletionSettings settings; + settings.m_caseSensitivity = caseSensitivity(); + settings.m_autoInsertBrackets = m_page->autoInsertBrackets->isChecked(); + settings.m_partiallyComplete = m_page->partiallyComplete->isChecked(); + settings.m_spaceAfterFunctionName = m_page->spaceAfterFunctionName->isChecked(); + + TextEditor::TextEditorSettings::instance()->setCompletionSettings(settings); } bool CompletionSettingsPage::matches(const QString &s) const @@ -104,14 +112,14 @@ bool CompletionSettingsPage::matches(const QString &s) const return m_searchKeywords.contains(s, Qt::CaseInsensitive); } -CppCodeCompletion::CaseSensitivity CompletionSettingsPage::caseSensitivity() const +TextEditor::CaseSensitivity CompletionSettingsPage::caseSensitivity() const { switch (m_page->caseSensitivity->currentIndex()) { case 0: // Full - return CppCodeCompletion::CaseSensitive; + return TextEditor::CaseSensitive; case 1: // None - return CppCodeCompletion::CaseInsensitive; + return TextEditor::CaseInsensitive; default: // First letter - return CppCodeCompletion::FirstLetterCaseSensitive; + return TextEditor::FirstLetterCaseSensitive; } } diff --git a/src/plugins/cpptools/completionsettingspage.h b/src/plugins/cpptools/completionsettingspage.h index fe9b8477c3..4221811ad6 100644 --- a/src/plugins/cpptools/completionsettingspage.h +++ b/src/plugins/cpptools/completionsettingspage.h @@ -30,10 +30,9 @@ #ifndef COMPLETIONSETTINGSPAGE_H #define COMPLETIONSETTINGSPAGE_H +#include <texteditor/completionsettings.h> #include <texteditor/texteditoroptionspage.h> -#include "cppcodecompletion.h" - QT_BEGIN_NAMESPACE class Ui_CompletionSettingsPage; QT_END_NAMESPACE @@ -41,12 +40,14 @@ QT_END_NAMESPACE namespace CppTools { namespace Internal { +// TODO: Move this class to the text editor plugin + class CompletionSettingsPage : public TextEditor::TextEditorOptionsPage { Q_OBJECT public: - CompletionSettingsPage(CppCodeCompletion *completion); + CompletionSettingsPage(); ~CompletionSettingsPage(); QString id() const; @@ -58,9 +59,8 @@ public: virtual bool matches(const QString &) const; private: - CppCodeCompletion::CaseSensitivity caseSensitivity() const; + TextEditor::CaseSensitivity caseSensitivity() const; - CppCodeCompletion *m_completion; Ui_CompletionSettingsPage *m_page; QString m_searchKeywords; }; diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp index 4edf109624..977fb4001a 100644 --- a/src/plugins/cpptools/cppcodecompletion.cpp +++ b/src/plugins/cpptools/cppcodecompletion.cpp @@ -57,6 +57,7 @@ #include <coreplugin/icore.h> #include <coreplugin/mimedatabase.h> #include <coreplugin/editormanager/editormanager.h> +#include <texteditor/completionsettings.h> #include <texteditor/itexteditor.h> #include <texteditor/itexteditable.h> #include <texteditor/basetexteditor.h> @@ -436,10 +437,6 @@ CppCodeCompletion::CppCodeCompletion(CppModelManager *manager) m_manager(manager), m_editor(0), m_startPosition(-1), - m_caseSensitivity(FirstLetterCaseSensitive), - m_autoInsertBrackets(true), - m_partialCompletionEnabled(true), - m_spaceAfterFunctionName(false), m_forcedCompletion(false), m_completionOperator(T_EOF_SYMBOL), m_objcEnabled(true) @@ -451,46 +448,6 @@ QIcon CppCodeCompletion::iconForSymbol(Symbol *symbol) const return m_icons.iconForSymbol(symbol); } -CppCodeCompletion::CaseSensitivity CppCodeCompletion::caseSensitivity() const -{ - return m_caseSensitivity; -} - -void CppCodeCompletion::setCaseSensitivity(CaseSensitivity caseSensitivity) -{ - m_caseSensitivity = caseSensitivity; -} - -bool CppCodeCompletion::autoInsertBrackets() const -{ - return m_autoInsertBrackets; -} - -void CppCodeCompletion::setAutoInsertBrackets(bool autoInsertBrackets) -{ - m_autoInsertBrackets = autoInsertBrackets; -} - -bool CppCodeCompletion::isPartialCompletionEnabled() const -{ - return m_partialCompletionEnabled; -} - -void CppCodeCompletion::setPartialCompletionEnabled(bool partialCompletionEnabled) -{ - m_partialCompletionEnabled = partialCompletionEnabled; -} - -bool CppCodeCompletion::isSpaceAfterFunctionName() const -{ - return m_spaceAfterFunctionName; -} - -void CppCodeCompletion::setSpaceAfterFunctionName(bool spaceAfterFunctionName) -{ - m_spaceAfterFunctionName = spaceAfterFunctionName; -} - /* Searches backwards for an access operator. */ @@ -1512,7 +1469,7 @@ void CppCodeCompletion::completions(QList<TextEditor::CompletionItem> *completio return; if (m_completionOperator != T_LPAREN) { - filter(m_completions, completions, key, m_caseSensitivity); + filter(m_completions, completions, key); } else if (m_completionOperator == T_LPAREN || m_completionOperator == T_SIGNAL || @@ -1590,7 +1547,9 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item) //qDebug() << "current symbol:" << overview.prettyName(symbol->name()) //<< overview.prettyType(symbol->type()); - if (m_autoInsertBrackets && symbol && symbol->type()) { + const bool autoInsertBrackets = completionSettings().m_autoInsertBrackets; + + if (autoInsertBrackets && symbol && symbol->type()) { if (Function *function = symbol->type()->asFunctionType()) { // If the member is a function, automatically place the opening parenthesis, // except when it might take template parameters. @@ -1603,8 +1562,8 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item) extraChars += QLatin1Char('<'); } } else if (! function->isAmbiguous()) { - if (m_spaceAfterFunctionName) - extraChars += QLatin1Char(' '); + if (completionSettings().m_spaceAfterFunctionName) + extraChars += QLatin1Char(' '); extraChars += QLatin1Char('('); // If the function doesn't return anything, automatically place the semicolon, @@ -1631,7 +1590,7 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item) } } - if (m_autoInsertBrackets && item.data.canConvert<CompleteFunctionDeclaration>()) { + if (autoInsertBrackets && item.data.canConvert<CompleteFunctionDeclaration>()) { // everything from the closing parenthesis on are extra chars, to // make sure an auto-inserted ")" gets replaced by ") const" if necessary int closingParen = toInsert.lastIndexOf(QLatin1Char(')')); @@ -1667,7 +1626,7 @@ bool CppCodeCompletion::partiallyComplete(const QList<TextEditor::CompletionItem } else if (completionItems.count() == 1) { complete(completionItems.first()); return true; - } else if (m_partialCompletionEnabled && m_completionOperator != T_LPAREN) { + } else if (m_completionOperator != T_LPAREN) { return TextEditor::ICompletionCollector::partiallyComplete(completionItems); } diff --git a/src/plugins/cpptools/cppcodecompletion.h b/src/plugins/cpptools/cppcodecompletion.h index c2938a6726..6337ed5c9f 100644 --- a/src/plugins/cpptools/cppcodecompletion.h +++ b/src/plugins/cpptools/cppcodecompletion.h @@ -86,18 +86,6 @@ public: QIcon iconForSymbol(CPlusPlus::Symbol *symbol) const; - CaseSensitivity caseSensitivity() const; - void setCaseSensitivity(CaseSensitivity caseSensitivity); - - bool autoInsertBrackets() const; - void setAutoInsertBrackets(bool autoInsertBrackets); - - bool isPartialCompletionEnabled() const; - void setPartialCompletionEnabled(bool partialCompletionEnabled); - - bool isSpaceAfterFunctionName() const; - void setSpaceAfterFunctionName(bool spaceAfterFunctionName); - private: void addKeywords(); void addMacros(const QString &fileName, const CPlusPlus::Snapshot &snapshot); @@ -159,10 +147,6 @@ private: TextEditor::ITextEditable *m_editor; int m_startPosition; // Position of the cursor from which completion started - CaseSensitivity m_caseSensitivity; - bool m_autoInsertBrackets; - bool m_partialCompletionEnabled; - bool m_spaceAfterFunctionName; bool m_forcedCompletion; unsigned m_completionOperator; bool m_objcEnabled; diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp index 19f986a8b9..61173c8e5f 100644 --- a/src/plugins/cpptools/cpptoolsplugin.cpp +++ b/src/plugins/cpptools/cpptoolsplugin.cpp @@ -51,6 +51,7 @@ #include <coreplugin/progressmanager/progressmanager.h> #include <coreplugin/vcsmanager.h> #include <coreplugin/filemanager.h> +#include <texteditor/texteditorsettings.h> #include <cppeditor/cppeditorconstants.h> #include <QtCore/QtConcurrentRun> @@ -109,8 +110,8 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error) m_modelManager, SLOT(updateSourceFiles(QStringList))); addAutoReleasedObject(m_modelManager); - m_completion = new CppCodeCompletion(m_modelManager); - addAutoReleasedObject(m_completion); + CppCodeCompletion *completion = new CppCodeCompletion(m_modelManager); + addAutoReleasedObject(completion); CppLocatorFilter *locatorFilter = new CppLocatorFilter(m_modelManager, core->editorManager()); @@ -118,7 +119,7 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error) addAutoReleasedObject(new CppClassesFilter(m_modelManager, core->editorManager())); addAutoReleasedObject(new CppFunctionsFilter(m_modelManager, core->editorManager())); addAutoReleasedObject(new CppCurrentDocumentFilter(m_modelManager, core->editorManager())); - addAutoReleasedObject(new CompletionSettingsPage(m_completion)); + addAutoReleasedObject(new CompletionSettingsPage); addAutoReleasedObject(new CppFileSettingsPage(m_fileSettings)); // Menus @@ -139,17 +140,11 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error) mcpptools->addAction(command); connect(switchAction, SIGNAL(triggered()), this, SLOT(switchHeaderSource())); - // Restore settings - QSettings *settings = Core::ICore::instance()->settings(); - settings->beginGroup(QLatin1String("CppTools")); - settings->beginGroup(QLatin1String("Completion")); - const int caseSensitivity = settings->value(QLatin1String("CaseSensitivity"), m_completion->caseSensitivity()).toInt(); - m_completion->setCaseSensitivity((CppCodeCompletion::CaseSensitivity) caseSensitivity); - m_completion->setAutoInsertBrackets(settings->value(QLatin1String("AutoInsertBraces"), true).toBool()); - m_completion->setPartialCompletionEnabled(settings->value(QLatin1String("PartiallyComplete"), true).toBool()); - m_completion->setSpaceAfterFunctionName(settings->value(QLatin1String("SpaceAfterFunctionName"), false).toBool()); - settings->endGroup(); - settings->endGroup(); + // 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; } @@ -170,16 +165,6 @@ void CppToolsPlugin::extensionsInitialized() void CppToolsPlugin::aboutToShutdown() { - // Save settings - QSettings *settings = Core::ICore::instance()->settings(); - settings->beginGroup(QLatin1String("CppTools")); - settings->beginGroup(QLatin1String("Completion")); - settings->setValue(QLatin1String("CaseSensitivity"), (int) m_completion->caseSensitivity()); - settings->setValue(QLatin1String("AutoInsertBraces"), m_completion->autoInsertBrackets()); - settings->setValue(QLatin1String("PartiallyComplete"), m_completion->isPartialCompletionEnabled()); - settings->setValue(QLatin1String("SpaceAfterFunctionName"), m_completion->isSpaceAfterFunctionName()); - settings->endGroup(); - settings->endGroup(); } void CppToolsPlugin::switchHeaderSource() diff --git a/src/plugins/cpptools/cpptoolsplugin.h b/src/plugins/cpptools/cpptoolsplugin.h index c5b82982ca..ff4aa9ce81 100644 --- a/src/plugins/cpptools/cpptoolsplugin.h +++ b/src/plugins/cpptools/cpptoolsplugin.h @@ -50,7 +50,6 @@ QT_END_NAMESPACE namespace CppTools { namespace Internal { -class CppCodeCompletion; class CppModelManager; struct CppFileSettings; @@ -79,7 +78,6 @@ private: int m_context; CppModelManager *m_modelManager; - CppCodeCompletion *m_completion; QSharedPointer<CppFileSettings> m_fileSettings; static CppToolsPlugin *m_instance; |