diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionContributor.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionContributor.kt index 8361e34e38e..268fd3d21ef 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionContributor.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/KotlinCompletionContributor.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.completion import com.intellij.codeInsight.completion.* import com.intellij.openapi.editor.Document import com.intellij.openapi.progress.ProcessCanceledException +import com.intellij.openapi.util.Key import com.intellij.patterns.PlatformPatterns import com.intellij.patterns.PsiJavaPatterns.elementType import com.intellij.patterns.PsiJavaPatterns.psiElement @@ -42,6 +43,8 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.utils.addToStdlib.check import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull +public var JetFile.doNotComplete: Boolean? by UserDataProperty(Key.create("DO_NOT_COMPLETE")) + public class KotlinCompletionContributor : CompletionContributor() { private val AFTER_NUMBER_LITERAL = psiElement().afterLeafSkipping(psiElement().withText(""), psiElement().withElementType(elementType().oneOf(JetTokens.FLOAT_LITERAL, JetTokens.INTEGER_LITERAL))) private val AFTER_INTEGER_LITERAL_AND_DOT = psiElement().afterLeafSkipping(psiElement().withText("."), psiElement().withElementType(elementType().oneOf(JetTokens.INTEGER_LITERAL))) @@ -214,7 +217,9 @@ public class KotlinCompletionContributor : CompletionContributor() { private fun performCompletion(parameters: CompletionParameters, result: CompletionResultSet) { val position = parameters.getPosition() - if (position.getContainingFile() !is JetFile) return + val positionFile = position.containingFile + if (positionFile !is JetFile) return + if ((positionFile.originalFile as JetFile).doNotComplete ?: false) return performCompletionWithOutOfBlockTracking(position) { doComplete(parameters, position, result) diff --git a/idea/idea-repl/idea-repl.iml b/idea/idea-repl/idea-repl.iml index 1718e7e5725..7690fc6c449 100644 --- a/idea/idea-repl/idea-repl.iml +++ b/idea/idea-repl/idea-repl.iml @@ -9,6 +9,7 @@ + diff --git a/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt b/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt index ab5f37267f9..996c4952200 100644 --- a/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt +++ b/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt @@ -40,6 +40,7 @@ import com.intellij.openapi.editor.markup.TextAttributes import com.intellij.openapi.module.Module import com.intellij.openapi.project.Project import com.intellij.openapi.util.Disposer +import com.intellij.psi.PsiManager import org.jetbrains.annotations.TestOnly import org.jetbrains.kotlin.console.actions.BuildAndRestartConsoleAction import org.jetbrains.kotlin.console.actions.KtExecuteCommandAction @@ -51,6 +52,8 @@ import org.jetbrains.kotlin.console.highlight.KotlinHistoryHighlighter import org.jetbrains.kotlin.console.highlight.KotlinReplOutputHighlighter import org.jetbrains.kotlin.console.highlight.ReplColors import org.jetbrains.kotlin.idea.JetLanguage +import org.jetbrains.kotlin.idea.completion.doNotComplete +import org.jetbrains.kotlin.psi.JetFile import java.awt.Color import java.awt.Font import kotlin.properties.Delegates @@ -82,6 +85,8 @@ public class KotlinConsoleRunner( consoleView.prompt = null + disableCompletion(consoleView) + val consoleEditor = consoleView.consoleEditor setupPlaceholder(consoleEditor) @@ -148,6 +153,12 @@ public class KotlinConsoleRunner( editor.setPlaceholderAttributes(placeholderAttrs) } + private fun disableCompletion(consoleView: LanguageConsoleView) { + val consoleFile = consoleView.virtualFile + val jetFile = PsiManager.getInstance(project).findFile(consoleFile) as? JetFile ?: return + jetFile.doNotComplete = true + } + fun setupGutters() { fun configureEditorGutter(editor: EditorEx, color: Color, iconWithTooltip: IconWithTooltip): RangeHighlighter { editor.settings.isLineMarkerAreaShown = true // hack to show gutter