mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
LSP-276 [lsp] (part of) First ModCompletion draft (very rough one)
GitOrigin-RevId: 1cdce3b0f0a62656a821825cde8c59921b14e3f6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c70fad3998
commit
c48e940089
+9
-2
@@ -10,6 +10,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNullByDefault;
|
||||
|
||||
@@ -49,10 +50,16 @@ public final class LightModCompletionServiceImpl {
|
||||
}
|
||||
List<ModCompletionItemProvider> providers = ModCompletionItemProvider.EP_NAME.allForLanguage(file.getLanguage());
|
||||
String prefix = file.getFileDocument().getText(TextRange.create(startOffset, caretOffset));
|
||||
var matcher = new CamelHumpMatcher(prefix);
|
||||
ModCompletionItemProvider.CompletionContext context = new ModCompletionItemProvider.CompletionContext(
|
||||
file, caretOffset, element, new CamelHumpMatcher(prefix), invocationCount, type);
|
||||
file, caretOffset, element, matcher, invocationCount, type);
|
||||
for (ModCompletionItemProvider provider : providers) {
|
||||
provider.provideItems(context, sink);
|
||||
provider.provideItems(context, item -> {
|
||||
if (matcher.prefixMatches(item.mainLookupString()) ||
|
||||
ContainerUtil.exists(item.additionalLookupStrings(), matcher::prefixMatches)) {
|
||||
sink.accept(item);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user