Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services/console/lib/purk/scripts/completion.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/console/lib/purk/scripts/completion.py')
-rw-r--r--services/console/lib/purk/scripts/completion.py135
1 files changed, 0 insertions, 135 deletions
diff --git a/services/console/lib/purk/scripts/completion.py b/services/console/lib/purk/scripts/completion.py
deleted file mode 100644
index 1719702..0000000
--- a/services/console/lib/purk/scripts/completion.py
+++ /dev/null
@@ -1,135 +0,0 @@
-import windows
-import chaninfo
-from conf import conf
-
-def channel_completer(window, left, right, text):
- if isinstance(window, windows.ChannelWindow):
- yield window.id
-
- for w in windows.get_with(wclass=windows.ChannelWindow, network=window.network):
- if w is not window:
- yield w.id
-
- for w in windows.get_with(wclass=windows.ChannelWindow):
- if w.network is not window.network:
- yield w.id
-
-# normal server commands
-srv_commands = ('ping', 'join', 'part', 'mode', 'server', 'kick',
- 'quit', 'nick', 'privmsg', 'notice', 'topic')
-
-def command_completer(window, left, right, text):
- for c in srv_commands:
- yield '/%s' % c
-
- if 'CMDS' in window.network.isupport:
- for c in window.network.isupport['CMDS'].split(','):
- yield '/%s' % c.lower()
-
- for c in core.events.all_events:
- if c.startswith('Command') and c != 'Command':
- yield '/%s' % c[7:].lower()
-
-def nick_completer(window, left, right, text):
- if type(window) == windows.QueryWindow:
- yield window.id
-
- recent_speakers = getattr(window, 'recent_speakers', ())
-
- for nick in recent_speakers:
- if chaninfo.ison(window.network, window.id, nick):
- yield nick
-
- for nick in chaninfo.nicks(window.network, window.id):
- if nick not in recent_speakers:
- yield nick
-
-def script_completer(window, left, right, text):
- return core.events.loaded.iterkeys()
-
-def network_completer(window, left, right, text):
- return conf.get('networks', {}).iterkeys()
-
-def get_completer_for(window):
- input = window.input
-
- left, right = input.text[:input.cursor], input.text[input.cursor:]
-
- text = left.split(' ')[-1]
-
- while True:
- suffix = ''
- if text and text[0] in window.network.isupport.get('CHANTYPES', '#&+'):
- candidates = channel_completer(window, left, right, text)
-
- elif input.text.startswith('/reload '):
- candidates = script_completer(window, left, right, text)
-
- elif input.text.startswith('/edit '):
- candidates = script_completer(window, left, right, text)
-
- elif input.text.startswith('/server '):
- candidates = network_completer(window, left, right, text)
-
- elif text.startswith('/'):
- candidates = command_completer(window, left, right, text)
- suffix = ' '
-
- else:
- candidates = nick_completer(window, left, right, text)
-
- if left == text:
- suffix = ': '
- else:
- suffix = ' '
-
- if text:
- before = left[:-len(text)]
- else:
- before = left
-
- insert_text = '%s%s%s%s' % (before, '%s', suffix, right)
- cursor_pos = len(before + suffix)
-
- original = window.input.text, window.input.cursor
-
- for cand in candidates:
- if cand.lower().startswith(text.lower()):
- window.input.text, window.input.cursor = insert_text % cand, cursor_pos + len(cand)
- yield None
-
- window.input.text, window.input.cursor = original
- yield None
-
-# generator--use recent_completer.next() to continue cycling through whatever
-recent_completer = None
-
-def onKeyPress(e):
- global recent_completer
-
- if e.key == 'Tab':
- if not recent_completer:
- recent_completer = get_completer_for(e.window)
-
- recent_completer.next()
-
- else:
- recent_completer = None
-
-def onActive(e):
- global recent_completer
-
- recent_completer = None
-
-def onText(e):
- if chaninfo.ischan(e.network, e.target):
- if not hasattr(e.window, 'recent_speakers'):
- e.window.recent_speakers = []
-
- for nick in e.window.recent_speakers:
- if nick == e.source or not chaninfo.ison(e.network, e.target, nick):
- e.window.recent_speakers.remove(nick)
-
- e.window.recent_speakers.insert(0, e.source)
-
-onAction = onText