diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 2423f13e90e..826947e6808 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -50,11 +50,16 @@
+
+
+
+
+
@@ -66,8 +71,8 @@
-
+
() {
+ @Override
+ protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context,
+ @NotNull CompletionResultSet result) {
+ if (result.getPrefixMatcher().getPrefix().isEmpty()) {
+ return;
+ }
+
+ final PsiElement position = parameters.getPosition();
+ if (!(position.getContainingFile() instanceof JetFile)) {
+ return;
+ }
+
+// final PsiElement parent = position.getParent();
+// if (parent.getReference() instanceof JetSimpleName)
+
+ return;
+ }
+ });
+ }
+}
diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionContributor.java b/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionContributor.java
new file mode 100644
index 00000000000..9be048cc95a
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionContributor.java
@@ -0,0 +1,75 @@
+package org.jetbrains.jet.plugin.completion;
+
+import com.intellij.codeInsight.completion.*;
+import com.intellij.codeInsight.lookup.LookupElement;
+import com.intellij.patterns.PlatformPatterns;
+import com.intellij.psi.PsiElement;
+import com.intellij.util.Consumer;
+import com.intellij.util.ProcessingContext;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.jet.lang.psi.JetFile;
+
+/**
+ * @author Nikolay Krasko
+ */
+public class JetCompletionContributor extends CompletionContributor {
+ public JetCompletionContributor() {
+ extend(CompletionType.BASIC, PlatformPatterns.psiElement(),
+ new CompletionProvider() {
+ @Override
+ protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context,
+ final @NotNull CompletionResultSet _result) {
+
+ if (_result.getPrefixMatcher().getPrefix().isEmpty()) {
+ return;
+ }
+
+ final PsiElement position = parameters.getPosition();
+ if (!(position.getContainingFile() instanceof JetFile)) {
+ return;
+ }
+
+ CompletionResultSet result = _result.withPrefixMatcher(CompletionUtil.findReferenceOrAlphanumericPrefix(parameters));
+ JavaClassNameCompletionContributor.addAllClasses(parameters, JavaCompletionSorting.addJavaSorting(
+ parameters, result), parameters.getInvocationCount() <= 1, new Consumer() {
+ @Override
+ public void consume(LookupElement element) {
+ _result.addElement(element);
+ }
+ });
+ }
+ });
+ }
+
+// @Override
+// public void beforeCompletion(@NotNull CompletionInitializationContext context) {
+// final PsiFile file = context.getFile();
+//
+// if (file instanceof JetFile) {
+// autoImport(file, context.getStartOffset() - 1, context.getEditor());
+// }
+// }
+//
+// private static void autoImport(final PsiFile file, int offset, final Editor editor) {
+// final CharSequence text = editor.getDocument().getCharsSequence();
+// while (offset > 0 && Character.isJavaIdentifierPart(text.charAt(offset))) offset--;
+// if (offset <= 0) return;
+//
+// while (offset > 0 && Character.isWhitespace(text.charAt(offset))) offset--;
+// if (offset <= 0 || text.charAt(offset) != '.') return;
+//
+// offset--;
+//
+// while (offset > 0 && Character.isWhitespace(text.charAt(offset))) offset--;
+// if (offset <= 0) return;
+//
+// final JetSimpleNameExpression nameExpression =
+// PsiTreeUtil.findElementOfClassAtOffset(file, offset, JetSimpleNameExpression.class, false);
+// if (nameExpression == null) return;
+//
+// final ImportClassFix importClassFix = new ImportClassFix(nameExpression);
+// if (importClassFix.isAvailable(file.getProject(), editor, file)) {
+// new ImportClassFix(nameExpression).invoke(file.getProject(), editor, file);
+// }
+// }
+}