diff --git a/idea/resources/liveTemplates/Kotlin.xml b/idea/resources/liveTemplates/Kotlin.xml
new file mode 100644
index 00000000000..5c4a7de2eae
--- /dev/null
+++ b/idea/resources/liveTemplates/Kotlin.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index fafa00cc6b7..182d7452bf7 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -65,6 +65,9 @@
+
+
+
diff --git a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties
index e539390534e..57624468c26 100644
--- a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties
+++ b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties
@@ -25,4 +25,8 @@ replace.cast.with.static.assert=Replace a cast with a static assert
replace.with.dot.call=Replace with dot call
replace.with.safe.call=Replace with safe call
change.to.backing.field=Change reference to backing field
-implement.members=Implement members
\ No newline at end of file
+implement.members=Implement members
+
+livetemplate.description.fm=main() function
+livetemplate.description.sout=Prints a string to System.out
+livetemplate.description.serr=Prints a string to System.err
\ No newline at end of file
diff --git a/idea/src/org/jetbrains/jet/plugin/liveTemplates/JetLiveTemplatesProvider.java b/idea/src/org/jetbrains/jet/plugin/liveTemplates/JetLiveTemplatesProvider.java
new file mode 100644
index 00000000000..820e2871e7c
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/liveTemplates/JetLiveTemplatesProvider.java
@@ -0,0 +1,19 @@
+package org.jetbrains.jet.plugin.liveTemplates;
+
+import com.intellij.codeInsight.template.impl.DefaultLiveTemplatesProvider;
+
+/**
+ * @author Evgeny Gerashchenko
+ * @since 1/27/12
+ */
+public class JetLiveTemplatesProvider implements DefaultLiveTemplatesProvider {
+ @Override
+ public String[] getDefaultLiveTemplateFiles() {
+ return new String[]{"liveTemplates/Kotlin"};
+ }
+
+ @Override
+ public String[] getHiddenLiveTemplateFiles() {
+ return new String[0];
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/liveTemplates/JetTemplateContextType.java b/idea/src/org/jetbrains/jet/plugin/liveTemplates/JetTemplateContextType.java
new file mode 100644
index 00000000000..c77621d55c9
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/liveTemplates/JetTemplateContextType.java
@@ -0,0 +1,23 @@
+package org.jetbrains.jet.plugin.liveTemplates;
+
+import com.intellij.codeInsight.template.EverywhereContextType;
+import com.intellij.codeInsight.template.TemplateContextType;
+import com.intellij.psi.PsiFile;
+import com.intellij.psi.util.PsiUtilBase;
+import org.jetbrains.annotations.NotNull;
+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);
+ }
+
+ @Override
+ public boolean isInContext(@NotNull PsiFile file, int offset) {
+ return PsiUtilBase.getLanguageAtOffset(file, offset).isKindOf(JetLanguage.INSTANCE);
+ }
+}