mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix caret position on varargs parameter completion (IDEA-174984)
This commit is contained in:
+29
@@ -397,6 +397,35 @@ public class CompletionHintsTest extends LightFixtureCompletionTestCase {
|
||||
checkResultWithInlays("class C { int vararg(int... args){ return 0; } void m() { vararg(<hint text=\"args:\"/>1) } }");
|
||||
}
|
||||
|
||||
public void testVarargWithTwoMandatoryArguments() throws Exception {
|
||||
configureJava("class C { int vararg(int a, int b, int... args){ return 0; } void m() { varar<caret> } }");
|
||||
complete();
|
||||
checkResult("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(<caret>, ) } }");
|
||||
checkResultWithInlays("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(<hint text=\"a:\"/>, <hint text=\"b:\"/><hint text=\", args:\"/>) } }");
|
||||
assertCaretAfterInlay();
|
||||
type("1");
|
||||
next();
|
||||
checkResult("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(1, <caret>) } }");
|
||||
checkResultWithInlays("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(<hint text=\"a:\"/>1, <hint text=\"b:\"/><hint text=\", args:\"/>) } }");
|
||||
assertCaretAfterInlay();
|
||||
type("2");
|
||||
next();
|
||||
checkResult("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(1, 2, <caret>) } }");
|
||||
checkResultWithInlays("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(<hint text=\"a:\"/>1, <hint text=\"b:\"/>2, <hint text=\"args:\"/>) } }");
|
||||
assertCaretAfterInlay();
|
||||
next();
|
||||
checkResult("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(1, 2)<caret> } }");
|
||||
checkResultWithInlays("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(<hint text=\"a:\"/>1, <hint text=\"b:\"/>2<hint text=\", args:\"/>) } }");
|
||||
prev();
|
||||
checkResult("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(1, 2, <caret>) } }");
|
||||
checkResultWithInlays("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(<hint text=\"a:\"/>1, <hint text=\"b:\"/>2, <hint text=\"args:\"/>) } }");
|
||||
assertCaretAfterInlay();
|
||||
prev();
|
||||
checkResult("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(1, 2<caret>) } }");
|
||||
checkResultWithInlays("class C { int vararg(int a, int b, int... args){ return 0; } void m() { vararg(<hint text=\"a:\"/>1, <hint text=\"b:\"/>2<hint text=\", args:\"/>) } }");
|
||||
assertCaretBeforeInlay();
|
||||
}
|
||||
|
||||
public void testHintsDontDisappearWhenNavigatingAwayFromUncompletedInvocation() throws Exception {
|
||||
configureJava("class C { void m() { System.setPro<caret> } }");
|
||||
complete("setProperty");
|
||||
|
||||
@@ -374,8 +374,11 @@ public class ParameterInfoController implements Disposable {
|
||||
if (argsList == null && !areParametersHintsEnabledOnCompletion()) return;
|
||||
|
||||
offset = adjustOffsetToInlay(offset);
|
||||
|
||||
myEditor.getCaretModel().moveToLogicalPosition(myEditor.offsetToLogicalPosition(offset).leanForward(true));
|
||||
VisualPosition visualPosition = myEditor.offsetToVisualPosition(offset);
|
||||
if (myEditor.getInlayModel().hasInlineElementAt(visualPosition)) {
|
||||
visualPosition = new VisualPosition(visualPosition.line, visualPosition.column + 1);
|
||||
}
|
||||
myEditor.getCaretModel().moveToVisualPosition(visualPosition);
|
||||
myEditor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE);
|
||||
myEditor.getSelectionModel().removeSelection();
|
||||
if (argsList != null) {
|
||||
|
||||
Reference in New Issue
Block a user