[PyCharm] Jupyter (feat): Fixed Markdown cell mode switch on entering command mode and on cell conversion. #PY-77183 Fixed

(cherry picked from commit 1c4a35dc577363afe2744a904e91e92a15630184)

IJ-CR-151924

GitOrigin-RevId: f7e0e1e3e0b4d22be2f294e7ab14eb5c71e022b1
This commit is contained in:
Nikita Pavlenko
2024-11-19 16:13:41 +01:00
committed by intellij-monorepo-bot
parent 49894bdce7
commit 0809096b0f

View File

@@ -15,7 +15,6 @@ import com.intellij.openapi.editor.ex.util.EditorUtil
class NotebookEditorModeListenerAdapter private constructor(private val editor: Editor) : NotebookEditorModeListener, CaretListener, Disposable.Default {
private var currentEditorMode: NotebookEditorMode? = null
override fun onModeChange(editor: Editor, mode: NotebookEditorMode) {
val modeWasChanged = currentEditorMode != mode
@@ -26,33 +25,32 @@ class NotebookEditorModeListenerAdapter private constructor(private val editor:
return
}
editor.apply {
(markupModel as MarkupModelEx).apply {
allHighlighters.filterIsInstance<RangeHighlighterEx>().forEach {
val lineMarkerRenderer = it.getLineMarkerRenderer()
it.setLineMarkerRenderer(null)
it.setLineMarkerRenderer(lineMarkerRenderer) // to fireChange
}
(editor.markupModel as MarkupModelEx).apply {
allHighlighters.filterIsInstance<RangeHighlighterEx>().forEach {
val lineMarkerRenderer = it.getLineMarkerRenderer()
it.setLineMarkerRenderer(null)
it.setLineMarkerRenderer(lineMarkerRenderer) // to fireChange
}
if (modeWasChanged) {
handleCarets(mode)
editor.settings.isCaretRowShown = isCaretRowShown(mode)
}
caretModel.allCarets.forEach { caret ->
caret.visualAttributes = getCaretAttributes(mode)
}
editor.contentComponent.putClientProperty(ActionUtil.ALLOW_PlAIN_LETTER_SHORTCUTS, when (mode) {
NotebookEditorMode.EDIT -> false
NotebookEditorMode.COMMAND -> true
})
editor.contentComponent.enableInputMethods(when (mode) {
NotebookEditorMode.EDIT -> true
NotebookEditorMode.COMMAND -> false
})
}
if (modeWasChanged) {
handleCarets(mode)
editor.settings.isCaretRowShown = isCaretRowShown(mode)
}
editor.caretModel.allCarets.forEach { caret ->
caret.visualAttributes = getCaretAttributes(mode)
}
editor.contentComponent.putClientProperty(ActionUtil.ALLOW_PlAIN_LETTER_SHORTCUTS, when (mode) {
NotebookEditorMode.EDIT -> false
NotebookEditorMode.COMMAND -> true
})
editor.contentComponent.enableInputMethods(when (mode) {
NotebookEditorMode.EDIT -> true
NotebookEditorMode.COMMAND -> false
})
}
override fun caretAdded(event: CaretEvent) {
@@ -71,9 +69,9 @@ class NotebookEditorModeListenerAdapter private constructor(private val editor:
}
private fun isCaretRowShown(mode: NotebookEditorMode): Boolean = when (mode) {
NotebookEditorMode.EDIT -> true
NotebookEditorMode.COMMAND -> false
}
NotebookEditorMode.EDIT -> true
NotebookEditorMode.COMMAND -> false
}
private fun handleCarets(mode: NotebookEditorMode) = when (mode) {
NotebookEditorMode.EDIT -> {