mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
java completion: don't delete everything if class name coincides with package (IDEA-180284)
This commit is contained in:
@@ -98,7 +98,7 @@ public class AllClassesGetter {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (toDelete.isValid()) {
|
||||
if (toDelete != null && toDelete.isValid()) {
|
||||
document.deleteString(toDelete.getStartOffset(), toDelete.getEndOffset());
|
||||
context.setTailOffset(toDelete.getStartOffset());
|
||||
}
|
||||
|
||||
+2
-1
@@ -83,7 +83,7 @@ class JavaClassNameInsertHandler implements InsertHandler<JavaPsiClassReferenceE
|
||||
return;
|
||||
}
|
||||
|
||||
OffsetKey refEnd = context.trackOffset(context.getTailOffset(), false);
|
||||
OffsetKey refEnd = context.trackOffset(context.getTailOffset(), true);
|
||||
|
||||
boolean fillTypeArgs = context.getCompletionChar() == '<';
|
||||
if (fillTypeArgs) {
|
||||
@@ -98,6 +98,7 @@ class JavaClassNameInsertHandler implements InsertHandler<JavaPsiClassReferenceE
|
||||
}
|
||||
|
||||
context.setTailOffset(context.getOffset(refEnd));
|
||||
refEnd = context.trackOffset(context.getTailOffset(), false);
|
||||
|
||||
context.commitDocument();
|
||||
if (item.getUserData(JavaChainLookupElement.CHAIN_QUALIFIER) == null &&
|
||||
|
||||
@@ -669,7 +669,7 @@ public class JavaCompletionUtil {
|
||||
}
|
||||
}
|
||||
|
||||
if (toDelete.isValid()) {
|
||||
if (toDelete != null && toDelete.isValid()) {
|
||||
document.deleteString(toDelete.getStartOffset(), toDelete.getEndOffset());
|
||||
}
|
||||
|
||||
@@ -685,22 +685,17 @@ public class JavaCompletionUtil {
|
||||
return psiReference.resolve();
|
||||
}
|
||||
|
||||
public static RangeMarker insertTemporary(final int endOffset, final Document document, final String temporary) {
|
||||
@Nullable
|
||||
public static RangeMarker insertTemporary(int endOffset, Document document, String temporary) {
|
||||
final CharSequence chars = document.getCharsSequence();
|
||||
final int length = chars.length();
|
||||
final RangeMarker toDelete;
|
||||
if (endOffset < length && Character.isJavaIdentifierPart(chars.charAt(endOffset))){
|
||||
if (endOffset < chars.length() && Character.isJavaIdentifierPart(chars.charAt(endOffset))){
|
||||
document.insertString(endOffset, temporary);
|
||||
toDelete = document.createRangeMarker(endOffset, endOffset + 1);
|
||||
} else if (endOffset >= length) {
|
||||
toDelete = document.createRangeMarker(length, length);
|
||||
RangeMarker toDelete = document.createRangeMarker(endOffset, endOffset + 1);
|
||||
toDelete.setGreedyToLeft(true);
|
||||
toDelete.setGreedyToRight(true);
|
||||
return toDelete;
|
||||
}
|
||||
else {
|
||||
toDelete = document.createRangeMarker(endOffset, endOffset);
|
||||
}
|
||||
toDelete.setGreedyToLeft(true);
|
||||
toDelete.setGreedyToRight(true);
|
||||
return toDelete;
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void insertParentheses(final InsertionContext context,
|
||||
|
||||
@@ -189,7 +189,7 @@ public class VariableLookupItem extends LookupItem<PsiVariable> implements Typed
|
||||
ref.bindToElementViaStaticImport(((PsiField)variable).getContainingClass());
|
||||
PostprocessReformattingAspect.getInstance(ref.getProject()).doPostponedFormatting();
|
||||
}
|
||||
if (toDelete.isValid()) {
|
||||
if (toDelete != null && toDelete.isValid()) {
|
||||
document.deleteString(toDelete.getStartOffset(), toDelete.getEndOffset());
|
||||
}
|
||||
context.commitDocument();
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
public class Util {
|
||||
int goo() {
|
||||
new Apple<caret>
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import Apple.Apple;
|
||||
|
||||
public class Util {
|
||||
int goo() {
|
||||
new Apple()<caret>
|
||||
}
|
||||
}
|
||||
+5
@@ -1845,4 +1845,9 @@ class Bar {{
|
||||
checkResultByFile(getTestName(false) + "_after.java")
|
||||
}
|
||||
|
||||
void testCompletingClassWithSameNameAsPackage() {
|
||||
myFixture.addClass("package Apple; public class Apple {}")
|
||||
doTest('\n')
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -481,7 +481,7 @@ public class GroovyCompletionUtil {
|
||||
newStartOffset = marker.getStartOffset();
|
||||
}
|
||||
|
||||
if (toDelete.isValid()) {
|
||||
if (toDelete != null && toDelete.isValid()) {
|
||||
document.deleteString(toDelete.getStartOffset(), toDelete.getEndOffset());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user