tUse default sys.ps1 and ps2 as console prompts (#6651) - electrum - Electrum Bitcoin wallet (HTM) git clone https://git.parazyd.org/electrum (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules --- (DIR) commit e66a5bbfc4d55fb2d7e290df2764ddf952192554 (DIR) parent 547b231b8000ad96ed8ae3af0f8b6040e7422cd6 (HTM) Author: BenoƮt Verret <verret.benoit@gmail.com> Date: Fri, 16 Oct 2020 11:37:02 -0400 Use default sys.ps1 and ps2 as console prompts (#6651) sys.ps1 and sys.ps2 define the strings used as primary and secondary prompts in the Python interpreter. Also fix a rare bug introduced by myself in 7772af6 (#6607) where spaces at the end of the current line would not be remembered when switching server. Diffstat: M electrum/gui/qt/console.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) --- (DIR) diff --git a/electrum/gui/qt/console.py b/electrum/gui/qt/console.py t@@ -15,6 +15,10 @@ from electrum.i18n import _ from .util import MONOSPACE_FONT +# sys.ps1 and sys.ps2 are only declared if an interpreter is in interactive mode. +sys.ps1 = '>>> ' +sys.ps2 = '... ' + class OverlayLabel(QtWidgets.QLabel): STYLESHEET = ''' t@@ -44,10 +48,9 @@ class OverlayLabel(QtWidgets.QLabel): class Console(QtWidgets.QPlainTextEdit): - def __init__(self, prompt='>>> ', parent=None): + def __init__(self, parent=None): QtWidgets.QPlainTextEdit.__init__(self, parent) - self.prompt = prompt self.history = [] self.namespace = {} self.construct = [] t@@ -86,7 +89,7 @@ class Console(QtWidgets.QPlainTextEdit): self.namespace.update(namespace) def showMessage(self, message): - curr_line = self.getCommand() + curr_line = self.getCommand(strip=False) self.appendPlainText(message) self.newPrompt(curr_line) t@@ -102,9 +105,9 @@ class Console(QtWidgets.QPlainTextEdit): def newPrompt(self, curr_line): if self.construct: - prompt = '... ' + curr_line + prompt = sys.ps2 + curr_line else: - prompt = self.prompt + curr_line + prompt = sys.ps1 + curr_line self.completions_pos = self.textCursor().position() self.completions_visible = False t@@ -112,11 +115,12 @@ class Console(QtWidgets.QPlainTextEdit): self.appendPlainText(prompt) self.moveCursor(QtGui.QTextCursor.End) - def getCommand(self): + def getCommand(self, *, strip=True): doc = self.document() curr_line = doc.findBlockByLineNumber(doc.lineCount() - 1).text() - curr_line = curr_line.rstrip() - curr_line = curr_line[len(self.prompt):] + if strip: + curr_line = curr_line.rstrip() + curr_line = curr_line[len(sys.ps1):] return curr_line def setCommand(self, command): t@@ -126,7 +130,7 @@ class Console(QtWidgets.QPlainTextEdit): doc = self.document() curr_line = doc.findBlockByLineNumber(doc.lineCount() - 1).text() self.moveCursor(QtGui.QTextCursor.End) - for i in range(len(curr_line) - len(self.prompt)): + for i in range(len(curr_line) - len(sys.ps1)): self.moveCursor(QtGui.QTextCursor.Left, QtGui.QTextCursor.KeepAnchor) self.textCursor().removeSelectedText() t@@ -201,11 +205,11 @@ class Console(QtWidgets.QPlainTextEdit): def getCursorPosition(self): c = self.textCursor() - return c.position() - c.block().position() - len(self.prompt) + return c.position() - c.block().position() - len(sys.ps1) def setCursorPosition(self, position): self.moveCursor(QtGui.QTextCursor.StartOfLine) - for i in range(len(self.prompt) + position): + for i in range(len(sys.ps1) + position): self.moveCursor(QtGui.QTextCursor.Right) def run_command(self):