summary refs log tree commit diff
path: root/home/.kshrc
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-08-15 15:30:40 -0400
committerJune McEnroe <june@causal.agency>2018-08-15 15:30:40 -0400
commite9092343671ab798e0bc16e8b467e514774b0c61 (patch)
tree61a71b0e0871f8fd58b15a90325310298ee017e2 /home/.kshrc
parentRemove scrap (diff)
downloadsrc-e9092343671ab798e0bc16e8b467e514774b0c61.tar.gz
src-e9092343671ab798e0bc16e8b467e514774b0c61.zip
Add kshrc
zsh is not really my aesthetic, so I'm trying out ksh.
Diffstat (limited to 'home/.kshrc')
-rw-r--r--home/.kshrc82
1 files changed, 82 insertions, 0 deletions
diff --git a/home/.kshrc b/home/.kshrc
new file mode 100644
index 00000000..8207ef19
--- /dev/null
+++ b/home/.kshrc
@@ -0,0 +1,82 @@
+set -o nounset -o noclobber -o braceexpand -o vi
+HISTFILE=~/.ksh_history HISTSIZE=5000
+
+function colon {
+	IFS=:
+	print "$*"
+}
+system_path=$PATH
+PATH=$(colon {,/usr{/local,/pkg,},$HOME/.local}/{s,}bin /usr/games)
+
+export PAGER=less MANPAGER=less EDITOR=vim GIT_EDITOR=vim
+if type nvim > /dev/null; then
+	EDITOR=nvim GIT_EDITOR=nvim MANPAGER="nvim -c 'set ft=man' -"
+	alias vim=nvim
+fi
+export GPG_TTY=$(tty)
+
+export CLICOLOR=1
+# TODO: GNU aliases.
+
+export NETHACKOPTIONS='
+	name:June, role:Valkyrie, race:Human, gender:female, align:neutral,
+	dogname:Moro, catname: Baron, pickup_types:$!?+/=,
+	color, DECgraphics
+'
+
+alias ll='ls -lh'
+alias gs='git status --short --branch' gd='git diff'
+alias gsh='git show' gl='git log --graph --pretty=log'
+alias gco='git checkout' gb='git branch' gm='git merge' gst='git stash'
+alias ga='git add' gmv='git mv' grm='git rm'
+alias gc='git commit' gca='gc --amend' gt='git tag'
+alias gp='git push' gu='git pull' gf='git fetch'
+alias gr='git rebase' gra='gr --abort' grc='gr --continue' grs='gr --skip'
+alias rand='openssl rand -base64 33'
+
+function colors {
+	typeset sgr0=sgr0 setaf=setaf
+	[[ -f /usr/share/misc/termcap ]] && sgr0=me setaf=AF
+	set -A fg \
+		$(tput $sgr0) \
+		$(tput $setaf 1) \
+		$(tput $setaf 2) \
+		$(tput $setaf 3) \
+		$(tput $setaf 4) \
+		$(tput $setaf 5) \
+		$(tput $setaf 6) \
+		$(tput $setaf 7)
+}
+colors
+
+function branch {
+	typeset git=.git head
+	[[ -d $git ]] || git=../.git
+	[[ -d $git ]] || return
+	read head < $git/HEAD
+	if [[ $head = ref:* ]]; then
+		print ":${head#*/*/}"
+	else
+		typeset -L 7 head
+		print ":$head"
+	fi
+}
+
+function prompt {
+	typeset status=$? title left right path color cols
+
+	[[ ${PWD#$HOME} != $PWD ]] && path="~${PWD#$HOME}" || path=$PWD
+	title=${path##*/}
+	right="$path$(branch)"
+
+	[[ -n ${SSH_CLIENT:-} ]] && color=${fg[5]} || color=${fg[7]}
+	(( status )) && color=${fg[1]}
+	left="\01$color\01\$\01$fg\01 "
+
+	[[ $TERM = xterm* ]] && title="\033]0;$title\07" || title=''
+	[[ -n ${COLUMNS:-} ]] && cols=$COLUMNS || cols=$(tput cols)
+	typeset -R $(( cols / 2 )) right
+	typeset -R $(( cols - 1 )) right
+	print "\01\r\01$title\01\n\01${fg[7]}\01$right\01$fg\01\r$left"
+}
+PS1='$(prompt)'