aboutsummaryrefslogtreecommitdiff
path: root/bash/bashrc.d
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-08-21 21:09:15 +1200
committerTom Ryder <tom@sanctum.geek.nz>2016-08-21 21:25:15 +1200
commit7ddb8084297c5bf30db73e9b9058d71f52991901 (patch)
tree8b07077307ae6209d9e094270dbcc65b5e7e80c7 /bash/bashrc.d
parentRestructure ed() to test,cache features on login (diff)
downloaddotfiles-7ddb8084297c5bf30db73e9b9058d71f52991901.tar.gz
dotfiles-7ddb8084297c5bf30db73e9b9058d71f52991901.zip
Many stylistic fixes/optimisations
In particular, limit the verbose >=2.05 test to just one file: .bashrc
Diffstat (limited to 'bash/bashrc.d')
-rw-r--r--bash/bashrc.d/completion.bash3
-rw-r--r--bash/bashrc.d/keep.bash15
-rw-r--r--bash/bashrc.d/prompt.bash47
3 files changed, 22 insertions, 43 deletions
diff --git a/bash/bashrc.d/completion.bash b/bash/bashrc.d/completion.bash
index c120878d..1246ba31 100644
--- a/bash/bashrc.d/completion.bash
+++ b/bash/bashrc.d/completion.bash
@@ -40,8 +40,11 @@ complete -A function -A variable unset
# If we have dynamic completion loading (Bash>=4.0), use it
if ((BASH_VERSINFO[0] >= 4)) ; then
+
+ # Handler tries to load appropriate completion for commands
_completion_loader() {
[[ -n $1 ]] || return
+ local compspec
compspec=$HOME/.bash_completion.d/$1.bash
[[ -f $compspec ]] || return
source "$compspec" >/dev/null 2>&1 && return 124
diff --git a/bash/bashrc.d/keep.bash b/bash/bashrc.d/keep.bash
index b1c8bea4..fb4b8bde 100644
--- a/bash/bashrc.d/keep.bash
+++ b/bash/bashrc.d/keep.bash
@@ -45,9 +45,7 @@ keep() {
# -h given; means show help
h)
- while IFS= read -r line ; do
- printf '%s\n' "$line"
- done <<EOF
+ cat <<EOF
$FUNCNAME: Keep variables and functions in shell permanently by writing them to
named scripts iterated on shell start, in \$BASHKEEP (defaults to
~/.bashkeep.d).
@@ -145,10 +143,7 @@ EOF
}
# Load any existing scripts in bashkeep
-if [[ -d ${BASHKEEP:-"$HOME"/.bashkeep.d} ]] ; then
- for bashkeep in "${BASHKEEP:-"$HOME"/.bashkeep.d}"/*.bash ; do
- [[ -e $bashkeep ]] || continue
- source "$bashkeep"
- done
- unset -v bashkeep
-fi
+for bashkeep in "${BASHKEEP:-"$HOME"/.bashkeep.d}"/*.bash ; do
+ [[ -e $bashkeep ]] && source "$bashkeep"
+done
+unset -v bashkeep
diff --git a/bash/bashrc.d/prompt.bash b/bash/bashrc.d/prompt.bash
index 0264b7f9..e61b69d5 100644
--- a/bash/bashrc.d/prompt.bash
+++ b/bash/bashrc.d/prompt.bash
@@ -1,12 +1,6 @@
# Frontend to controlling prompt
prompt() {
- # If no arguments, print the prompt strings as they are
- if ! (($#)) ; then
- declare -p PS1 PS2 PS3 PS4
- return
- fi
-
# What's done next depends on the first argument to the function
case $1 in
@@ -19,9 +13,7 @@ prompt() {
PROMPT_COMMAND='PROMPT_RETURN=$? ; history -a'
# If Bash 4.0 is available, trim very long paths in prompt
- if ((BASH_VERSINFO[0] >= 4)) ; then
- PROMPT_DIRTRIM=4
- fi
+ ((BASH_VERSINFO[0] >= 4)) && PROMPT_DIRTRIM=4
# Basic prompt shape
PS1='\u@\h:\w'
@@ -101,11 +93,8 @@ prompt() {
git)
# Bail if we're not in a work tree--or, implicitly, if we don't
# have git(1).
- local iswt
- iswt=$(git rev-parse --is-inside-work-tree 2>/dev/null)
- if [[ $iswt != true ]] ; then
- return 1
- fi
+ [[ $(git rev-parse --is-inside-work-tree 2>/dev/null) = true ]] ||
+ return
# Attempt to determine git branch, bail if we can't
local branch
@@ -113,9 +102,7 @@ prompt() {
git symbolic-ref --quiet HEAD ||
git rev-parse --short HEAD
} 2>/dev/null )
- if [[ ! -n $branch ]] ; then
- return 1
- fi
+ [[ -n $branch ]] || return
branch=${branch##*/}
# Refresh index so e.g. git-diff-files(1) is accurate
@@ -198,12 +185,8 @@ prompt() {
# Add appropriate state flags
local -a state
- if ((modified)) ; then
- state[${#state[@]}]='!'
- fi
- if ((untracked)) ; then
- state[${#state[@]}]='?'
- fi
+ ((modified)) && state[${#state[@]}]='!'
+ ((untracked)) && state[${#state[@]}]='?'
# Print the state in brackets with an svn: prefix
(IFS= ; printf '(svn:%s%s)' \
@@ -214,17 +197,13 @@ prompt() {
vcs)
local vcs
for vcs in "${PROMPT_VCS[@]:-git}" ; do
- if prompt "$vcs" ; then
- return
- fi
+ prompt "$vcs" && return
done
;;
# Show return status of previous command in angle brackets, if not zero
ret)
- if ((PROMPT_RETURN > 0)) ; then
- printf '<%u>' "$PROMPT_RETURN"
- fi
+ ((PROMPT_RETURN)) && printf '<%u>' "$PROMPT_RETURN"
;;
# Show the count of background jobs in curly brackets, if not zero
@@ -233,9 +212,12 @@ prompt() {
while read ; do
((jobc++))
done < <(jobs -p)
- if ((jobc > 0)) ; then
- printf '{%u}' "$jobc"
- fi
+ ((jobc)) && printf '{%u}' "$jobc"
+ ;;
+
+ # No argument given, print prompt strings and vars
+ '')
+ declare -p PS1 PS2 PS3 PS4
;;
# Print error
@@ -243,7 +225,6 @@ prompt() {
printf '%s: Unknown command %s\n' "$FUNCNAME" "$1" >&2
return 2
;;
-
esac
}