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());
|
||||
|
||||
return clangAssistProposalModel->neededCorrection()
|
||||
== ClangBackEnd::CompletionCorrection::DotToArrowCorrection;
|
||||
== ClangBackEnd::CompletionCorrection::DotToArrowCorrection
|
||||
&& editorWidget->textAt(basePosition() - 1, 1) == ".";
|
||||
}
|
||||
|
||||
void ClangAssistProposal::makeCorrection(TextEditor::TextEditorWidget *editorWidget)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -93,7 +93,7 @@ int IAssistProposal::basePosition() const
|
||||
is displayed.
|
||||
*/
|
||||
|
||||
bool IAssistProposal::isCorrective() const
|
||||
bool IAssistProposal::isCorrective(TextEditorWidget *editorWidget) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user