commit 6945b02706ca7c49bb75447ebc05a6721ae15759 Author: Damian Johnson atagar@torproject.org Date: Thu Apr 17 09:53:36 2014 -0700
Readline history can screw up the prompt
Something between raw_input() and readline history has a bug for color prompts like ours. Certain histories cause our prompt to be widened. Widening our initial prompt with invisiable characters (like resets) seems to mitigate this. And yes, this is quite a hack. :(
Steps to repro for python 2.7.1...
1. Start prompt. 2. Type "/help GETINFO version". 3. Press 'up' to render that command. Your prompt should now look screwed up. 4. Press 'down' to return to what should be a blank prompt. You'll still be offset several characters to the right. --- stem/interpretor/__init__.py | 13 ++++++------- stem/interpretor/arguments.py | 3 ++- 2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/stem/interpretor/__init__.py b/stem/interpretor/__init__.py index 3dce2a0..f1da5d9 100644 --- a/stem/interpretor/__init__.py +++ b/stem/interpretor/__init__.py @@ -13,19 +13,18 @@ import sys
import stem import stem.connection -import stem.prereq import stem.util.conf
-from stem.util.term import Attr, Color, format +from stem.util.term import RESET, Attr, Color, format
-# We can only present a color prompt with python 2.7 or later... +# Our color prompt triggers a bug between raw_input() and readline history, +# where scrolling through history widens our prompt. Widening our prompt via +# invisible characters (like resets) seems to sidestep this bug for short +# inputs. Contrary to the ticket, this still manifests with python 2.7.1... # # http://bugs.python.org/issue12972
-if stem.prereq.is_python_27(): - PROMPT = format(">>> ", Color.GREEN, Attr.BOLD) -else: - PROMPT = ">>> " +PROMPT = format(">>> ", Color.GREEN, Attr.BOLD) + RESET * 10
def main(): diff --git a/stem/interpretor/arguments.py b/stem/interpretor/arguments.py index ff25fb7..c2971b0 100644 --- a/stem/interpretor/arguments.py +++ b/stem/interpretor/arguments.py @@ -84,7 +84,8 @@ def get_help(): :returns: **str** with our usage information """
- return stem.interpretor.msg('msg.help', + return stem.interpretor.msg( + 'msg.help', address = DEFAULT_ARGS['control_address'], port = DEFAULT_ARGS['control_port'], socket = DEFAULT_ARGS['control_socket'],
tor-commits@lists.torproject.org