From e8fab22afbaabf50a6c254c5e4c63bd3ea5bc5c7 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Wed, 14 May 2014 11:34:45 -0400 Subject: [PATCH] C++: Disable "Replace Dot for Arrow" auto-correction for ObjC sources In the light of Obj-C properties this seems to annoy more than to help. Change-Id: I48f92d505035369f48e8798d0972ef00306bdde0 Reviewed-by: Eike Ziller Reviewed-by: Erik Verbruggen --- src/plugins/clangcodemodel/clangcompletion.cpp | 3 ++- src/plugins/clangcodemodel/clangcompletion.h | 3 ++- src/plugins/cppeditor/cppeditor.cpp | 3 ++- src/plugins/cpptools/cppcompletionassist.cpp | 11 ++++++++--- src/plugins/cpptools/cppcompletionassist.h | 11 ++++++++--- src/plugins/cpptools/cppcompletionassistprovider.h | 3 ++- 6 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/plugins/clangcodemodel/clangcompletion.cpp b/src/plugins/clangcodemodel/clangcompletion.cpp index 5341ba305a0..72bc6dbfae7 100644 --- a/src/plugins/clangcodemodel/clangcompletion.cpp +++ b/src/plugins/clangcodemodel/clangcompletion.cpp @@ -201,9 +201,10 @@ IAssistProcessor *ClangCompletionAssistProvider::createProcessor() const IAssistInterface *ClangCompletionAssistProvider::createAssistInterface( ProjectExplorer::Project *project, TextEditor::BaseTextEditor *editor, - QTextDocument *document, int position, AssistReason reason) const + QTextDocument *document, bool isObjCEnabled, int position, AssistReason reason) const { Q_UNUSED(project); + Q_UNUSED(isObjCEnabled); QString fileName = editor->document()->filePath(); CppModelManagerInterface *modelManager = CppModelManagerInterface::instance(); diff --git a/src/plugins/clangcodemodel/clangcompletion.h b/src/plugins/clangcodemodel/clangcompletion.h index 8bd77d9a6c7..2e07b034c31 100644 --- a/src/plugins/clangcodemodel/clangcompletion.h +++ b/src/plugins/clangcodemodel/clangcompletion.h @@ -58,7 +58,8 @@ public: virtual TextEditor::IAssistProcessor *createProcessor() const; virtual TextEditor::IAssistInterface *createAssistInterface( ProjectExplorer::Project *project, TextEditor::BaseTextEditor *editor, - QTextDocument *document, int position, TextEditor::AssistReason reason) const; + QTextDocument *document, bool isObjCEnabled, int position, + TextEditor::AssistReason reason) const; private: ClangCodeModel::ClangCompleter::Ptr m_clangCompletionWrapper; diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index e641bd9bb57..97d0a26c1a3 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -1621,7 +1621,8 @@ TextEditor::IAssistInterface *CPPEditorWidget::createAssistInterface( if (cap) { return cap->createAssistInterface( ProjectExplorer::ProjectExplorerPlugin::currentProject(), - editor(), document(), position(), reason); + editor(), document(), cppEditorDocument()->isObjCEnabled(), position(), + reason); } } else if (kind == TextEditor::QuickFix) { if (!semanticInfo().doc || isOutdated()) diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp index 577a7ac204e..8fa21ae58d0 100644 --- a/src/plugins/cpptools/cppcompletionassist.cpp +++ b/src/plugins/cpptools/cppcompletionassist.cpp @@ -422,14 +422,15 @@ IAssistProcessor *InternalCompletionAssistProvider::createProcessor() const TextEditor::IAssistInterface *InternalCompletionAssistProvider::createAssistInterface( ProjectExplorer::Project *project, BaseTextEditor *editor, QTextDocument *document, - int position, TextEditor::AssistReason reason) const + bool isObjCEnabled, int position, TextEditor::AssistReason reason) const { Q_UNUSED(project); QTC_ASSERT(editor, return 0); QTC_ASSERT(document, return 0); CppModelManagerInterface *modelManager = CppModelManagerInterface::instance(); - return new CppTools::Internal::CppCompletionAssistInterface(editor, document, position, reason, + return new CppTools::Internal::CppCompletionAssistInterface(editor, document, isObjCEnabled, + position, reason, modelManager->workingCopy()); } @@ -1409,10 +1410,14 @@ bool CppCompletionAssistProcessor::completeMember(const QListisObjCEnabled()) + replaceDotForArrow = &m_model->m_replaceDotForArrow; + if (ClassOrNamespace *binding = resolveExpression.baseExpression(baseResults, m_model->m_completionOperator, - &m_model->m_replaceDotForArrow)) { + replaceDotForArrow)) { if (binding) completeClass(binding, /*static lookup = */ true); diff --git a/src/plugins/cpptools/cppcompletionassist.h b/src/plugins/cpptools/cppcompletionassist.h index 89a5c4c16ec..ed56a780c88 100644 --- a/src/plugins/cpptools/cppcompletionassist.h +++ b/src/plugins/cpptools/cppcompletionassist.h @@ -94,13 +94,12 @@ class InternalCompletionAssistProvider : public CppCompletionAssistProvider public: TextEditor::IAssistProcessor *createProcessor() const QTC_OVERRIDE; - TextEditor::IAssistInterface *createAssistInterface( - ProjectExplorer::Project *project, + TextEditor::IAssistInterface *createAssistInterface(ProjectExplorer::Project *project, TextEditor::BaseTextEditor *editor, QTextDocument *document, + bool isObjCEnabled, int position, TextEditor::AssistReason reason) const QTC_OVERRIDE; - }; class CppCompletionAssistProcessor : public TextEditor::IAssistProcessor @@ -175,12 +174,14 @@ class CppCompletionAssistInterface : public TextEditor::DefaultAssistInterface public: CppCompletionAssistInterface(TextEditor::BaseTextEditor *editor, QTextDocument *textDocument, + bool isObjCEnabled, int position, TextEditor::AssistReason reason, const CppModelManagerInterface::WorkingCopy &workingCopy) : TextEditor::DefaultAssistInterface(textDocument, position, editor->document()->filePath(), reason) , m_editor(editor) + , m_isObjCEnabled(isObjCEnabled) , m_gotCppSpecifics(false) , m_workingCopy(workingCopy) {} @@ -194,12 +195,15 @@ public: const QStringList &frameworkPaths) : TextEditor::DefaultAssistInterface(textDocument, position, fileName, reason) , m_editor(0) + , m_isObjCEnabled(false) , m_gotCppSpecifics(true) , m_snapshot(snapshot) , m_includePaths(includePaths) , m_frameworkPaths(frameworkPaths) {} + bool isObjCEnabled() const { return m_isObjCEnabled; } + const CPlusPlus::Snapshot &snapshot() const { getCppSpecifics(); return m_snapshot; } const QStringList &includePaths() const { getCppSpecifics(); return m_includePaths; } const QStringList &frameworkPaths() const { getCppSpecifics(); return m_frameworkPaths; } @@ -208,6 +212,7 @@ private: void getCppSpecifics() const; TextEditor::BaseTextEditor *m_editor; + mutable bool m_isObjCEnabled; mutable bool m_gotCppSpecifics; CppModelManagerInterface::WorkingCopy m_workingCopy; mutable CPlusPlus::Snapshot m_snapshot; diff --git a/src/plugins/cpptools/cppcompletionassistprovider.h b/src/plugins/cpptools/cppcompletionassistprovider.h index de91093e43a..aaf2cdde419 100644 --- a/src/plugins/cpptools/cppcompletionassistprovider.h +++ b/src/plugins/cpptools/cppcompletionassistprovider.h @@ -62,7 +62,8 @@ public: virtual TextEditor::IAssistInterface *createAssistInterface( ProjectExplorer::Project *project, TextEditor::BaseTextEditor *editor, - QTextDocument *document, int position, TextEditor::AssistReason reason) const = 0; + QTextDocument *document, bool isObjCEnabled, int position, + TextEditor::AssistReason reason) const = 0; static int activationSequenceChar(const QChar &ch, const QChar &ch2, const QChar &ch3, unsigned *kind,