diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 1c2b9b48355..1bf7a41f0a9 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -91,6 +91,7 @@
+
diff --git a/idea/src/org/jetbrains/jet/plugin/liveTemplates/JetTemplateContextType.java b/idea/src/org/jetbrains/jet/plugin/liveTemplates/JetTemplateContextType.java
index 924f3158bf7..817dda34f65 100644
--- a/idea/src/org/jetbrains/jet/plugin/liveTemplates/JetTemplateContextType.java
+++ b/idea/src/org/jetbrains/jet/plugin/liveTemplates/JetTemplateContextType.java
@@ -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);