# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Shell control export HISTCONTROL=ignorespace:erasedups export HISTSIZE=100000 export HISTFILESIZE=100000 shopt -s histappend shopt -s checkwinsize # User specific aliases and functions alias rm='rm -i' alias l='less -N' alias dotgit='/usr/bin/git --git-dir=$HOME/code/dotfiles.git --work-tree=$HOME' # Emacs tramp wants a simple prompt that it can recognize if [[ "$TERM" = "dumb" ]]; then export PS1="> " fi # Change to the correct sibling of a parent directory cd_parent_sibling () { local sibling_name="$2"; local curname=""; local curtop="$PWD"; local finaltop="" while [ ! "$curtop" = "/" ]; do if [ -d $(dirname $curtop)/$sibling_name ]; then finaltop=$(dirname $curtop)/$sibling_name; break; fi curname=$(basename $curtop)/$curname; curtop=$(dirname $curtop); done if [ ! -z "$finaltop" ]; then if [ ! -z "$3" ]; then if [ ! -d $finaltop/$curname ]; then echo "$finaltop found but $finaltop/$curname not found"; fi finaltop=$finaltop/$curname; fi if [ -d $finaltop ]; then echo "$1 $finaltop" $1 $finaltop fi else echo "parent directory with sibling $sibling_name not found" fi } # Change to build directory cdb () { if [ -z "$1" ]; then cd_parent_sibling cd build t; else cd_parent_sibling cd "$1" t; fi } # Change to source directory cds () { if [ -z "$1" ]; then cd_parent_sibling cd source t; else cd_parent_sibling cd "$1" t; fi } # Push to top of build directory cdbt () { if [ -z "$1" ]; then cd_parent_sibling pushd build; else cd_parent_sibling pushd "$1"; fi } # Push to top of source directory cdst () { if [ -z "$1" ]; then cd_parent_sibling pushd source; else cd_parent_sibling pushd "$1"; fi } # An emacs 'alias' with the ability to read from stdin; example: # echo "hello world" | ef - ef() { # If the argument is - then write stdin to a tempfile and open the # tempfile. if [[ "$1" == "-" ]]; then tempfile=$(mktemp emacs-stdin-$USER.XXXXXXX --tmpdir) cat - > $tempfile emacsclient -n -c -e "(progn (find-file \"$tempfile\") (set-visited-file-name nil) (rename-buffer \"*stdin*\" t)) " 2>&1 > /dev/null else emacsclient -n -c "$@" fi }