add kotlin support for key completion and modularize completion providers

This commit is contained in:
Marcel Haßlinger 2021-07-19 15:59:45 +02:00
parent 6c0a0c21ce
commit 6f4f6aa92a
7 changed files with 48 additions and 22 deletions

View File

@ -1,18 +0,0 @@
package de.marhali.easyi18n.editor;
import com.intellij.codeInsight.completion.CompletionContributor;
import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.patterns.*;
import com.intellij.psi.PsiLiteralValue;
/**
* Show i18n key completion for literal values.
* @author marhali
*/
public class I18nCompletionContributor extends CompletionContributor {
public I18nCompletionContributor() {
extend(CompletionType.BASIC, PlatformPatterns.psiElement().inside(PsiLiteralValue.class),
new I18nCompletionProvider());
}
}

View File

@ -20,10 +20,12 @@ import java.util.List;
* I18n translation key completion provider. * I18n translation key completion provider.
* @author marhali * @author marhali
*/ */
public class I18nCompletionProvider extends CompletionProvider<CompletionParameters> { public class KeyCompletionProvider extends CompletionProvider<CompletionParameters> {
@Override @Override
protected void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context, @NotNull CompletionResultSet result) { protected void addCompletions(@NotNull CompletionParameters parameters,
@NotNull ProcessingContext context, @NotNull CompletionResultSet result) {
Project project = parameters.getOriginalFile().getProject(); Project project = parameters.getOriginalFile().getProject();
String previewLocale = SettingsService.getInstance(project).getState().getPreviewLocale(); String previewLocale = SettingsService.getInstance(project).getState().getPreviewLocale();

View File

@ -10,7 +10,7 @@ import de.marhali.easyi18n.editor.KeyAnnotator;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
/** /**
* Translation key annotator. * Translation key annotator for generic languages which support {@link PsiLiteralValue}.
* @author marhali * @author marhali
*/ */
public class GenericKeyAnnotator extends KeyAnnotator implements Annotator { public class GenericKeyAnnotator extends KeyAnnotator implements Annotator {

View File

@ -0,0 +1,19 @@
package de.marhali.easyi18n.editor.generic;
import com.intellij.codeInsight.completion.CompletionContributor;
import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.patterns.*;
import com.intellij.psi.PsiLiteralValue;
import de.marhali.easyi18n.editor.KeyCompletionProvider;
/**
* Translation key completion for generic languages which support {@link PsiLiteralValue}.
* @author marhali
*/
public class GenericKeyCompletionContributor extends CompletionContributor {
public GenericKeyCompletionContributor() {
extend(CompletionType.BASIC, PlatformPatterns.psiElement().inside(PsiLiteralValue.class),
new KeyCompletionProvider());
}
}

View File

@ -0,0 +1,20 @@
package de.marhali.easyi18n.editor.kotlin;
import com.intellij.codeInsight.completion.CompletionContributor;
import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.patterns.PlatformPatterns;
import de.marhali.easyi18n.editor.KeyCompletionProvider;
import org.jetbrains.kotlin.psi.KtLiteralStringTemplateEntry;
/**
* Kotlin specific translation key completion contributor.
* @author marhali
*/
public class KotlinKeyCompletionContributor extends CompletionContributor {
public KotlinKeyCompletionContributor() {
extend(CompletionType.BASIC, PlatformPatterns.psiElement().inside(KtLiteralStringTemplateEntry.class),
new KeyCompletionProvider());
}
}

View File

@ -1,5 +1,8 @@
<idea-plugin> <idea-plugin>
<extensions defaultExtensionNs="com.intellij"> <extensions defaultExtensionNs="com.intellij">
<annotator language="kotlin" implementationClass="de.marhali.easyi18n.editor.kotlin.KotlinKeyAnnotator" /> <annotator language="kotlin" implementationClass="de.marhali.easyi18n.editor.kotlin.KotlinKeyAnnotator" />
<completion.contributor language="kotlin"
implementationClass="de.marhali.easyi18n.editor.kotlin.KotlinKeyCompletionContributor" />
</extensions> </extensions>
</idea-plugin> </idea-plugin>

View File

@ -14,7 +14,7 @@
<projectService serviceImplementation="de.marhali.easyi18n.service.SettingsService" /> <projectService serviceImplementation="de.marhali.easyi18n.service.SettingsService" />
<completion.contributor language="any" <completion.contributor language="any"
implementationClass="de.marhali.easyi18n.editor.I18nCompletionContributor" /> implementationClass="de.marhali.easyi18n.editor.generic.GenericKeyCompletionContributor" />
<annotator language="" implementationClass="de.marhali.easyi18n.editor.generic.GenericKeyAnnotator" /> <annotator language="" implementationClass="de.marhali.easyi18n.editor.generic.GenericKeyAnnotator" />
</extensions> </extensions>