Made fm live template available only on top level.
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
<template resource-bundle="org.jetbrains.jet.plugin.JetBundle" key="livetemplate.description.fm"
|
||||
name="fm" toReformat="true" toShortenFQNames="true" value="fun main(args : Array<String>) { $END$ }">
|
||||
<context>
|
||||
<option name="KOTLIN" value="true" />
|
||||
<option name="KOTLIN_NAMESPACE" value="true" />
|
||||
</context>
|
||||
</template>
|
||||
<template resource-bundle="org.jetbrains.jet.plugin.JetBundle" key="livetemplate.description.sout"
|
||||
|
||||
@@ -65,7 +65,8 @@
|
||||
<completion.contributor language="jet" implementationClass="org.jetbrains.jet.plugin.completion.JetKeywordCompletionContributor"/>
|
||||
<completion.contributor language="jet" implementationClass="org.jetbrains.jet.plugin.completion.JetCompletionContributor"/>
|
||||
|
||||
<liveTemplateContext implementation="org.jetbrains.jet.plugin.liveTemplates.JetTemplateContextType"/>
|
||||
<liveTemplateContext implementation="org.jetbrains.jet.plugin.liveTemplates.JetTemplateContextType$Generic"/>
|
||||
<liveTemplateContext implementation="org.jetbrains.jet.plugin.liveTemplates.JetTemplateContextType$Namespace"/>
|
||||
<defaultLiveTemplatesProvider implementation="org.jetbrains.jet.plugin.liveTemplates.JetLiveTemplatesProvider"/>
|
||||
|
||||
<annotator language="jet" implementationClass="org.jetbrains.jet.plugin.annotations.SoftKeywordsAnnotator"/>
|
||||
|
||||
@@ -2,22 +2,70 @@ package org.jetbrains.jet.plugin.liveTemplates;
|
||||
|
||||
import com.intellij.codeInsight.template.EverywhereContextType;
|
||||
import com.intellij.codeInsight.template.TemplateContextType;
|
||||
import com.intellij.patterns.PlatformPatterns;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
||||
import org.jetbrains.jet.lang.psi.JetNamedFunction;
|
||||
import org.jetbrains.jet.lang.psi.JetProperty;
|
||||
import org.jetbrains.jet.plugin.JetLanguage;
|
||||
|
||||
/**
|
||||
* @author Evgeny Gerashchenko
|
||||
* @since 1/27/12
|
||||
*/
|
||||
public class JetTemplateContextType extends TemplateContextType {
|
||||
public JetTemplateContextType() {
|
||||
super("KOTLIN", "Kotlin", EverywhereContextType.class);
|
||||
public abstract class JetTemplateContextType extends TemplateContextType {
|
||||
protected JetTemplateContextType(@NotNull @NonNls String id, @NotNull String presentableName, @Nullable Class<? extends TemplateContextType> baseContextType) {
|
||||
super(id, presentableName, baseContextType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInContext(@NotNull PsiFile file, int offset) {
|
||||
return PsiUtilBase.getLanguageAtOffset(file, offset).isKindOf(JetLanguage.INSTANCE);
|
||||
if (PsiUtilBase.getLanguageAtOffset(file, offset).isKindOf(JetLanguage.INSTANCE)) {
|
||||
PsiElement element = file.findElementAt(offset);
|
||||
if (element instanceof PsiWhiteSpace) {
|
||||
|
||||
}
|
||||
return element != null && isInContext(element);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected abstract boolean isInContext(@NotNull PsiElement element);
|
||||
|
||||
public static class Generic extends JetTemplateContextType {
|
||||
public Generic() {
|
||||
super("KOTLIN", "Kotlin", EverywhereContextType.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isInContext(@NotNull PsiElement element) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Namespace extends JetTemplateContextType {
|
||||
public Namespace() {
|
||||
super("KOTLIN_NAMESPACE", "Namespace", Generic.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isInContext(@NotNull PsiElement element) {
|
||||
PsiElement e = element;
|
||||
while (e != null) {
|
||||
if (e instanceof JetProperty || e instanceof JetNamedFunction
|
||||
|| e instanceof JetClassOrObject) {
|
||||
return false;
|
||||
}
|
||||
e = e.getParent();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user