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()