1
0
Fork 0
dotfiles/tako/config.tako
2017-10-02 20:46:16 -07:00

136 lines
3.7 KiB
Text

$TAKO_SETTINGS.show_traceback = True
$TAKO_SETTINGS.traceback_logfile = $HOME + '/tmp/tako.log'
import re
import os
import os.path
def source_many(directory, predicate):
for filename in os.listdir(directory):
if not predicate(filename): continue
source @(os.path.join(directory, filename))
is_tako = (lambda re: lambda filename: re.match('^.*\.tako$', filename))(re)
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'
$EDITOR = 'emacs'
$VISUAL = $EDITOR
for path in [
$HOME + '/bin',
$HOME + '/.local/bin',
]:
if path not in $PATH:
$PATH.insert(0, path)
$LS_COLORS = $(dircolors @($HOME + '/.config/zsh/dircolors.256dark'))[len("LS_COLORS='"):-len("';\nexport LS_COLORS")]
def _workon(args, stdin=None):
if len(args) < 1:
return 'Need name of virtualenv\n'
source_order = [
'preactivate',
'activate',
'postactivate',
]
for f in filter(os.path.isfile, [
os.path.join($WORKON_HOME, args[0], 'bin', '{}.tako'.format(name))
for name in source_order
]):
source @(f)
def _sympy(args, stdin=None):
source @($HOME + '/.config/tako/sympy.tako')
def _reminder(args, stdin=None):
time, text = args
command = 'notify-send {} {}'.format(time, repr(text))
filename = $(mktemp)
with open(filename, 'w') as f: f.write(command)
at -M @(time) -f @(filename) all> /dev/null
atq
rm @(filename)
$TAKO_SETTINGS.aliases.update({
'startx': 'ssh-agent startx ; vlock',
'ls': 'ls --color=auto',
'la': 'ls -A',
'll': 'ls -l',
'units': 'units --verbose',
'trr': 'transmission-remote',
'vol': 'pulseaudio-ctl set',
'workon': _workon,
'octave': 'octave-cli',
'bc': 'bc -l',
'sympy': _sympy,
'reminder': _reminder,
})
if 'TERM' in ${...}:
if '256color' in $TERM:
colors = {
'blue': 81,
'orange': 166,
'purple': 135,
'red': 196,
'green': 118,
'gray': 241,
}
def colorize(color, text):
prefix = '{COLOR_' + str(colors[color]) + '}'
suffix = '{NO_COLOR}'
return prefix + text + suffix
else:
colors = {
'blue': 'BLUE',
'orange': 'YELLOW',
'purple': 'PURPLE',
'red': 'RED',
'green': 'GREEN',
'gray': 'WHITE',
}
def colorize(color, text):
prefix = '{%s}' % colors[color]
suffix = '{NO_COLOR}'
return prefix + text + suffix
def git_branch():
import re
ref=$(git symbolic-ref HEAD err> /dev/null)
if not ref: return None
prefix = colorize('gray', ':')
branch = colorize('orange', re.sub('^refs/heads/', '', ref.strip()))
return prefix + branch
$TAKO_SETTINGS.prompt_fields['git_branch'] = git_branch
def make_prompt():
username = colorize('purple', '{user}')
host = colorize('blue', '{hostname}')
directory = colorize('green', '{cwd}')
lbrkt = colorize('gray', '[')
rbrkt = colorize('gray', ']')
colon = colorize('gray', ':')
return lbrkt + colon.join([
username,
host,
directory,
]) + '{git_branch}' + rbrkt + '\n{prompt_end} '
$TAKO_SETTINGS.prompt = make_prompt()
$TAKO_SETTINGS.case_sensitive_completions = False
completer bash enable out> /dev/null
if not !(which bload).returncode:
bload