From c37f739ce5b51091732cec0452e8035fc187c096 Mon Sep 17 00:00:00 2001 From: keis Date: Sun, 4 Apr 2010 22:27:11 +0200 Subject: move history plugin --- examples/data/plugins/history.py | 148 ++++++++++++++++++++++++++++++++++ examples/data/uzbl/plugins/history.py | 148 ---------------------------------- 2 files changed, 148 insertions(+), 148 deletions(-) create mode 100644 examples/data/plugins/history.py delete mode 100644 examples/data/uzbl/plugins/history.py (limited to 'examples') diff --git a/examples/data/plugins/history.py b/examples/data/plugins/history.py new file mode 100644 index 0000000..4467e5d --- /dev/null +++ b/examples/data/plugins/history.py @@ -0,0 +1,148 @@ +__export__ = ['get_history'] +UZBLS = {} + +import random + +shared_history = {'':[]} + +class History(object): + def __init__(self): + self._temporary = [] + self.prompt = '' + self.cursor = None + self.__temp_tail = False + self.search_key = None + + def prev(self): + if self.cursor is None: + self.cursor = len(self) - 1 + else: + self.cursor -= 1 + + if self.search_key: + while self.cursor >= 0 and self.search_key not in self[self.cursor]: + self.cursor -= 1 + + if self.cursor < 0 or len(self) == 0: + self.cursor = -1 + return random.choice(end_messages) + + return self[self.cursor] + + def next(self): + if self.cursor is None: + return '' + + self.cursor += 1 + + if self.search_key: + while self.cursor < len(self) and self.search_key not in self[self.cursor]: + self.cursor += 1 + + if self.cursor >= len(shared_history[self.prompt]): + self.cursor = None + self.search_key = None + + if self._temporary: + print 'popping temporary' + return self._temporary.pop() + return '' + + return self[self.cursor] + + def change_prompt(self, prompt): + self.prompt = prompt + self._temporary = [] + self.__temp_tail = False + if prompt not in shared_history: + shared_history[prompt] = [] + + def search(self, key): + self.search_key = key + return self.prev() + + def add(self, cmd): + if self._temporary: + self._temporary.pop() + + shared_history[self.prompt].append(cmd) + self.cursor = None + self.search_key = None + + def add_temporary(self, cmd): + assert not self._temporary + + self._temporary.append(cmd) + self.cursor = len(self) - 1 + + print 'adding temporary', self + + def __getitem__(self, i): + if i < len(shared_history[self.prompt]): + return shared_history[self.prompt][i] + return self._temporary[i-len(shared_history)+1] + + def __len__(self): + return len(shared_history[self.prompt]) + len(self._temporary) + + def __str__(self): + return "(History %s)" % (self.cursor) + +def get_history(uzbl): + if uzbl not in UZBLS: + add_instance(uzbl) + + return UZBLS[uzbl] + +def add_instance(uzbl, *args): + UZBLS[uzbl] = History() + +def del_instance(uzbl, *args): + if uzbl in UZBLS: + del UZBLS[uzbl] + +def keycmd_exec(uzbl, keylet): + history = get_history(uzbl) + cmd = keylet.get_keycmd() + if cmd: + history.add(cmd) + +def config_changed(uzbl, key, value): + if key == 'keycmd_prompt': + history = get_history(uzbl) + history.change_prompt(value) + +def history_prev(uzbl, _x): + history = get_history(uzbl) + cmd = uzbl.get_keylet().get_keycmd() + if history.cursor is None and cmd: + history.add_temporary(cmd) + + uzbl.set_keycmd(history.prev()) + print 'PREV', history + +def history_next(uzbl, _x): + history = get_history(uzbl) + cmd = uzbl.get_keylet().get_keycmd() + + uzbl.set_keycmd(history.next()) + print 'NEXT', history + +def history_search(uzbl, key): + history = get_history(uzbl) + uzbl.set_keycmd(history.search(key)) + print 'SEARCH', history + +end_messages = ('Look behind you, A three-headed monkey!', 'error #4: static from nylon underwear.', 'error #5: static from plastic slide rules.', 'error #6: global warming.', 'error #9: doppler effect.', 'error #16: somebody was calculating pi on the server.', 'error #19: floating point processor overflow.', 'error #21: POSIX compliance problem.', 'error #25: Decreasing electron flux.', 'error #26: first Saturday after first full moon in Winter.', 'error #64: CPU needs recalibration.', 'error #116: the real ttys became pseudo ttys and vice-versa.', 'error #229: wrong polarity of neutron flow.', 'error #330: quantum decoherence.', 'error #388: Bad user karma.', 'error #407: Route flapping at the NAP.', 'error #435: Internet shut down due to maintenance.') + +def init(uzbl): + connects = {'INSTANCE_START': add_instance, + 'INSTANCE_EXIT': del_instance, + 'KEYCMD_EXEC': keycmd_exec, + 'CONFIG_CHANGED': config_changed, + 'HISTORY_PREV': history_prev, + 'HISTORY_NEXT': history_next, + 'HISTORY_SEARCH': history_search + } + + uzbl.connect_dict(connects) diff --git a/examples/data/uzbl/plugins/history.py b/examples/data/uzbl/plugins/history.py deleted file mode 100644 index 4467e5d..0000000 --- a/examples/data/uzbl/plugins/history.py +++ /dev/null @@ -1,148 +0,0 @@ -__export__ = ['get_history'] -UZBLS = {} - -import random - -shared_history = {'':[]} - -class History(object): - def __init__(self): - self._temporary = [] - self.prompt = '' - self.cursor = None - self.__temp_tail = False - self.search_key = None - - def prev(self): - if self.cursor is None: - self.cursor = len(self) - 1 - else: - self.cursor -= 1 - - if self.search_key: - while self.cursor >= 0 and self.search_key not in self[self.cursor]: - self.cursor -= 1 - - if self.cursor < 0 or len(self) == 0: - self.cursor = -1 - return random.choice(end_messages) - - return self[self.cursor] - - def next(self): - if self.cursor is None: - return '' - - self.cursor += 1 - - if self.search_key: - while self.cursor < len(self) and self.search_key not in self[self.cursor]: - self.cursor += 1 - - if self.cursor >= len(shared_history[self.prompt]): - self.cursor = None - self.search_key = None - - if self._temporary: - print 'popping temporary' - return self._temporary.pop() - return '' - - return self[self.cursor] - - def change_prompt(self, prompt): - self.prompt = prompt - self._temporary = [] - self.__temp_tail = False - if prompt not in shared_history: - shared_history[prompt] = [] - - def search(self, key): - self.search_key = key - return self.prev() - - def add(self, cmd): - if self._temporary: - self._temporary.pop() - - shared_history[self.prompt].append(cmd) - self.cursor = None - self.search_key = None - - def add_temporary(self, cmd): - assert not self._temporary - - self._temporary.append(cmd) - self.cursor = len(self) - 1 - - print 'adding temporary', self - - def __getitem__(self, i): - if i < len(shared_history[self.prompt]): - return shared_history[self.prompt][i] - return self._temporary[i-len(shared_history)+1] - - def __len__(self): - return len(shared_history[self.prompt]) + len(self._temporary) - - def __str__(self): - return "(History %s)" % (self.cursor) - -def get_history(uzbl): - if uzbl not in UZBLS: - add_instance(uzbl) - - return UZBLS[uzbl] - -def add_instance(uzbl, *args): - UZBLS[uzbl] = History() - -def del_instance(uzbl, *args): - if uzbl in UZBLS: - del UZBLS[uzbl] - -def keycmd_exec(uzbl, keylet): - history = get_history(uzbl) - cmd = keylet.get_keycmd() - if cmd: - history.add(cmd) - -def config_changed(uzbl, key, value): - if key == 'keycmd_prompt': - history = get_history(uzbl) - history.change_prompt(value) - -def history_prev(uzbl, _x): - history = get_history(uzbl) - cmd = uzbl.get_keylet().get_keycmd() - if history.cursor is None and cmd: - history.add_temporary(cmd) - - uzbl.set_keycmd(history.prev()) - print 'PREV', history - -def history_next(uzbl, _x): - history = get_history(uzbl) - cmd = uzbl.get_keylet().get_keycmd() - - uzbl.set_keycmd(history.next()) - print 'NEXT', history - -def history_search(uzbl, key): - history = get_history(uzbl) - uzbl.set_keycmd(history.search(key)) - print 'SEARCH', history - -end_messages = ('Look behind you, A three-headed monkey!', 'error #4: static from nylon underwear.', 'error #5: static from plastic slide rules.', 'error #6: global warming.', 'error #9: doppler effect.', 'error #16: somebody was calculating pi on the server.', 'error #19: floating point processor overflow.', 'error #21: POSIX compliance problem.', 'error #25: Decreasing electron flux.', 'error #26: first Saturday after first full moon in Winter.', 'error #64: CPU needs recalibration.', 'error #116: the real ttys became pseudo ttys and vice-versa.', 'error #229: wrong polarity of neutron flow.', 'error #330: quantum decoherence.', 'error #388: Bad user karma.', 'error #407: Route flapping at the NAP.', 'error #435: Internet shut down due to maintenance.') - -def init(uzbl): - connects = {'INSTANCE_START': add_instance, - 'INSTANCE_EXIT': del_instance, - 'KEYCMD_EXEC': keycmd_exec, - 'CONFIG_CHANGED': config_changed, - 'HISTORY_PREV': history_prev, - 'HISTORY_NEXT': history_next, - 'HISTORY_SEARCH': history_search - } - - uzbl.connect_dict(connects) -- cgit v1.2.3