src/eric7/QScintilla/TypingCompleters/CompleterPython.py

branch
eric7
changeset 10201
5beaa25bdfbe
parent 10126
32e6b6cb3cd1
child 10431
64157aeb0312
diff -r 7c282bf19646 -r 5beaa25bdfbe src/eric7/QScintilla/TypingCompleters/CompleterPython.py
--- a/src/eric7/QScintilla/TypingCompleters/CompleterPython.py	Sat Sep 09 17:20:31 2023 +0200
+++ b/src/eric7/QScintilla/TypingCompleters/CompleterPython.py	Sun Sep 10 18:04:28 2023 +0200
@@ -57,6 +57,8 @@
         self.__whileRX = re.compile(r"^[ \t]*while ")
         self.__forRX = re.compile(r"^[ \t]*(async[ \t]+)?for ")
 
+        self.__trailingBlankRe = re.compile(r"(?:,)(\s*)\r?\n")
+
         self.readSettings()
 
     def readSettings(self):
@@ -200,6 +202,24 @@
         # indent to opening brace
         elif char == "\n" and self.__indentBrace:
             txt = self.editor.text(line - 1)
+            if self.__insertBlank and self.__trailingBlankRe.search(txt):
+                match = self.__trailingBlankRe.search(txt)
+                if match is not None:
+                    startBlanks = match.start(1)
+                    endBlanks = match.end(1)
+                    if startBlanks != -1 and startBlanks != endBlanks:
+                        # previous line ends with whitespace, e.g. caused by
+                        # blank insertion above
+                        self.editor.setSelection(
+                            line - 1, startBlanks, line - 1, endBlanks
+                        )
+                        self.editor.removeSelectedText()
+                        # get the line again for next check
+                        txt = self.editor.text(line - 1)
+
+                    self.editor.setCursorPosition(line, 0)
+                    self.editor.editorCommand(QsciScintilla.SCI_VCHOME)
+
             if re.search(":\r?\n", txt) is None:
                 self.editor.beginUndoAction()
                 stxt = txt.strip()

eric ide

mercurial