def reverseAllLines(): lines = editor.getText().splitlines() lines.reverse() editor.setText(os.linesep.join(lines)) def reverseSelectedLines(): import os staline = editor.lineFromPosition(editor.getSelectionStart()) endline = editor.lineFromPosition(editor.getSelectionEnd()) start = editor.positionFromLine(staline) end = editor.positionFromLine(endline)+editor.lineLength(endline) text = editor.getTextRange(start, end) if text.endswith(os.linesep): eol = os.linesep else: eol = '' lines = text.splitlines() lines.reverse() text = os.linesep.join(lines)+eol editor.setSelection(start, end) editor.replaceSel(text) editor.setSelection(start, end) #keep selection after replace editor.beginUndoAction() if editor.getSelectionStart() == editor.getSelectionEnd(): reverseAllLines() else: reverseSelectedLines() editor.endUndoAction()