Disable completion in repl
This commit is contained in:
committed by
Pavel V. Talanov
parent
87969f1660
commit
e26fe0b080
+6
-1
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.completion
|
|||||||
import com.intellij.codeInsight.completion.*
|
import com.intellij.codeInsight.completion.*
|
||||||
import com.intellij.openapi.editor.Document
|
import com.intellij.openapi.editor.Document
|
||||||
import com.intellij.openapi.progress.ProcessCanceledException
|
import com.intellij.openapi.progress.ProcessCanceledException
|
||||||
|
import com.intellij.openapi.util.Key
|
||||||
import com.intellij.patterns.PlatformPatterns
|
import com.intellij.patterns.PlatformPatterns
|
||||||
import com.intellij.patterns.PsiJavaPatterns.elementType
|
import com.intellij.patterns.PsiJavaPatterns.elementType
|
||||||
import com.intellij.patterns.PsiJavaPatterns.psiElement
|
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.check
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
|
|
||||||
|
public var JetFile.doNotComplete: Boolean? by UserDataProperty(Key.create("DO_NOT_COMPLETE"))
|
||||||
|
|
||||||
public class KotlinCompletionContributor : CompletionContributor() {
|
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_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)))
|
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) {
|
private fun performCompletion(parameters: CompletionParameters, result: CompletionResultSet) {
|
||||||
val position = parameters.getPosition()
|
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) {
|
performCompletionWithOutOfBlockTracking(position) {
|
||||||
doComplete(parameters, position, result)
|
doComplete(parameters, position, result)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
<orderEntry type="library" name="idea-full" level="project" />
|
<orderEntry type="library" name="idea-full" level="project" />
|
||||||
<orderEntry type="module" module-name="frontend" />
|
<orderEntry type="module" module-name="frontend" />
|
||||||
<orderEntry type="module" module-name="idea-analysis" />
|
<orderEntry type="module" module-name="idea-analysis" />
|
||||||
|
<orderEntry type="module" module-name="idea-completion" />
|
||||||
<orderEntry type="module" module-name="util" />
|
<orderEntry type="module" module-name="util" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import com.intellij.openapi.editor.markup.TextAttributes
|
|||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.Disposer
|
import com.intellij.openapi.util.Disposer
|
||||||
|
import com.intellij.psi.PsiManager
|
||||||
import org.jetbrains.annotations.TestOnly
|
import org.jetbrains.annotations.TestOnly
|
||||||
import org.jetbrains.kotlin.console.actions.BuildAndRestartConsoleAction
|
import org.jetbrains.kotlin.console.actions.BuildAndRestartConsoleAction
|
||||||
import org.jetbrains.kotlin.console.actions.KtExecuteCommandAction
|
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.KotlinReplOutputHighlighter
|
||||||
import org.jetbrains.kotlin.console.highlight.ReplColors
|
import org.jetbrains.kotlin.console.highlight.ReplColors
|
||||||
import org.jetbrains.kotlin.idea.JetLanguage
|
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.Color
|
||||||
import java.awt.Font
|
import java.awt.Font
|
||||||
import kotlin.properties.Delegates
|
import kotlin.properties.Delegates
|
||||||
@@ -82,6 +85,8 @@ public class KotlinConsoleRunner(
|
|||||||
|
|
||||||
consoleView.prompt = null
|
consoleView.prompt = null
|
||||||
|
|
||||||
|
disableCompletion(consoleView)
|
||||||
|
|
||||||
val consoleEditor = consoleView.consoleEditor
|
val consoleEditor = consoleView.consoleEditor
|
||||||
|
|
||||||
setupPlaceholder(consoleEditor)
|
setupPlaceholder(consoleEditor)
|
||||||
@@ -148,6 +153,12 @@ public class KotlinConsoleRunner(
|
|||||||
editor.setPlaceholderAttributes(placeholderAttrs)
|
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 setupGutters() {
|
||||||
fun configureEditorGutter(editor: EditorEx, color: Color, iconWithTooltip: IconWithTooltip): RangeHighlighter {
|
fun configureEditorGutter(editor: EditorEx, color: Color, iconWithTooltip: IconWithTooltip): RangeHighlighter {
|
||||||
editor.settings.isLineMarkerAreaShown = true // hack to show gutter
|
editor.settings.isLineMarkerAreaShown = true // hack to show gutter
|
||||||
|
|||||||
Reference in New Issue
Block a user