changeset 49d45a97f789 in /home/hg/repos/gajim
author: Yann Leboulanger asterix@lagaule.org branches: details:http://hg.gajim.org/gajim?cmd=changeset;node=49d45a97f789 description: fix ipython usage
diffstat:
src/ipython_view.py | 40 +++++++++++++++++++++++++++++----------- 1 files changed, 29 insertions(+), 11 deletions(-)
diffs (111 lines):
diff -r 437c32ee7d03 -r 49d45a97f789 src/ipython_view.py --- a/src/ipython_view.py Fri Jul 17 22:19:16 2015 +0200 +++ b/src/ipython_view.py Sun Jul 19 00:03:32 2015 +0200 @@ -92,23 +92,23 @@ @param input_func: Replacement for builtin raw_input() @type input_func: function """ + io = IPython.utils.io if input_func: if IPython.version_info[0] >= 1: IPython.terminal.interactiveshell.raw_input_original = input_func else: IPython.frontend.terminal.interactiveshell.raw_input_original = input_func if cin: - IPython.utils.io.stdin = IPython.utils.io.IOStream(cin) + io.stdin = io.IOStream(cin) if cout: - IPython.utils.io.stdout = IPython.utils.io.IOStream(cout) + io.stdout = io.IOStream(cout) if cerr: - IPython.utils.io.stderr = IPython.utils.io.IOStream(cerr) + io.stderr = io.IOStream(cerr)
# This is to get rid of the blockage that accurs during # IPython.Shell.InteractiveShell.user_setup() - IPython.utils.io.raw_input = lambda x: None + io.raw_input = lambda x: None
- self.term = IPython.utils.io.IOTerm(stdin=cin, stdout=cout, stderr=cerr) os.environ['TERM'] = 'dumb' excepthook = sys.excepthook
@@ -116,10 +116,19 @@ cfg = Config() cfg.InteractiveShell.colors = "Linux"
+ # InteractiveShell's __init__ overwrites io.stdout,io.stderr with + # sys.stdout, sys.stderr, this makes sure they are right + old_stdout, old_stderr = sys.stdout, sys.stderr + sys.stdout, sys.stderr = io.stdout.stream, io.stderr.stream + + # InteractiveShell inherits from SingletonConfigurable so use instance() if IPython.version_info[0] >= 1: - self.IP = IPython.terminal.embed.InteractiveShellEmbed(config=cfg, user_ns=user_ns) + self.IP = IPython.terminal.embed.InteractiveShellEmbed.instance(config=cfg, user_ns=user_ns) else: - self.IP = IPython.frontend.terminal.embed.InteractiveShellEmbed(config=cfg, user_ns=user_ns) + self.IP = IPython.frontend.terminal.embed.InteractiveShellEmbed.instance(config=cfg, user_ns=user_ns) + + sys.stdout, sys.stderr = old_stdout, old_stderr + self.IP.system = lambda cmd: self.shell(self.IP.var_expand(cmd), header='IPython system call: ', local_ns=user_ns) @@ -152,7 +161,7 @@ """ self.history_level = 0 orig_stdout = sys.stdout - sys.stdout = self.term.stdout + sys.stdout = IPython.utils.io.stdout
orig_stdin = sys.stdin sys.stdin = IPython.utils.io.stdin; @@ -182,12 +191,16 @@ self.IP.autoedit_syntax): self.IP.edit_syntax_error() if not self.iter_more: - source_raw = self.IP.input_splitter.source_raw_reset()[1] + if IPython.version_info[0] >= 2: + source_raw = self.IP.input_splitter.raw_reset() + else: + source_raw = self.IP.input_splitter.source_raw_reset()[1] self.IP.run_cell(source_raw, store_history=True) + self.IP.rl_do_indent = False else: # TODO: Auto-indent # - pass + self.IP.rl_do_indent = True
sys.stdout = orig_stdout sys.stdin = orig_stdin @@ -472,6 +485,10 @@ self.text_buffer.move_mark(self.line_start, self.text_buffer.get_end_iter()) self.text_buffer.place_cursor(self.text_buffer.get_end_iter())
+ if self.IP.rl_do_indent: + indentation = self.IP.input_splitter.indent_spaces * ' ' + self.text_buffer.insert_at_cursor(indentation) + def onKeyPress(self, widget, event): """ Key press callback used for correcting behavior for console-like @@ -537,11 +554,11 @@ IterableIPShell.__init__(self, cout=self.cout, cerr=self.cout, input_func=self.raw_input) # self.connect('key_press_event', self.keyPress) + self.interrupt = False self.execute() self.prompt = self.generatePrompt(False) self.cout.truncate(0) self.showPrompt(self.prompt) - self.interrupt = False
def raw_input(self, prompt=''): """ @@ -607,3 +624,4 @@ if rv: rv = rv.strip('\n') self.showReturned(rv) self.cout.truncate(0) + self.cout.seek(0)