From 6d7a22be9182c088eec5b8fada88dde21c8ef029 Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Thu, 15 Dec 2016 20:37:11 -0500 Subject: [PATCH] Update tako config --- tako/completers/passget.tako | 34 +++++++++++++++++++++ tako/config.tako | 57 ++++++++++++++++++++++++++++-------- 2 files changed, 78 insertions(+), 13 deletions(-) create mode 100644 tako/completers/passget.tako diff --git a/tako/completers/passget.tako b/tako/completers/passget.tako new file mode 100644 index 0000000..9dfb7da --- /dev/null +++ b/tako/completers/passget.tako @@ -0,0 +1,34 @@ +from os.path import isdir, join + +ROOT = __tako_env__.get('PASSWORD_STORE_DIR', $HOME + '/.password-store') +SUFFIX = '.gpg' + +def make_display(directory): + def display(completion): + if isdir(join(ROOT, directory, completion)): + return completion + '/' + if completion.endswith(SUFFIX): + return join(directory, completion[:-len(SUFFIX)]) + return completion + return display + +def passget_completer(prefix, line, begidx, endidx, ctx): + ''' + Completes with + ''' + if not line.startswith('passget'): return {} + + directory = '' + + if '/' in prefix: + pre_dir, pre = prefix.rsplit('/', 1) + if isdir(join(ROOT, directory, pre_dir)): + directory = join(directory, pre_dir) + prefix = pre + + completions = $(ls @(join(ROOT, directory))) + + display = make_display(directory) + return {display(i) for i in completions if i.startswith(prefix)} + +completer add passget passget_completer diff --git a/tako/config.tako b/tako/config.tako index 11f5a76..0a9449e 100644 --- a/tako/config.tako +++ b/tako/config.tako @@ -1,14 +1,43 @@ import re +from os import listdir +from os.path import isfile, join + +def source_many(directory, predicate): + for filename in listdir(directory): + if not predicate(filename): continue + source @(join(directory, filename)) + +is_tako = lambda filename: re.match('^.*\.tako', filename) +source_many('/etc/profile.d', is_tako) +source_many($HOME + '/.config/tako/completers', is_tako) $TAKO_SETTINGS.auto_pushd = True +$WORKON_HOME = $HOME + '/.virtualenvs' +$XDG_CONFIG_HOME = $HOME + '/.config' +$SXHKD_SHELL = '/bin/sh' +$EDITOR = 'emacs' +$VISUAL = $EDITOR +$PATH.insert(0, $HOME + '/bin') +$PATH.insert(0, $HOME + '/.local/bin') + +$LS_COLORS = $(dircolors @($HOME + '/.config/zsh/dircolors.256dark'))[0][len("'LS_COLORS="):-len("';")] + +def _workon(args, stdin=None): + if len(args) < 1: + return 'Need name of virtualenv\n' + source @('/'.join([$WORKON_HOME, args[0], 'bin/activate.tako'])) + source @('/'.join([$WORKON_HOME, args[0], 'bin/postactivate.tako'])) + $TAKO_SETTINGS.aliases.update({ 'startx': 'ssh-agent startx ; vlock', - 'la': 'ls -a', + 'ls': 'ls --color=auto', + 'la': 'ls -A', 'll': 'ls -l', 'units': 'units --verbose', 'trr': 'transmission-remote', 'vol': 'pulseaudio-ctl set', + 'workon': _workon, }) if '256color' in $TERM: @@ -48,19 +77,21 @@ def git_branch(): $TAKO_SETTINGS.prompt_fields['git_branch'] = git_branch -username = colorize('purple', '{user}') -host = colorize('blue', '{hostname}') -directory = colorize('green', '{cwd}') -lbrkt = colorize('gray', '[') -rbrkt = colorize('gray', ']') -colon = colorize('gray', ':') +def make_prompt(): + username = colorize('purple', '{user}') + host = colorize('blue', '{hostname}') + directory = colorize('green', '{cwd}') + lbrkt = colorize('gray', '[') + rbrkt = colorize('gray', ']') + colon = colorize('gray', ':') -$TAKO_SETTINGS.prompt = lbrkt + colon.join([ - username, - host, - directory, -]) + '{git_branch}' + rbrkt + '\n{prompt_end} ' + return lbrkt + colon.join([ + username, + host, + directory, + ]) + '{git_branch}' + rbrkt + '\n{prompt_end} ' -'{color_155}' +$TAKO_SETTINGS.prompt = make_prompt() $TAKO_SETTINGS.show_traceback = True +$TAKO_SETTINGS.traceback_logfile = $HOME + '/tmp/tako.log'