forked from qt-creator/qt-creator
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:
committed by
Tim Jenssen
parent
a9012ce747
commit
535cc76cac
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user