import readline
-import rlcompleter
+import os.path
+
+from .config import *
+
class RainbowCompleter(object):
words = origline.split()
if not words:
- self.current_candidates = sorted(self.options.keys())
+ self.current_candidates = sorted([c for c in self.options])
else:
try:
if begin == 0:
- candidates = self.options.keys()
+ candidates = [c for c in self.options]
+ elif words[-1] in self.options[words[0]]:
+ candidates = []
else:
first = words[0]
candidates = self.options[first]
if being_completed:
- self.current_candidates = [ w for w in candidates
- if w.startswith(being_completed) ]
+ self.current_candidates = [w for w in candidates
+ if w.startswith(being_completed)]
else:
self.current_candidates = candidates
- except (KeyError, IndexError), err:
+ except (KeyError, IndexError):
self.current_candidates = []
try:
return response
+def get_history_items():
+ """
+ Get all history item
+ """
+ return [
+ readline.get_history_item(i)
+ for i in xrange(1, readline.get_current_history_length() + 1)
+ ]
+
+
+def read_history():
+ """
+ Read history file
+ """
+ try:
+ readline.read_history_file(c['HISTORY_FILENAME'])
+ except:
+ pass
+
+
+def save_history():
+ """
+ Save history to file
+ """
+ try:
+ readline.write_history_file(c['HISTORY_FILENAME'])
+ except:
+ pass
+
+
def init_interactive_shell(d):
"""
Init the rainbow shell
"""
readline.set_completer(RainbowCompleter(d).complete)
- readline.parse_and_bind('set editing-mode vi')
- readline.parse_and_bind("set input-meta on")
- readline.parse_and_bind("set convert-meta off")
- readline.parse_and_bind("set output-meta on")
+ readline.parse_and_bind('set skip-completed-text on')
if 'libedit' in readline.__doc__:
readline.parse_and_bind("bind ^I rl_complete")
else:
readline.parse_and_bind("tab: complete")
-