diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 2c078548bed..e2992bda0ae 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -305,6 +305,7 @@ + diff --git a/idea/src/org/jetbrains/kotlin/idea/liveTemplates/JetTemplateContextType.java b/idea/src/org/jetbrains/kotlin/idea/liveTemplates/JetTemplateContextType.java index 30dbfea44a1..9a274b3fb1d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/liveTemplates/JetTemplateContextType.java +++ b/idea/src/org/jetbrains/kotlin/idea/liveTemplates/JetTemplateContextType.java @@ -43,9 +43,12 @@ public abstract class JetTemplateContextType extends TemplateContextType { public boolean isInContext(@NotNull PsiFile file, int offset) { if (PsiUtilBase.getLanguageAtOffset(file, offset).isKindOf(JetLanguage.INSTANCE)) { PsiElement element = file.findElementAt(offset); - if (element instanceof PsiWhiteSpace || element instanceof PsiComment) { + if (element instanceof PsiWhiteSpace) { return false; } + else if (PsiTreeUtil.getParentOfType(element, PsiComment.class, false) != null) { + return isCommentInContext(); + } else if (PsiTreeUtil.getParentOfType(element, JetPackageDirective.class) != null || PsiTreeUtil.getParentOfType(element, JetImportDirective.class) != null) { return false; @@ -71,6 +74,10 @@ public abstract class JetTemplateContextType extends TemplateContextType { return false; } + protected boolean isCommentInContext() { + return false; + } + protected abstract boolean isInContext(@NotNull PsiElement element); public static class Generic extends JetTemplateContextType { @@ -82,6 +89,11 @@ public abstract class JetTemplateContextType extends TemplateContextType { protected boolean isInContext(@NotNull PsiElement element) { return true; } + + @Override + protected boolean isCommentInContext() { + return true; + } } public static class TopLevel extends JetTemplateContextType { @@ -170,4 +182,20 @@ public abstract class JetTemplateContextType extends TemplateContextType { && !(element.getParent() instanceof JetParameter); } } + + public static class Comment extends JetTemplateContextType { + public Comment() { + super("KOTLIN_COMMENT", "Comment", Generic.class); + } + + @Override + protected boolean isInContext(@NotNull PsiElement element) { + return false; + } + + @Override + protected boolean isCommentInContext() { + return true; + } + } }