X-Git-Url: https://git.sev.monster/~sev/dotfiles.git/blobdiff_plain/54a85d6c6744df54af2c092234ba84baacdc5ebc..8a92a2c03c1ea03829e44bf80771a08153261e2a:/etc/zsh/.zshrc diff --git a/etc/zsh/.zshrc b/etc/zsh/.zshrc index 5b9c79a..2d3a672 100644 --- a/etc/zsh/.zshrc +++ b/etc/zsh/.zshrc @@ -7,10 +7,6 @@ setopt NO_BEEP NO_CLOBBER \ AUTO_CONTINUE LONG_LIST_JOBS \ NO_HIST_SAVE_BY_COPY HIST_IGNORE_DUPS SHARE_HISTORY HIST_REDUCE_BLANKS -### imports -autoload -Uz zmv -autoload -Uz zmathfunc && zmathfunc - ### exports ## common export EDITOR=${$(whence -p nvim vim vi micro nano emacs)[(f)1]} @@ -26,13 +22,44 @@ export SAVEHIST=1000 export PYTHONSTARTUP=${XDG_CONFIG_HOME:-~/.config}/pythonrc ## vim export VIMINIT='let$MYVIMRC=($XDG_CONFIG_HOME??($HOME."/.config"))."/vim/.vimrc"|execute"source"$MYVIMRC' -## wayland/sway -# XXX: only do this if we're actually in wayland, but without a start script -export XDG_SESSION_TYPE=wayland -export QT_QPA_PLATFORM=wayland-egl -export QT_WAYLAND_DISABLE_WINDOWDECORATION=-1 -export SDL_VIDEODRIVER=wayland -export TERMINAL=${$(whence -p konsole footclient urxvt xterm)[(f)1]} +## wayland/gui env +export XDG_SESSION_TYPE=${XDG_SESSION_TYPE:-wayland} +export QT_QPA_PLATFORM=${QT_QPA_PLATFORM:-wayland-egl} +export QT_WAYLAND_DISABLE_WINDOWDECORATION=${QT_WAYLAND_DISABLE_WINDOWDECORATION:--1} +export SDL_VIDEODRIVER=${SDL_VIDEODRIVER:-wayland} +export TERMINAL=${TERMINAL:-$(whence -p konsole footclient urxvt xterm)[(f)1]} + +### imports +autoload -Uz zmv +autoload -Uz zmathfunc && zmathfunc + +## vcs +zstyle ':vcs_info:*' enable git +#zstyle ':vcs_info:git*' check-for-changes true #too slow +zstyle ':vcs_info:git*:dotfiles' check-for-changes true +zstyle ':vcs_info:git*' check-for-staged-changes true +autoload -Uz vcs_info + +## compinit +zstyle ':completion:*' auto-description '[arg] %d' +zstyle ':completion:*' expand suffix +zstyle ':completion:*' format '# %d' +zstyle ':completion:*' group-name '' +zstyle ':completion:*' ignore-parents parent +zstyle ':completion:*' insert-unambiguous false +zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} +zstyle ':completion:*' list-prompt '%B%i%b' +zstyle ':completion:*' list-suffixes true +zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[._-]=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' +zstyle ':completion:*' menu select=1 +zstyle ':completion:*' original false +zstyle ':completion:*' select-prompt '%B%l%b' +zstyle ':completion:*' verbose true +autoload -Uz compinit +cache=${XDG_CACHE_HOME:-~/.cache}/zsh +[[ -d $cache ]] || mkdir -p $cache +compinit -d $cache/.zcompdump +unset cache ### keys bindkey -v @@ -94,6 +121,7 @@ if (( $#terminfo == 0 )) { key[$k]=$terminfo[$v] done; unset k v } + ## load history search autoload -Uz up-line-or-beginning-search down-line-or-beginning-search zle -N up-line-or-beginning-search @@ -133,7 +161,10 @@ for k v in ${(kv)a}; do done unset a k v -### abbreviation aliases +### aliases +## builtins +alias rehash='_sev_setpath; rehash' +## utils alias h='fc -l -25' alias j='jobs -l' alias l='ls -AF' @@ -142,8 +173,8 @@ if [[ "$OSTYPE" =~ '^(free|net)bsd' ]] { } else { alias ll='ls -lAFh' } -alias p=$PAGER -alias e=$EDITOR +alias p=\$PAGER +alias e=\$EDITOR alias se=sudoedit # be paranoid alias cp='cp -ip' @@ -187,15 +218,22 @@ if [[ "$(basename "$PAGER")" = "less" ]] { alias pa=$ps alias spa="sudo $ps" unset ps - -### specialized aliases -## go up directories +## git +alias gdh='git diff HEAD' +alias ga='git add' +alias gc='git commit' +alias gca='git commit --amend' +alias gp='git push' +## cd/zoxide function up { - cd $(printf '../%.0s' {1..${1:-1}}) + \cd $(printf '../%.0s' {1..${1:-1}}) } alias u=up -## zoxide -[[ -v commands[zoxide] ]] && eval "$(zoxide init zsh)" +if [[ -v commands[zoxide] ]] { + # https://github.com/ajeetdsouza/zoxide/issues/513 + eval "${$(zoxide init zsh):s#_files -/#_cd#}" + alias cd=z +} ### hooks autoload -Uz add-zsh-hook @@ -232,7 +270,7 @@ add-zsh-hook chpwd sev_chpwd ### system-specific configs and aliases case $OSTYPE; in freebsd*) - # colors + ## colors export CLICOLOR= export LS_COLORS='di=34:ln=35:so=32:pi=33:ex=31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30' @@ -242,8 +280,8 @@ case $OSTYPE; in ## install port dependencies from pkg (like pkgsrc `bmake bin-install') # XXX: should probably use package-depends where possible, breaks when - # port name is different to package name - # (eg. graphics/sdl20 == sdl2, devel/glib20 == glib2, etc) + # port name is different to package name + # (eg. graphics/sdl20 == sdl2, devel/glib20 == glib2, etc) function portpkg { case "$1" { build|run) @@ -281,38 +319,9 @@ case $OSTYPE; in function vol {} esac -### modules & styles -## vcs -zstyle ':vcs_info:*' enable git -#zstyle ':vcs_info:git*' check-for-changes true #too slow -zstyle ':vcs_info:git*:dotfiles' check-for-changes true -zstyle ':vcs_info:git*' check-for-staged-changes true -autoload -Uz vcs_info - -## compinit -zstyle ':completion:*' auto-description '[arg] %d' -zstyle ':completion:*' expand suffix -zstyle ':completion:*' format '# %d' -zstyle ':completion:*' group-name '' -zstyle ':completion:*' ignore-parents parent -zstyle ':completion:*' insert-unambiguous false -zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} -zstyle ':completion:*' list-prompt '%B%i%b' -zstyle ':completion:*' list-suffixes true -zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[._-]=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' -zstyle ':completion:*' menu select=1 -zstyle ':completion:*' original false -zstyle ':completion:*' select-prompt '%B%l%b' -zstyle ':completion:*' verbose true -autoload -Uz compinit -cache=${XDG_CACHE_HOME:-~/.cache}/zsh -[[ -d $cache ]] || mkdir -p $cache -compinit -d $cache/.zcompdump -unset cache - ### prompt autoload -Uz promptinit && promptinit prompt arrows ### load site-specific -if [[ -f ${ZDOTDIR:-~}/.zshrc.local ]] { source ${ZDOTDIR:-~}/.zshrc.local } +load-site-dotfile zshrc