Setup basics for new code completion feature
This commit is contained in:
parent
36403b7eeb
commit
f75848e6ad
@ -0,0 +1,14 @@
|
|||||||
|
package de.marhali.easyi18n.ui.editor;
|
||||||
|
|
||||||
|
import com.intellij.codeInsight.completion.CompletionContributor;
|
||||||
|
import com.intellij.codeInsight.completion.CompletionType;
|
||||||
|
import com.intellij.patterns.*;
|
||||||
|
import com.intellij.psi.PsiLiteralValue;
|
||||||
|
|
||||||
|
public class I18nCompletionContributor extends CompletionContributor {
|
||||||
|
|
||||||
|
public I18nCompletionContributor() {
|
||||||
|
extend(CompletionType.BASIC, PlatformPatterns.psiElement().inside(PsiLiteralValue.class),
|
||||||
|
new I18nCompletionProvider());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package de.marhali.easyi18n.ui.editor;
|
||||||
|
|
||||||
|
import com.intellij.codeInsight.completion.CompletionParameters;
|
||||||
|
import com.intellij.codeInsight.completion.CompletionProvider;
|
||||||
|
import com.intellij.codeInsight.completion.CompletionResultSet;
|
||||||
|
import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||||
|
import com.intellij.ide.DataManager;
|
||||||
|
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||||
|
import com.intellij.openapi.project.Project;
|
||||||
|
import com.intellij.util.ProcessingContext;
|
||||||
|
import de.marhali.easyi18n.model.LocalizedNode;
|
||||||
|
import de.marhali.easyi18n.service.DataStore;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class I18nCompletionProvider extends CompletionProvider<CompletionParameters> {
|
||||||
|
|
||||||
|
Project project;
|
||||||
|
|
||||||
|
public I18nCompletionProvider() {
|
||||||
|
DataManager.getInstance().getDataContextFromFocusAsync().onSuccess(data -> {
|
||||||
|
project = PlatformDataKeys.PROJECT.getData(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context, @NotNull CompletionResultSet result) {
|
||||||
|
String query = result.getPrefixMatcher().getPrefix();
|
||||||
|
|
||||||
|
LocalizedNode node = query.contains(".") ?
|
||||||
|
DataStore.getInstance(project).getTranslations().getNode(query)
|
||||||
|
: DataStore.getInstance(project).getTranslations().getNodes();
|
||||||
|
|
||||||
|
if(node == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(LocalizedNode children : node.getChildren()) {
|
||||||
|
result.addElement(LookupElementBuilder.create(children.getKey()).appendTailText("I18n", true));
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println(result.getPrefixMatcher().getPrefix()); // Debug
|
||||||
|
}
|
||||||
|
}
|
@ -10,5 +10,8 @@
|
|||||||
<extensions defaultExtensionNs="com.intellij">
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
<toolWindow id="Easy I18n" anchor="bottom" factoryClass="de.marhali.easyi18n.TranslatorToolWindowFactory" />
|
<toolWindow id="Easy I18n" anchor="bottom" factoryClass="de.marhali.easyi18n.TranslatorToolWindowFactory" />
|
||||||
<projectService serviceImplementation="de.marhali.easyi18n.service.SettingsService" />
|
<projectService serviceImplementation="de.marhali.easyi18n.service.SettingsService" />
|
||||||
|
|
||||||
|
<completion.contributor language="any"
|
||||||
|
implementationClass="de.marhali.easyi18n.ui.editor.I18nCompletionContributor" />
|
||||||
</extensions>
|
</extensions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
Loading…
x
Reference in New Issue
Block a user