Clang: Avoid dot-arrow-correction if dot is gone

Change-Id: Iba23a17ba9345ed4f08e16faad02054903c04afc
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Nikolai Kosjar
2017-03-23 14:00:09 +01:00
committed by Tim Jenssen
parent a9012ce747
commit 535cc76cac
6 changed files with 9 additions and 8 deletions

View File

@@ -35,12 +35,13 @@ ClangAssistProposal::ClangAssistProposal(int cursorPos, TextEditor::GenericPropo
{ {
} }
bool ClangAssistProposal::isCorrective() const bool ClangAssistProposal::isCorrective(TextEditor::TextEditorWidget *editorWidget) const
{ {
auto clangAssistProposalModel = static_cast<ClangAssistProposalModel*>(model()); auto clangAssistProposalModel = static_cast<ClangAssistProposalModel*>(model());
return clangAssistProposalModel->neededCorrection() return clangAssistProposalModel->neededCorrection()
== ClangBackEnd::CompletionCorrection::DotToArrowCorrection; == ClangBackEnd::CompletionCorrection::DotToArrowCorrection
&& editorWidget->textAt(basePosition() - 1, 1) == ".";
} }
void ClangAssistProposal::makeCorrection(TextEditor::TextEditorWidget *editorWidget) void ClangAssistProposal::makeCorrection(TextEditor::TextEditorWidget *editorWidget)

View File

@@ -37,8 +37,8 @@ class ClangAssistProposal : public TextEditor::GenericProposal
public: public:
ClangAssistProposal(int cursorPos, TextEditor::GenericProposalModel *model); ClangAssistProposal(int cursorPos, TextEditor::GenericProposalModel *model);
virtual bool isCorrective() const; bool isCorrective(TextEditor::TextEditorWidget *editorWidget) const override;
virtual void makeCorrection(TextEditor::TextEditorWidget *editorWidget); void makeCorrection(TextEditor::TextEditorWidget *editorWidget) override;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -458,7 +458,7 @@ public:
, m_replaceDotForArrow(static_cast<CppAssistProposalModel *>(model)->m_replaceDotForArrow) , m_replaceDotForArrow(static_cast<CppAssistProposalModel *>(model)->m_replaceDotForArrow)
{} {}
bool isCorrective() const override { return m_replaceDotForArrow; } bool isCorrective(TextEditorWidget *) const override { return m_replaceDotForArrow; }
void makeCorrection(TextEditorWidget *editorWidget) override; void makeCorrection(TextEditorWidget *editorWidget) override;
private: private:

View File

@@ -304,7 +304,7 @@ void CodeAssistantPrivate::displayProposal(IAssistProposal *newProposal, AssistR
clearAbortedPosition(); clearAbortedPosition();
m_proposal.reset(proposalCandidate.take()); m_proposal.reset(proposalCandidate.take());
if (m_proposal->isCorrective()) if (m_proposal->isCorrective(m_editorWidget))
m_proposal->makeCorrection(m_editorWidget); m_proposal->makeCorrection(m_editorWidget);
m_editorWidget->keepAutoCompletionHighlight(true); m_editorWidget->keepAutoCompletionHighlight(true);

View File

@@ -93,7 +93,7 @@ int IAssistProposal::basePosition() const
is displayed. is displayed.
*/ */
bool IAssistProposal::isCorrective() const bool IAssistProposal::isCorrective(TextEditorWidget *editorWidget) const
{ {
return false; return false;
} }

View File

@@ -41,7 +41,7 @@ public:
int basePosition() const; int basePosition() const;
virtual bool isFragile() const = 0; virtual bool isFragile() const = 0;
virtual bool isCorrective() const; virtual bool isCorrective(TextEditorWidget *editorWidget) const;
virtual void makeCorrection(TextEditorWidget *editorWidget); virtual void makeCorrection(TextEditorWidget *editorWidget);
virtual IAssistProposalModel *model() const = 0; virtual IAssistProposalModel *model() const = 0;
virtual IAssistProposalWidget *createWidget() const = 0; virtual IAssistProposalWidget *createWidget() const = 0;