Added class context type for live templates.

This commit is contained in:
Evgeny Gerashchenko
2012-02-02 17:26:18 +04:00
parent 02ae0bf2a8
commit d81492a80f
2 changed files with 28 additions and 1 deletions
+1
View File
@@ -91,6 +91,7 @@
<liveTemplateContext implementation="org.jetbrains.jet.plugin.liveTemplates.JetTemplateContextType$Generic"/>
<liveTemplateContext implementation="org.jetbrains.jet.plugin.liveTemplates.JetTemplateContextType$Namespace"/>
<liveTemplateContext implementation="org.jetbrains.jet.plugin.liveTemplates.JetTemplateContextType$Statement"/>
<liveTemplateContext implementation="org.jetbrains.jet.plugin.liveTemplates.JetTemplateContextType$Class"/>
<defaultLiveTemplatesProvider implementation="org.jetbrains.jet.plugin.liveTemplates.JetLiveTemplatesProvider"/>
<liveTemplateMacro implementation="org.jetbrains.jet.plugin.liveTemplates.macro.JetVariableOfTypeMacro"/>
<liveTemplateMacro implementation="org.jetbrains.jet.plugin.liveTemplates.macro.JetFunctionParametersMacro"/>
@@ -17,7 +17,7 @@ import org.jetbrains.jet.plugin.JetLanguage;
* @since 1/27/12
*/
public abstract class JetTemplateContextType extends TemplateContextType {
protected JetTemplateContextType(@NotNull @NonNls String id, @NotNull String presentableName, @Nullable Class<? extends TemplateContextType> baseContextType) {
protected JetTemplateContextType(@NotNull @NonNls String id, @NotNull String presentableName, @Nullable java.lang.Class<? extends TemplateContextType> baseContextType) {
super(id, presentableName, baseContextType);
}
@@ -74,6 +74,32 @@ public abstract class JetTemplateContextType extends TemplateContextType {
}
}
public static class Class extends JetTemplateContextType {
public Class() {
super("KOTLIN_CLASS", "Class", Generic.class);
}
@Override
protected boolean isInContext(@NotNull PsiElement element) {
PsiElement e = element;
while (e != null && !(e instanceof JetClassOrObject)) {
if (e instanceof JetModifierList) {
// skip property/function/class or object which is owner of modifier list
e = e.getParent();
if (e != null) {
e = e.getParent();
}
continue;
}
if (e instanceof JetProperty || e instanceof JetNamedFunction) {
return false;
}
e = e.getParent();
}
return true;
}
}
public static class Statement extends JetTemplateContextType {
public Statement() {
super("KOTLIN_STATEMENT", "Statement", Generic.class);