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());
return clangAssistProposalModel->neededCorrection()
== ClangBackEnd::CompletionCorrection::DotToArrowCorrection;
== ClangBackEnd::CompletionCorrection::DotToArrowCorrection
&& editorWidget->textAt(basePosition() - 1, 1) == ".";
}
void ClangAssistProposal::makeCorrection(TextEditor::TextEditorWidget *editorWidget)

View File

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

View File

@@ -458,7 +458,7 @@ public:
, 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;
private:

View File

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

View File

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

View File

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