From 4d8af3936ad899ef622bb54bd0265c24b23214ce Mon Sep 17 00:00:00 2001 From: jstenar <> Date: Wed, 15 Nov 2006 20:04:16 +0000 Subject: [PATCH] pyreadline-refactor: move ironpython specifics from emacs.py to hook_wrapper --- doc/ChangeLog | 6 +++++- pyreadline/console/ironpython_console.py | 13 ++++++++++++- pyreadline/modes/emacs.py | 13 ++----------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index ae4d8a6..58e56e9 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,6 +1,10 @@ +2006-11-15 Jörgen Stenarson + * moved ironpython specifics from emacs.py->readline to a hook_wrapper + just as in the hookwrapper for the normal console. + 2006-11-15 Jörgen Stenarson * Rearranging pyreadlineconfig.ini - + 2006-11-13 Jörgen Stenarson * Fixed bug in tab completion when point is not at end of line * Changed clr.AddReference to clr.AddReferenceToFileAndPath (ironpython_console) diff --git a/pyreadline/console/ironpython_console.py b/pyreadline/console/ironpython_console.py index 9a535ca..1669b63 100644 --- a/pyreadline/console/ironpython_console.py +++ b/pyreadline/console/ironpython_console.py @@ -388,9 +388,20 @@ def make_event_from_keydescr(keydescr): CTRL_C_EVENT=make_event_from_keydescr("Control-c") def install_readline(hook): + def hook_wrap(): + try: + res=hook() + except KeyboardInterrupt,x: #this exception does not seem to be caught + res="" + except EOFError: + return None + if res[-1:]=="\n": + return res[:-1] + else: + return res class IronPythonWrapper(IronPythonConsole.IConsole): def ReadLine(self,autoIndentSize): - return hook() + return hook_wrap() def Write(self,text, style): System.Console.Write(text) def WriteLine(self,text, style): diff --git a/pyreadline/modes/emacs.py b/pyreadline/modes/emacs.py index 69b3338..ae1e1ce 100644 --- a/pyreadline/modes/emacs.py +++ b/pyreadline/modes/emacs.py @@ -107,22 +107,13 @@ class EmacsMode(basemode.BaseMode): self.paste_line_buffer=self.paste_line_buffer[1:] c.write('\r\n') else: - try: - self._readline_from_keyboard() - except EOFError: - if in_ironpython: - return None - else: - raise + self._readline_from_keyboard() c.write('\r\n') self.add_history(self.l_buffer.copy()) log('returning(%s)' % self.l_buffer.get_line_text()) - if in_ironpython: - return self.l_buffer.get_line_text() - else: - return self.l_buffer.get_line_text() + '\n' + return self.l_buffer.get_line_text() + '\n' ######### History commands def previous_history(self, e): # (C-p)