summary refs log tree commit diff
path: root/home/.kshrc
blob: a74be2b2e3cb38e28a4662a66ffc4b191970acdd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
set -o nounset -o noclobber -o braceexpand -o emacs
HISTFILE=~/.ksh_history HISTSIZE=5000
export GPG_TTY=$(tty)

function colonize {
	IFS=:
	print "$*"
}
systemPath=$PATH
PATH=$(colonize {,/usr{/local,/pkg,},/opt/pkg,$HOME/.local}/{s,}bin /usr/games)
CDPATH=:$HOME
export PWD

export PAGER=less
export LESS=FRX
export MANSECT=2:3:1:8:6:5:7:4:9
export EDITOR=vim
if whence nvim > /dev/null; then
	EDITOR=nvim
	alias vim=nvim
	export MANPAGER="nvim -c 'set ft=man' -"
fi
FCEDIT=$EDITOR
export GIT_EDITOR=$EDITOR
export CLICOLOR=1
export NETHACKOPTIONS='pickup_types:$!?+/=, color, DECgraphics'

alias ls='ls -p'
alias ll='ls -lh'
alias bc='bc -l'
alias date=ddate
if [[ $(uname) = 'Linux' ]]; then
	alias ls='ls --color=auto' grep='grep --color' rm='rm -I'
fi
alias gs='git status --short --branch || ls' 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'
alias private='eval "$(gpg -d ~/.private)"'

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
}

hostname=$(hostname)
whence realpath > /dev/null && HOME=$(realpath "$HOME")
function prompt {
	typeset status=$?
	typeset path title right color left cols

	[[ ${PWD#$HOME} != $PWD ]] && path="~${PWD#$HOME}" || path=$PWD
	title=${path##*/}
	right="${path}$(branch)"

	color=${fg[7]}
	if [[ -n ${SSH_CLIENT:-} ]]; then
		color=${fg[5]}
		title="${hostname%%.*}:${title}"
	fi
	(( 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)
	while (( ${#right} > (cols / 2) )); do
		right=${right#*/}
	done
	typeset -R $(( cols - 1 )) right
	print "\01\r\01${title}\01\n\01${fg[7]}${right}${fg}\r\01${left}"
}

PS1='$(prompt)'
> 2022-03-24Skip matches with ident chars on either sideJune McEnroe This fixes, for example, where the link gets placed on static regex_t regex(const char *pattern, int flags) in title.c. 2022-03-24Add The Invisible Life of Addie LaRueJune McEnroe So good, but so long. Reminded me of The Ten Thousand Doors of January at the beginning, and more of that N. K. Jemisin series about gods later. I like this interacting with gods and becoming something like one sort of thing. God, it took me a whole month (more?) to read and this is only my third book of the year :( I need some more novellas to read, but the other books I have from the library currently are also thick. 2022-03-22Source ~/.profile.local if it existsJune McEnroe 2022-03-18Publish "Addendum 2021"June McEnroe 2022-03-16Remove wcwidth portJune McEnroe DYLD_FORCE_FLAT_NAMESPACE no longer exists in macOS 12 so this approach doesn't work anymore. Moved to <https://git.causal.agency/jorts/tree/wcwidth> and compiled into <https://git.causal.agency/jorts/tree/ncurses>. 2022-03-16Remove -j4 from ./PlanJune McEnroe Plan learned to set this automatically! 2022-03-15Rewrite Linux install.sh for DebianJune McEnroe 2022-03-15Remove dashJune McEnroe