parent
bf1338ffa0
commit
e0c68bd63f
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
### Added
|
### Added
|
||||||
|
- Partial support for translation key folding against actual translation
|
||||||
- Support for json based arb files (flutter)
|
- Support for json based arb files (flutter)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
@ -12,12 +12,12 @@ pluginSinceBuild = 203
|
|||||||
pluginUntilBuild = 213.*
|
pluginUntilBuild = 213.*
|
||||||
|
|
||||||
# IntelliJ Platform Properties -> https://github.com/JetBrains/gradle-intellij-plugin#intellij-platform-properties
|
# IntelliJ Platform Properties -> https://github.com/JetBrains/gradle-intellij-plugin#intellij-platform-properties
|
||||||
platformType = IC
|
platformType = IU
|
||||||
platformVersion = 2021.3
|
platformVersion = 2021.3
|
||||||
|
|
||||||
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
|
# Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html
|
||||||
# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22
|
# Example: platformPlugins = com.intellij.java, com.jetbrains.php:203.4449.22
|
||||||
platformPlugins = org.jetbrains.kotlin
|
platformPlugins = org.jetbrains.kotlin, JavaScriptLanguage
|
||||||
|
|
||||||
# Java language level used to compile sources and to generate the files for - Java 11 is required since 2020.3
|
# Java language level used to compile sources and to generate the files for - Java 11 is required since 2020.3
|
||||||
javaVersion = 11
|
javaVersion = 11
|
||||||
|
@ -0,0 +1,83 @@
|
|||||||
|
package de.marhali.easyi18n.editor.generic;
|
||||||
|
|
||||||
|
import com.intellij.lang.ASTNode;
|
||||||
|
import com.intellij.lang.folding.FoldingBuilderEx;
|
||||||
|
import com.intellij.lang.folding.FoldingDescriptor;
|
||||||
|
import com.intellij.openapi.editor.Document;
|
||||||
|
import com.intellij.openapi.util.TextRange;
|
||||||
|
import com.intellij.psi.PsiElement;
|
||||||
|
import com.intellij.psi.PsiLiteralValue;
|
||||||
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
|
|
||||||
|
import de.marhali.easyi18n.DataStore;
|
||||||
|
import de.marhali.easyi18n.InstanceManager;
|
||||||
|
import de.marhali.easyi18n.model.Translation;
|
||||||
|
import de.marhali.easyi18n.service.SettingsService;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translation key folding with actual value based on i18n instance.
|
||||||
|
* @author marhali
|
||||||
|
*/
|
||||||
|
public class GenericFoldingBuilder extends FoldingBuilderEx {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FoldingDescriptor @NotNull [] buildFoldRegions(@NotNull PsiElement root, @NotNull Document document, boolean quick) {
|
||||||
|
Collection<PsiLiteralValue> literalValues = PsiTreeUtil.findChildrenOfType(root, PsiLiteralValue.class);
|
||||||
|
List<FoldingDescriptor> descriptors = new ArrayList<>();
|
||||||
|
|
||||||
|
if(!SettingsService.getInstance(root.getProject()).getState().isCodeAssistance()) {
|
||||||
|
return FoldingDescriptor.EMPTY;
|
||||||
|
}
|
||||||
|
|
||||||
|
DataStore store = InstanceManager.get(root.getProject()).store();
|
||||||
|
|
||||||
|
for(final PsiLiteralValue literalValue : literalValues) {
|
||||||
|
String value = literalValue.getValue() instanceof String ? (String) literalValue.getValue() : null;
|
||||||
|
|
||||||
|
// Undefined string literal or not a translation
|
||||||
|
if(value == null || store.getData().getTranslation(value) == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
descriptors.add(new FoldingDescriptor(literalValue.getNode(),
|
||||||
|
new TextRange(literalValue.getTextRange().getStartOffset() + 1,
|
||||||
|
literalValue.getTextRange().getEndOffset() - 1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return descriptors.toArray(new FoldingDescriptor[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public String getPlaceholderText(@NotNull ASTNode node) {
|
||||||
|
PsiLiteralValue literalValue = node.getPsi(PsiLiteralValue.class);
|
||||||
|
String value = literalValue.getValue() instanceof String ? (String) literalValue.getValue() : null;
|
||||||
|
|
||||||
|
if(value == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
DataStore store = InstanceManager.get(literalValue.getProject()).store();
|
||||||
|
Translation translation = store.getData().getTranslation(value);
|
||||||
|
|
||||||
|
if(translation == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
String previewLocale = SettingsService.getInstance(literalValue.getProject()).getState().getPreviewLocale();
|
||||||
|
|
||||||
|
return translation.get(previewLocale);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCollapsedByDefault(@NotNull ASTNode node) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
5
src/main/resources/META-INF/de.marhali.easyi18n-java.xml
Normal file
5
src/main/resources/META-INF/de.marhali.easyi18n-java.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<idea-plugin>
|
||||||
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
|
<lang.foldingBuilder language="JAVA" implementationClass="de.marhali.easyi18n.editor.generic.GenericFoldingBuilder" />
|
||||||
|
</extensions>
|
||||||
|
</idea-plugin>
|
@ -0,0 +1,6 @@
|
|||||||
|
<idea-plugin>
|
||||||
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
|
<lang.foldingBuilder language="JavaScript" implementationClass="de.marhali.easyi18n.editor.generic.GenericFoldingBuilder" />
|
||||||
|
<lang.foldingBuilder language="TypeScript" implementationClass="de.marhali.easyi18n.editor.generic.GenericFoldingBuilder" />
|
||||||
|
</extensions>
|
||||||
|
</idea-plugin>
|
@ -8,17 +8,26 @@
|
|||||||
<!-- https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
|
<!-- https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
|
||||||
<depends>com.intellij.modules.platform</depends>
|
<depends>com.intellij.modules.platform</depends>
|
||||||
<depends>com.intellij.modules.lang</depends>
|
<depends>com.intellij.modules.lang</depends>
|
||||||
|
|
||||||
<depends optional="true" config-file="de.marhali.easyi18n-kotlin.xml">org.jetbrains.kotlin</depends>
|
<depends optional="true" config-file="de.marhali.easyi18n-kotlin.xml">org.jetbrains.kotlin</depends>
|
||||||
|
<depends optional="true" config-file="de.marhali.easyi18n-javascript.xml">JavaScript</depends>
|
||||||
|
<depends optional="true" config-file="de.marhali.easyi18n-java.xml">com.intellij.java</depends>
|
||||||
|
|
||||||
<extensions defaultExtensionNs="com.intellij">
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
<toolWindow id="Easy I18n" anchor="bottom" factoryClass="de.marhali.easyi18n.service.TranslatorToolWindowFactory" />
|
<toolWindow id="Easy I18n" anchor="bottom" factoryClass="de.marhali.easyi18n.service.TranslatorToolWindowFactory" />
|
||||||
|
|
||||||
<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.generic.GenericKeyCompletionContributor" />
|
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" />
|
||||||
|
|
||||||
<psi.referenceContributor implementation="de.marhali.easyi18n.editor.generic.GenericKeyReferenceContributor" />
|
<psi.referenceContributor
|
||||||
|
implementation="de.marhali.easyi18n.editor.generic.GenericKeyReferenceContributor" />
|
||||||
|
|
||||||
|
<lang.foldingBuilder language="HtmlCompatible"
|
||||||
|
implementationClass="de.marhali.easyi18n.editor.generic.GenericFoldingBuilder" />
|
||||||
</extensions>
|
</extensions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
Loading…
x
Reference in New Issue
Block a user