# Path stuff. This accounts for, at least: # # - a custom Firefox install # - some bin dirs in my homedir # - golang # # Beware that other modifications to path might be made in .zshrc or .bashrc # - and that _probably_ this should live somewhere that sets the environment for # the entire X session. It's a tangled mess which certainly warrants a TODO. export GOPATH=~/code/go export PATH=~/firefox:~/bin:~/notes/bin:~/.xmonad:/usr/local/bin:~/.local/bin/:$PATH:/usr/local/go/bin:$GOPATH/bin # Needed for ansible - wouldn't surprise me if this interfered with other # things: export PYTHONPATH=~/code/ansible/lib # Debian stuff: export DEBEMAIL="bbearnes@gmail.com" export DEBFULLNAME="Brennen Bearnes" # Explicitly set default editor: export EDITOR=`which vim` # Configure less(1): export LESS='-FiRSX' # Configure fzf fuzzyfinder: export FZF_CTRL_R_OPTS='-e' # exact match by default - see fzf(1) # Aliases, various and sundry: {{{ alias ac='apt-cache' alias agu='sudo apt-get update && sudo apt-get upgrade' alias c="commandlog" alias g='git' alias gitsu='git submodule sync && git submodule update' alias l='ls -CF' alias la='ls -A' alias lal='ls -Al' alias lah='ls -Alh' alias ll='ls -l' alias ls='ls --color' alias m='make' alias mk='mark' alias mka='mark add' alias s='sudo' alias v='vim' alias vt='vim `todaydir`' # How big is the terminal? alias dim='echo $(tput cols)x$(tput lines)' # vi life: alias :e='vim' alias :q='exit' alias :wq='exit' alias :r='cat' # Navigation: alias p='cd ~/p1k3' alias ct='cd `todaydir`' # Get a persistent directory history menu in fzf - originally written for dmenu # and inspired by jholland at: # http://hints.macworld.com/article.php?story=20050806202859392 # I get the feeling that there's probably a more idiomatic way to do what # I want here, but for the moment it's nice. See: https://p1k3.com/2016/5/17/ alias h='cd $(tail -3000 ~/.directory_history | sed "s/^:[^;]*;//" | tac | unsorted-unique | fzf --height=50%); rash search --cwd .' # Get a menu of command history for the current directory; execute the selected one. alias hm='eval $(rash search --cwd . --sort-by time --limit 0 | grep -vE "^(ls|ll|l|cd|p|fg|hm|st)$" | fzf --height=50%)' # }}} # Functions: {{{ # Create a directory (if it doesn't exist) and cd to it: function mcd { mkdir -p $1 && cd $1 } function parse_git_branch { # Formerly: # ref=$(git symbolic-ref HEAD 2> /dev/null) || return # echo "("${ref#refs/heads/}") " # Largely borrowed from: # https://github.com/robacarp/config_files/commit/5d983240d509bf4f7815ed822c0e868ccce08a79 git_status=$(git status --porcelain -b 2> /dev/null) || return echo $git_status | awk ' BEGIN { status["untracked"] = 0 status["modifications"] = 0 status["unmerged"] = 0 } $1 ~ /##/ { gsub(/\.\.\..*/, "") branch_name=$2 } $1 ~ /\?\?/ { status["untracked"] ++ } $1 ~ /M/ { status["modifications"] ++ } $1 ~ /[DAU][DAU]/ { status["unmerged"] ++ } END { printf "(%s %i/%i) ", branch_name, status["modifications"], status["untracked"] } ' } # }}}