diff --git a/platform/diff-impl/resources/META-INF/diff-impl.xml b/platform/diff-impl/resources/META-INF/diff-impl.xml index 9e65bbd6ddaa..dd13c877207d 100644 --- a/platform/diff-impl/resources/META-INF/diff-impl.xml +++ b/platform/diff-impl/resources/META-INF/diff-impl.xml @@ -4,6 +4,11 @@ + + diff --git a/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupService.kt b/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupService.kt index 1ba6cc6abb8a..c4c209db01cb 100644 --- a/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupService.kt +++ b/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupService.kt @@ -4,11 +4,14 @@ package com.intellij.openapi.vcs.ex import com.intellij.codeInsight.hint.HintManager import com.intellij.codeInsight.hint.HintManagerImpl import com.intellij.openapi.Disposable +import com.intellij.openapi.actionSystem.DataContext import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.components.Service +import com.intellij.openapi.editor.Caret import com.intellij.openapi.editor.Document import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.LogicalPosition +import com.intellij.openapi.editor.actionSystem.EditorActionHandler import com.intellij.openapi.editor.event.* import com.intellij.openapi.fileEditor.FileEditorManagerEvent import com.intellij.openapi.fileEditor.FileEditorManagerListener @@ -63,6 +66,10 @@ internal class LineStatusMarkerPopupService { } } + internal fun hidePopup() { + lastKnownHint?.hide() + } + private fun beforeShowNewHint(newHint: LightweightHint) { if (lastKnownHint != null) { lastKnownHint!!.hide() @@ -179,3 +186,14 @@ internal class LineStatusMarkerPopupService { .getService(LineStatusMarkerPopupService::class.java) } } + +private class LineStatusMakerEscEditorHandler(private val delegate: EditorActionHandler) : EditorActionHandler() { + override fun isEnabledForCaret(editor: Editor, caret: Caret, dataContext: DataContext?): Boolean { + return delegate.isEnabled(editor, caret, dataContext) + } + + override fun doExecute(editor: Editor, caret: Caret?, dataContext: DataContext?) { + LineStatusMarkerPopupService.instance.hidePopup() + delegate.execute(editor, caret, dataContext) + } +} \ No newline at end of file