mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Allow passing additional prefix to CompletionServiceImpl.handleCompletionItemSelected()
This commit is contained in:
+20
@@ -0,0 +1,20 @@
|
||||
class A extends Base{
|
||||
int _field;
|
||||
void _method(){}
|
||||
|
||||
void foo(){
|
||||
int _local1;
|
||||
int _local2;
|
||||
_local1
|
||||
int _local3;
|
||||
}
|
||||
}
|
||||
|
||||
class Base{
|
||||
void _baseMethod(){}
|
||||
int _baseField;
|
||||
|
||||
private void privateMethod(){}
|
||||
private int privateField;
|
||||
}
|
||||
|
||||
+15
-3
@@ -28,6 +28,17 @@ public class CompletionServiceTest extends LightCodeInsightFixtureTestCase {
|
||||
|
||||
public void testCompletionServiceSimple() {
|
||||
myFixture.configureByFile("Simple.java");
|
||||
doCompletionServiceTest("_field", "");
|
||||
myFixture.checkResultByFile("Simple_afterCompletionService.java");
|
||||
}
|
||||
|
||||
public void testCompletionServiceWithPrefix() {
|
||||
myFixture.configureByFile("Simple.java");
|
||||
doCompletionServiceTest("_local1", "loc");
|
||||
myFixture.checkResultByFile("Simple_afterCompletionServiceWithAdditionalPrefix.java");
|
||||
}
|
||||
|
||||
public void doCompletionServiceTest(String lookupItemText, String additionalPrefix) {
|
||||
CompletionServiceImpl service = (CompletionServiceImpl)CompletionService.getCompletionService();
|
||||
Disposable completionDisposable = Disposer.newDisposable();
|
||||
try {
|
||||
@@ -41,9 +52,10 @@ public class CompletionServiceTest extends LightCodeInsightFixtureTestCase {
|
||||
CompletionLookupArranger arranger = service.createLookupArranger(parameters);
|
||||
service.performCompletion(parameters, result -> arranger.addElement(result));
|
||||
Pair<List<LookupElement>, Integer> items = arranger.arrangeItems();
|
||||
LookupElement element = ContainerUtil.find(items.first, item -> item.getLookupString().equals("_field"));
|
||||
WriteCommandAction.runWriteCommandAction(getProject(), () -> service.handleCompletionItemSelected(parameters, element, arranger.itemMatcher(element), '\n'));
|
||||
myFixture.checkResultByFile("Simple_afterCompletionService.java");
|
||||
LookupElement element = ContainerUtil.find(items.first, item -> item.getLookupString().equals(lookupItemText));
|
||||
myFixture.type(additionalPrefix);
|
||||
WriteCommandAction.runWriteCommandAction(getProject(), () -> service.handleCompletionItemSelected(parameters, element, arranger.itemMatcher(element),
|
||||
additionalPrefix, '\n'));
|
||||
}
|
||||
finally {
|
||||
Disposer.dispose(completionDisposable);
|
||||
|
||||
+3
-1
@@ -292,12 +292,14 @@ public final class CompletionServiceImpl extends CompletionService {
|
||||
public void handleCompletionItemSelected(CompletionParameters parameters,
|
||||
LookupElement lookupElement,
|
||||
PrefixMatcher prefixMatcher,
|
||||
String additionalPrefix,
|
||||
char completionChar) {
|
||||
|
||||
String itemPattern = prefixMatcher.getPrefix() + additionalPrefix;
|
||||
LookupImpl.insertLookupString(parameters.getPosition().getProject(),
|
||||
parameters.getEditor(),
|
||||
lookupElement,
|
||||
prefixMatcher, prefixMatcher.getPrefix(), prefixMatcher.getPrefix().length());
|
||||
prefixMatcher, itemPattern, itemPattern.length());
|
||||
CodeCompletionHandlerBase handler =
|
||||
CodeCompletionHandlerBase.createHandler(parameters.getCompletionType(), true, parameters.isAutoPopup(), true);
|
||||
handler.handleCompletionElementSelected(parameters, lookupElement, completionChar);
|
||||
|
||||
Reference in New Issue
Block a user