Fix to make it possible to disable pyreadline from ini file

This commit is contained in:
Jorgen Stenarson
2010-01-28 20:36:47 +01:00
parent c6f87d0474
commit cd33adfe98
3 changed files with 80 additions and 71 deletions
+1 -26
View File
@@ -7,31 +7,6 @@
# the file COPYING, distributed as part of this software.
#*****************************************************************************
import unicode_helper, logger, clipboard, lineeditor, modes
from rlmain import *
import rlmain
__all__ = [ 'parse_and_bind',
'get_line_buffer',
'insert_text',
'clear_history',
'read_init_file',
'read_history_file',
'write_history_file',
'get_history_length',
'set_history_length',
'set_startup_hook',
'set_pre_input_hook',
'set_completer',
'get_completer',
'get_begidx',
'get_endidx',
'set_completer_delims',
'get_completer_delims',
'add_history',
'callback_handler_install',
'callback_handler_remove',
'callback_read_char',
'GetOutputFile',
'rl',
'rlmain']
import release
+8 -44
View File
@@ -54,6 +54,7 @@ class BaseReadline(object):
self.bell_style = u'none'
self.mark = -1
self.console=MockConsole()
self.disable_readline = False
# this code needs to follow l_buffer and history creation
self.editingmodes = [mode(self) for mode in editingmodes]
for mode in self.editingmodes:
@@ -65,7 +66,6 @@ class BaseReadline(object):
self.callback = None
def parse_and_bind(self, string):
u'''Parse and execute single line of a readline init file.'''
try:
@@ -267,13 +267,16 @@ class BaseReadline(object):
inputrcpath=os.path.expanduser("~/pyreadlineconfig.ini")):
modes = dict([(x.mode,x) for x in self.editingmodes])
mode = self.editingmodes[0].mode
def setmode(name):
self.mode = modes[name]
def bind_key(key, name):
if hasattr(modes[mode], name):
modes[mode]._bind_key(key, getattr(modes[mode], name))
else:
print u"Trying to bind unknown command '%s' to key '%s'"%(name, key)
def un_bind_key(key):
keyinfo = make_KeyPress_from_keydescr(key).tuple()
if keyinfo in modes[mode].key_dispatch:
@@ -297,6 +300,9 @@ class BaseReadline(object):
def setbellstyle(mode):
self.bell_style = mode
def disable_readline(mode):
self.disable_readline = mode
def sethistorylength(length):
self.mode._history.history_length = int(length)
@@ -353,6 +359,7 @@ class BaseReadline(object):
u"modes":modes,
u"set_mode":setmode,
u"bind_key":bind_key,
u"disable_readline":disable_readline,
u"bind_exit_key":bind_exit_key,
u"un_bind_key":un_bind_key,
u"un_bind_exit_key":un_bind_exit_key,
@@ -556,46 +563,3 @@ class Readline(BaseReadline):
raise KeyboardInterrupt
return event
# create a Readline object to contain the state
rl = Readline()
def GetOutputFile():
u'''Return the console object used by readline so that it can be used for printing in color.'''
return rl.console
# make these available so this looks like the python readline module
read_init_file = rl.read_init_file
parse_and_bind = rl.parse_and_bind
clear_history = rl.clear_history
add_history = rl.add_history
insert_text = rl.insert_text
write_history_file = rl.write_history_file
read_history_file = rl.read_history_file
get_completer_delims = rl.get_completer_delims
get_history_length = rl.get_history_length
get_line_buffer = rl.get_line_buffer
set_completer = rl.set_completer
get_completer = rl.get_completer
get_begidx = rl.get_begidx
get_endidx = rl.get_endidx
set_completer_delims = rl.set_completer_delims
set_history_length = rl.set_history_length
set_pre_input_hook = rl.set_pre_input_hook
set_startup_hook = rl.set_startup_hook
callback_handler_install=rl.callback_handler_install
callback_handler_remove=rl.callback_handler_remove
callback_read_char=rl.callback_read_char
if __name__ == u'__main__':
res = [ rl.readline(u'In[%d] ' % i) for i in range(3) ]
print res
else:
console.install_readline(rl.readline)
pass
+71 -1
View File
@@ -2,4 +2,74 @@
#this file is needed in site-packages to emulate readline
#necessary for rlcompleter since it relies on the existance
#of a readline module
from pyreadline import *
from pyreadline.rlmain import Readline
__all__ = [ 'parse_and_bind',
'get_line_buffer',
'insert_text',
'clear_history',
'read_init_file',
'read_history_file',
'write_history_file',
'get_history_length',
'set_history_length',
'set_startup_hook',
'set_pre_input_hook',
'set_completer',
'get_completer',
'get_begidx',
'get_endidx',
'set_completer_delims',
'get_completer_delims',
'add_history',
'callback_handler_install',
'callback_handler_remove',
'callback_read_char',] #Some other objects are added below
# create a Readline object to contain the state
rl = Readline()
if rl.disable_readline:
def dummy(completer=""):
pass
for funk in __all__:
globals()[funk] = dummy
else:
def GetOutputFile():
u'''Return the console object used by readline so that it can be used for printing in color.'''
return rl.console
__all__.append("GetOutputFile")
import pyreadline.console as console
# make these available so this looks like the python readline module
read_init_file = rl.read_init_file
parse_and_bind = rl.parse_and_bind
clear_history = rl.clear_history
add_history = rl.add_history
insert_text = rl.insert_text
write_history_file = rl.write_history_file
read_history_file = rl.read_history_file
get_completer_delims = rl.get_completer_delims
get_history_length = rl.get_history_length
get_line_buffer = rl.get_line_buffer
set_completer = rl.set_completer
get_completer = rl.get_completer
get_begidx = rl.get_begidx
get_endidx = rl.get_endidx
set_completer_delims = rl.set_completer_delims
set_history_length = rl.set_history_length
set_pre_input_hook = rl.set_pre_input_hook
set_startup_hook = rl.set_startup_hook
callback_handler_install=rl.callback_handler_install
callback_handler_remove=rl.callback_handler_remove
callback_read_char=rl.callback_read_char
console.install_readline(rl.readline)
__all__.append("rl")