From a61112a8e84f866199916a5d0fc3473c296fd4f2 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 5 Nov 2013 18:06:40 +0100 Subject: [PATCH] don't overwrite reference by Tab if it starts exactly after reference being completed (PY-6095) --- .../completion/CompletionProgressIndicator.java | 3 ++- .../com/jetbrains/python/PythonCompletionTest.java | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java index 899a6017f6c7..f71a1ddd8359 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java @@ -208,7 +208,8 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement try { final int selectionEndOffset = initContext.getSelectionEndOffset(); final PsiReference reference = initContext.getFile().findReferenceAt(selectionEndOffset); - if (reference != null) { + if (reference != null && + reference.getElement().getTextRange().getStartOffset() + reference.getRangeInElement().getStartOffset() != selectionEndOffset) { initContext.setReplacementOffset(findReplacementOffset(selectionEndOffset, reference)); } } diff --git a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java index ccc3623adb6a..4f93ccad148c 100644 --- a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java +++ b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java @@ -587,12 +587,18 @@ public class PythonCompletionTest extends PyTestCase { public void testOverwriteEqualsSign() { // PY-1337 doTestByText("def foo(school=None, kiga=None): pass\n" + - "\n" + "foo(school=None)"); myFixture.type("sch"); myFixture.finishLookup(Lookup.REPLACE_SELECT_CHAR); myFixture.checkResult("def foo(school=None, kiga=None): pass\n" + - "\n" + "foo(school=None)"); } + + public void testOverwriteBracket() { // PY-6095 + doTestByText("bar = {'a': '1'}\n" + + "print ba['a']"); + myFixture.finishLookup(Lookup.REPLACE_SELECT_CHAR); + myFixture.checkResult("bar = {'a': '1'}\n" + + "print bar['a']"); + } }