# -*- mode: sh; -*-
source $ZPLUG_HOME/init.zsh
zplug "zsh-users/zsh-completions"
zplug "Tarrasch/zsh-autoenv", as:plugin
zplug "clvv/fasd", hook-build:"PREFIX=$HOME make install"
zplug "caarlos0/zsh-open-pr", as:plugin
if [[ -n $commands[nix-env] ]]
then
zplug "spwhitt/nix-zsh-completions", as:plugin
fpath=($fpath $ZPLUG_REPOS/spwhitt/nix-zsh-completions)
fi
zplug "gerges/oh-my-zsh-jira-plus", as:plugin, if:"[[ ${(SN)HOST%spotcap} ]]"
zplug "lukechilds/zsh-better-npm-completion", if:"[[ -n $commands[npm] ]]", nice:10
zplug "hlissner/zsh-autopair", nice:10
HISTSIZE=3000
SAVEHIST=10000
HISTFILE=${XDG_CACHE_HOME:=$HOME/.cache}/zsh/history
WORDCHARS=${${WORDCHARS//[-.]}//[\/]}
if [[ ${path[(I)$HOME/bin ]} ]]
then
path+=($HOME/bin)
fi
if [[ ${path[(I)$HOME/.local/bin ]} ]]
then
path+=($HOME/.local/bin)
fi
if [[ -d /opt/local/share/zsh/site-functions ]]
then
fpath+=(/opt/local/share/zsh/site-functions)
fi
export EDITOR=emacsclient
alias ec=emacsclient
alias open-project=projectile
_emacs_function () {
emacsclient -e "($1 \"$2\")" > /dev/null
}
projectile () {
_emacs_function projectile-switch-project-by-name ${1:-$PWD}
}
yarn () {
PREFIX=$HOME/.local command yarn "$@"
}
ls='\ls'
gnu_ls_options="-v --group-directories-first --color=auto"
gnu_ls_isodate="--time-style=long-iso"
bsd_ls_options="-p"
bsd_ls_isodate="-D '%F %k:%M'"
case $OSTYPE in
darwin*)
if [[ -n $commands[gls] ]]
then
ls='\gls'
ls_options=$gnu_ls_options
ls_isodate=$gnu_ls_isodate
else
ls_options=$bsd_ls_options
ls_isodate=$bsd_ls_isodate
fi
;;
freebsd*)
ls_options=$bsd_ls_options
ls_isodate=$bsd_ls_isodate
;;
linux-gnu)
ls_options=$gnu_ls_options
ls_isodate=$gnu_ls_isodate
;;
esac
alias l="${ls} ${ls_options} -Bp"
alias l1="${ls} ${ls_options} -1"
alias ls="${ls} ${ls_options} -hF"
alias la="${ls} ${ls_options} -hA"
alias ll="${ls} ${ls_options} ${ls_isodate} -hl"
alias lal="ll -A"
alias lla="lal"
alias llr="ll -t"
zmodload zsh/terminfo
bindkey '\e[3~' delete-char
bindkey '\C-hd' describe-key-briefly
backward-argument () {
local WORDCHARS="\!\`~#@$%^&*()-_=+[{]}\|;:,<.>/?\'\""
zle backward-word
}
forward-argument () {
local WORDCHARS="\!\`~#@$%^&*()-_=+[{]}\|;:,<.>/?\'\""
zle forward-word
}
kill-argument () {
local WORDCHARS="\!\`~#@$%^&*()-_=+[{]}\|;:,<.>/?\'\""
zle backward-argument
zle kill-word
}
zle -N backward-argument
zle -N forward-argument
zle -N kill-argument
bindkey '\e^b' backward-argument
bindkey '\e^f' forward-argument
bindkey '\e^k' kill-argument
ds () {
du -hd1 $1 | sort -h
}
zle -C hist-complete complete-word _generic
zstyle ':completion:hist-complete:*' completer _history
bindkey '\e ' hist-complete
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' '+m:{A-Z}={a-z}'
zstyle ':completion:*' completer _expand _complete _match
if [[ -z $SSH_AUTH_SOCK && $commands[ssh-agent] ]]
then
eval $(ssh-agent)
fi
if zplug check Tarrasch/zsh-autoenv
then
AUTOENV_FILE_ENTER=.envrc
AUTOENV_HANDLE_LEAVE=1
AUTOENV_LOOK_UPWARDS=1
fi
# Then, source plugins and add commands to $PATH
zplug load
# General configuration
setopt auto_cd # Change directories without `cd`
if zplug check zsh-users/zsh-completions
then
autoload -U compinit && compinit
fi
if [[ -n $commands[hub] ]]
then
alias git=hub
alias gh=hub
fi
if [[ -n $commands[lunchy] ]]
then
LUNCHY_DIR=$(dirname $(gem which lunchy))/../extras
if [ -f $LUNCHY_DIR/lunchy-completion.zsh ]; then
. $LUNCHY_DIR/lunchy-completion.zsh
fi
fi
if [[ $TERM == "dumb" ]]
then
unsetopt zle
PROMPT="> "
else
unset RPROMPT
# show username@host if logged in through SSH
[[ "$SSH_CONNECTION" != '' ]] && prompt_pure_username=' %F{242}%n@%m%f'
# show username@host if root, with username in white
[[ $UID -eq 0 ]] && prompt_pure_username=' %F{white}%n%f%F{242}@%m%f'
setopt prompt_subst
setopt prompt_cr
PROMPT='%F{blue}%~%f${prompt_pure_username}
%(?.%F{magenta}.%F{red})>%f '
## From https://github.com/robbyrussell/oh-my-zsh/blob/71deb74552d54630d99ae1db3647ebed7b3bc735/lib/termsupport.zsh
# Keep Apple Terminal.app's current working directory updated
# Based on this answer: http://superuser.com/a/315029
# With extra fixes to handle multibyte chars and non-UTF-8 locales
if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then
# Emits the control sequence to notify Terminal.app of the cwd
# Identifies the directory using a file: URI scheme, including
# the host name to disambiguate local vs. remote paths.
function update_terminalapp_cwd() {
emulate -L zsh
# Percent-encode the pathname.
# Percent-encode the pathname.
local URL_PATH=''
{
# Use LC_CTYPE=C to process text byte-by-byte.
local i ch hexch LC_CTYPE=C
for ((i = 1; i <= ${#PWD}; ++i)); do
ch="$PWD[i]"
if [[ "$ch" =~ [/._~A-Za-z0-9-] ]]; then
URL_PATH+="$ch"
else
hexch=$(printf "%02X" "'$ch")
URL_PATH+="%$hexch"
fi
done
}
[[ $? != 0 ]] && return 1
printf '\e]7;%s\a' "file://$HOST$URL_PATH"
}
# Use a precmd hook instead of a chpwd hook to avoid contaminating output
precmd_functions+=(update_terminalapp_cwd)
# Run once to get initial cwd set
update_terminalapp_cwd
fi
function set_window_title { printf '\e]2;%s\a' "$1" }
function update_window_title {
if [[ -n "$SSH_CONNECTION" || $UID -eq 0 ]]
then
set_window_title "$USER@$HOST"
else
set_window_title ""
fi
}
precmd_functions+=(update_window_title)
fi
if zplug check clvv/fasd
then
if [[ -n $commands[fasd] ]]
then
_FASD_DATA="$HOME/.cache/zsh/fasd-data"
source =fasd
fasd_cache="$HOME/.fasd-init-zsh"
if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
fasd --init posix-alias zsh-hook zsh-ccomp zsh-ccomp-install >| "$fasd_cache"
fi
source "$fasd_cache"
unset fasd_cache
else
echo "no fasd"
fi
fi
unsetopt flow_control # Let me use ^S and ^Q
tag-zsh/config/zsh/zshrc (view raw)