diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc index b9f7dfa..8c6ba88 100644 --- a/.config/zsh/.zshrc +++ b/.config/zsh/.zshrc @@ -3,87 +3,59 @@ autoload -U colors && colors -# Options -setopt auto_cd +# Set up the prompt +autoload -Uz promptinit +promptinit +prompt adam1 -# History -setopt EXTENDED_HISTORY -setopt SHARE_HISTORY -setopt APPEND_HISTORY -# setopt INC_APPEND_HISTORY # unexpected last result with multiple open terminals -setopt HIST_REDUCE_BLANKS -HISTSIZE=10000 -SAVEHIST=10000 -HISTFILE=$XDG_CACHE_HOME/zshhistory +setopt histignorealldups sharehistory -# Corrections -setopt CORRECT -setopt CORRECT_ALL +# Use emacs keybindings even if our EDITOR is set to vi +bindkey -e -# Completion -fpath=($ZDOTDIR/completions $fpath) -autoload -U compinit -zstyle ':completion:*' menu select -zmodload zsh/complist -compinit -_comp_options+=(globdots) # include hidden files - -# Keybindings -bindkey -e # force Emacs state, even with $EDITOR=nvim bindkey "^[[1;5C" forward-word bindkey "^[[1;5D" backward-word bindkey -s '^L' '^Uclear^M' # clear using alias -# edit line in editor w/ ctrl-k (from Luke Smith's .zshrc) autoload edit-command-line; zle -N edit-command-line bindkey '^k' edit-command-line +# History +HISTSIZE=1000 +SAVEHIST=1000 +setopt HIST_REDUCE_BLANKS +HISTFILE=$XDG_CACHE_HOME/zshhistory + +# Auto cd +setopt auto_cd + # Aliases [ -f "$E_SCRIPTS_DIR/aliases.sh" ] && source "$E_SCRIPTS_DIR/aliases.sh" - # zsh-specific aliases # clear zsh history: Adapted from Novimatrem: https://gitlab.com/Novimatrem/clear-bash-history alias czh="echo 'Fully clearing history, then exiting...' && cat /dev/null > $XDG_CACHE_HOME/zshhistory && history -p && exit" # Prompt -PROMPT="%K{238}%F{104}%n%f%k%K{238}%F{104}@%f%k%K{238}%F{104}%m%f%k%K{238}%F{104}:%2~> %f%k" +# PROMPT="%K{238}%F{104}%n%f%k%K{238}%F{104}@%f%k%K{238}%F{104}%m%f%k%K{238}%F{104}:%2~> %f%k" -# Plugins! I try to keep as few as possible -zplugin-git(){ - if [[ ! -d ~/.config/zsh/$1 ]]; then - git clone $2 ~/.config/zsh/$1 - else - [ -z $UPDATESZ ] || git -C ~/.config/zsh/$1 pull - fi -} +# Use modern completion system +autoload -Uz compinit +compinit -# TODO without starting a new shell in shell -zplugin-git-update(){ - UPDATESZ=1 zsh -} - -# autocomplete -zplugin-git autocomplete https://github.com/marlonrichert/zsh-autocomplete -source $ZDOTDIR/autocomplete/zsh-autocomplete.plugin.zsh -zstyle ':autocomplete:*' min-input 1 -zstyle ':autocomplete:*' min-delay 0.25 - -# autopair -zplugin-git autopair https://github.com/hlissner/zsh-autopair -source ~/.config/zsh/autopair/autopair.zsh -autopair-init - -autoload -Uz vcs_info -precmd_vcs_info() { vcs_info } -precmd_functions+=( precmd_vcs_info ) -setopt prompt_subst -RPROMPT=\$vcs_info_msg_0_ -zstyle ':vcs_info:git:*' formats '%F{240}(%b)%r%f' -zstyle ':vcs_info:*' enable git - -# Direnv -eval "$(direnv hook zsh)" - -# This must be placed at the end -[ -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ] && source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh +zstyle ':completion:*' auto-description 'specify: %d' +zstyle ':completion:*' completer _expand _complete _correct _approximate +zstyle ':completion:*' format 'Completing %d' +zstyle ':completion:*' group-name '' +zstyle ':completion:*' menu select=2 +eval "$(dircolors -b)" +zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} +zstyle ':completion:*' list-colors '' +zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s +zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*' +zstyle ':completion:*' menu select=long +zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s +zstyle ':completion:*' use-compctl false +zstyle ':completion:*' verbose true +zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' +zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'