summaryrefslogtreecommitdiff
path: root/.config/bash
diff options
context:
space:
mode:
authorLuke Shumaker <LukeShu@sbcglobal.net>2014-03-27 17:30:22 -0400
committerLuke Shumaker <LukeShu@sbcglobal.net>2014-03-27 17:30:22 -0400
commit86b1a11dfcbab990a07a236f41deefe0aaf4ed5e (patch)
tree00b1b50d9b616fd1c22ef5c51c007e24d1644ccc /.config/bash
parent9e79a6c3bbc37c2eec19e055566440f0b1173c5c (diff)
post-merge clean
Diffstat (limited to '.config/bash')
-rw-r--r--.config/bash/rc.d/emacs.sh43
-rw-r--r--.config/bash/rc.sh150
2 files changed, 100 insertions, 93 deletions
diff --git a/.config/bash/rc.d/emacs.sh b/.config/bash/rc.d/emacs.sh
index f484bbb..9c1bf4d 100644
--- a/.config/bash/rc.d/emacs.sh
+++ b/.config/bash/rc.d/emacs.sh
@@ -1,8 +1,41 @@
+#!/bin/bash
+
case "$TERM" in
eterm*)
- SELECTED_EDITOR='emacsclient'
- EDITOR=$SELECTED_EDITOR
- VISUAL=$SELECTED_EDITOR
- export SELECTED_EDITOR EDITOR VISUAL
- :;;
+ SELECTED_EDITOR='emacsclient'
+ EDITOR=$SELECTED_EDITOR
+ VISUAL=$SELECTED_EDITOR
+ export SELECTED_EDITOR EDITOR VISUAL
+ # The following uses the variable _EMACS_BUFFER to store some state
+ _emacs_quote() {
+ local str="$*"
+ str="${str//\\/\\\\}"
+ str="${str//\"/\\\"}"
+ str="\"${str}\""
+ printf '%s' "$str"
+ }
+ _emacs_rename_terminal() {
+ local name="$(_emacs_quote "$(_emacs_get_desired_buffer_name)")"
+ if [[ -n $_EMACS_BUFFER ]]; then
+ local buffer="(get-buffer $_EMACS_BUFFER)"
+ else
+ local buffer='(window-buffer (selected-window))'
+ fi
+ _EMACS_BUFFER="$(emacsclient -e "(with-current-buffer ${buffer} (rename-buffer ${name} t)))" 2>/dev/null)"
+ }
+ _emacs_get_short_cwd() {
+ local base=$1
+ local suffix=''
+ if [[ $base =~ (/(src|pkg|doc|pkg-libre|src-libre|trunk|tags|branches))*$ ]]; then
+ suffix=$BASH_REMATCH
+ base=${base%$suffix}
+ fi
+ base=${base##*/}
+ echo ${base}${suffix}
+ }
+ _emacs_get_desired_buffer_name() {
+ echo "*ansi-term*<$(_emacs_get_short_cwd "$PWD")>"
+ }
+ PROMPT_COMMAND='_emacs_rename_terminal "$(_emacs_get_desired_buffer_name)"'
+ :;;
esac
diff --git a/.config/bash/rc.sh b/.config/bash/rc.sh
index ed5d87e..1661b35 100644
--- a/.config/bash/rc.sh
+++ b/.config/bash/rc.sh
@@ -1,4 +1,4 @@
-# ~/.bashrc: executed by bash(1) for non-login shells.
+# ~/.bashrc: executed by bash(1) for interactive non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
@@ -6,112 +6,86 @@
# they are login shells or not.
# If not running interactively, don't do anything
-[ -z "$PS1" ] && return
-
-# don't put duplicate lines in the history. See bash(1) for more options
-# don't overwrite GNU Midnight Commander's setting of `ignorespace'.
-export HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
-# ... or force ignoredups and ignorespace
-export HISTCONTROL=ignoreboth
-
-# append to the history file, don't overwrite it
-shopt -s histappend
-
-# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
-
-# check the window size after each command and, if necessary,
-# update the values of LINES and COLUMNS.
-shopt -s checkwinsize
-
-# Let ** recursively scan directories
-shopt -s globstar
+[[ $- != *i* ]] && return
# Why is this not on by default?
# "We have a cached value, but it isn't valid anymore. Should we trash it?"
+# "Duh, yes!"
shopt -s checkhash
-# set variable identifying the chroot you work in (used in the prompt below)
-if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
- debian_chroot=$(cat /etc/debian_chroot)
-fi
-
-case "$TERM" in
- xterm) export TERM=xterm-256color;;
-esac
+################################################################################
-# set a fancy prompt (non-color, unless we know we "want" color)
-case "$TERM" in
- linux) color_prompt=yes;;
- *-*color*) color_prompt=yes;;
-esac
-
-# uncomment for a colored prompt, if the terminal has the capability; turned
-# off by default to not distract the user: the focus in a terminal window
-# should be on the output of commands, not on the prompt
-#force_color_prompt=yes
-
-if [ -n "$force_color_prompt" ]; then
- if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
+# History settings
+# don't put duplicate lines in the history. See bash(1) for more options
+# don't overwrite GNU Midnight Commander's setting of `ignorespace'.
+HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredups
+HISTFILE=${XDG_CACHE_HOME}/bash/history
+HISTTIMEFORMAT='[%Y-%m-%d %H:%M] '
+HISTSIZE=5000
+shopt -s histappend # append to the history file, don't overwrite it
+mkdir -p "${HISTFILE%/*}"
+
+# General settings
+shopt -s checkwinsize # update the values of LINES and COLUMNS
+shopt -s globstar # Let ** recursively scan directories
+
+################################################################################
+# Overly complicated setting of PS1 #
+################################################################################
+
+# Belongs in aliases, but I use it here
+term-title() {
+ local fmt=''
+ case "$TERM" in
+ screen|tmux) fmt='\ek%s\e\\';;
+ xterm*|rxvt*) fmt='\e]0;%s\a';;
+ esac
+ printf "$fmt" "$*"
+}
+PROMPT_COMMAND=''
+
+make_prompt() {
+ echo "${BOLD}${GREEN}\u@\h${BLUE}:\w${RESET}"
+}
+
+if tput setaf 1 &>/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
- color_prompt=yes
- else
- color_prompt=
- fi
-fi
-
-if [ "$color_prompt" = yes ]; then
- PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ '
+ RESET="$(tput sgr0)"
+ BOLD="$(tput bold)"
+ RED="$(tput setaf 1)"
+ GREEN="$(tput setaf 2)"
+ BLUE="$(tput setaf 4)"
+
+ _STATUS="${BOLD}["
+ _STATUS+="\$(v=\$?; [[ \$v = 0 ]] && c='${GREEN}' || c='${RED}'; printf %s%03i \$c \$v)"
+ _STATUS+="${RESET}${BOLD}]${RESET}"
else
- PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\n\$ '
+ _STATUS='[$(printf "%03i" $?)]'
fi
-unset color_prompt force_color_prompt
+PS1="${_STATUS} $(make_prompt)"'\n\$ '
+unset RESET BOLD RED GREEN BLUE _STATUS
+PS1="$(term-title $(make_prompt))$PS1"
+unset make_prompt
-# If this is an xterm set the title to user@host:dir
-case "$TERM" in
-xterm*|rxvt*)
- PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
- ;;
-*)
- ;;
-esac
+################################################################################
-# Include modular config files
-if [ -d ~/.bash.d ]; then
- for file in ~/.bash.d/*.sh; do
- . $file;
- done
+# Load my aliases
+if [[ -f ${XDG_CONFIG_HOME}/bash/aliases.sh ]]; then
+ . ${XDG_CONFIG_HOME}/bash/aliases.sh
fi
-# Alias definitions.
-# You may want to put all your additions into a separate file like
-# ~/.bash_aliases, instead of adding them here directly.
-# See /usr/share/doc/bash-doc/examples in the bash-doc package.
-
-if [ -f ~/.bash_aliases ]; then
- . ~/.bash_aliases
+# Include modular config files
+if [[ -d ${XDG_CONFIG_HOME}/bash/rc.d ]]; then
+ for file in "${XDG_CONFIG_HOME}/bash/rc.d"/*.sh; do
+ . "$file"
+ done
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
- . /etc/bash_completion
+ . /etc/bash_completion
fi
-
-if [ -f "$HOME/.login-daemons" ]; then
- . "$HOME/.login-daemons"
-fi
-
-if [ -f "${HOME}/.gnupg/agent-info" ]; then
- . "${HOME}/.gnupg/agent-info"
- export GPG_AGENT_INFO
- #export SSH_AUTH_SOCK
-fi
-
-export PERL_LOCAL_LIB_ROOT="/home/luke/perl5";
-export PERL_MB_OPT="--install_base /home/luke/perl5";
-export PERL_MM_OPT="INSTALL_BASE=/home/luke/perl5";
-export PERL5LIB="/home/luke/perl5/lib/perl5/i686-linux-thread-multi:/home/luke/perl5/lib/perl5";
-export PATH="/home/luke/perl5/bin:$PATH";