don't overwrite reference by Tab if it starts exactly after reference being completed (PY-6095)

This commit is contained in:
Dmitry Jemerov
2013-11-05 19:37:46 +01:00
parent 12249d1abd
commit a61112a8e8
2 changed files with 10 additions and 3 deletions
@@ -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));
}
}
@@ -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(<caret>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<caret>['a']");
myFixture.finishLookup(Lookup.REPLACE_SELECT_CHAR);
myFixture.checkResult("bar = {'a': '1'}\n" +
"print bar<caret>['a']");
}
}