From 72178fd509422b34a6b5862498f77d842f1d78b4 Mon Sep 17 00:00:00 2001 From: guoci Date: Mon, 18 Sep 2023 16:14:58 -0400 Subject: [PATCH] insert a newline if at the end of file --- .../actions/PySmartExecuteSelectionAction.java | 12 ++++++++++++ src/main/resources/META-INF/plugin.xml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/jetbrains/python/actions/PySmartExecuteSelectionAction.java b/src/main/java/com/jetbrains/python/actions/PySmartExecuteSelectionAction.java index fc4fcf7..9bc8aba 100644 --- a/src/main/java/com/jetbrains/python/actions/PySmartExecuteSelectionAction.java +++ b/src/main/java/com/jetbrains/python/actions/PySmartExecuteSelectionAction.java @@ -1,6 +1,7 @@ package com.jetbrains.python.actions; import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.LogicalPosition; @@ -8,6 +9,7 @@ import com.intellij.openapi.editor.SelectionModel; import com.intellij.openapi.editor.VisualPosition; import com.intellij.openapi.editor.ex.util.EditorUtil; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiDocumentManager; @@ -169,7 +171,17 @@ static void smartExecuteCode(final AnActionEvent e, final Editor editor, final C if (codeToSend != null) { if (cursorMoveAfterExecute == CursorMoveAfterExecute.TO_NEXT_CODE_REGION || cursorMoveAfterExecute == CursorMoveAfterExecute.TO_THE_END_OF_CODE_BLOCK) { + final LogicalPosition posStart = editor.getCaretModel().getLogicalPosition(); moveCaretDown(editor, numLinesToSubmit); + final LogicalPosition posEnd = editor.getCaretModel().getLogicalPosition(); + if (posStart.line + numLinesToSubmit != posEnd.line) { // if lines moved less than lines submitted, insert newline + // https://plugins.jetbrains.com/docs/intellij/working-with-text.html + Project project = e.getRequiredData(CommonDataKeys.PROJECT); + Document doc = editor.getDocument(); + WriteCommandAction.runWriteCommandAction(project, + () -> doc.insertString(editor.logicalPositionToOffset(posEnd), "\n")); + moveCaretDown(editor, 1); + } } if (cursorMoveAfterExecute == CursorMoveAfterExecute.TO_NEXT_CODE_REGION) { int currentOffset = 0; diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 57a0d45..ec9b03c 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -6,7 +6,7 @@ python-smart-execute Python Smart Execute - 0.3.1 + 0.3.2 Guo Ci