view dot_zshrc @ 710:8dcfa2682a75

fix: set color of completion to black
author zegervdv <zegervdv@me.com>
date Thu, 27 Oct 2022 07:25:06 +0000
parents 0a59c00d64d9
children 587765960227
line wrap: on
line source

# vim:ft=zsh

source ~/.zsh/zsh-defer.zsh

fpath=(~/.zsh/completions $fpath)

export TERM=xterm-256color
export COLORTERM=truecolor

export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8

autoload -U colors && colors

PROMPT=$'%F{#2f6f9f}%K{#f4faff}%T%f%k %F{#d71707}%m%f %F{#0b51a6}%~%b%f%k
%j ->\u00A0'

vim_ins_mode="%F{black}%K{yellow} INS %k%f"
vim_cmd_mode="%F{white}%K{red} NRM %k%f"
vim_vis_mode="%F{black}%K{blue} VIS %k%f"
vim_visline_mode="%F{black}%K{blue} VIL %k%f"
vim_rep_mode="%F{black}%K{green} REP %k%f"
vim_mode=$vim_ins_mode

function TRAPINT() {
  vim_mode=$vim_ins_mode
  return $(( 128 + $1 ))
}

function zvm_after_select_vi_mode() {
  case $ZVM_MODE in
    $ZVM_MODE_NORMAL)
      vim_mode=$vim_cmd_mode
    ;;
    $ZVM_MODE_INSERT)
      vim_mode=$vim_ins_mode
    ;;
    $ZVM_MODE_VISUAL)
      vim_mode=$vim_vis_mode
    ;;
    $ZVM_MODE_VISUAL_LINE)
      vim_mode=$vim_visline_mode
    ;;
    $ZVM_MODE_REPLACE)
      vim_mode=$vim_rep_mode
    ;;
  esac
}

autoload -Uz vcs_info add-zsh-hook
zstyle ':vcs_info:*' enable git hg

zstyle ':vcs_info:*' actionformats '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
zstyle ':vcs_info:*' formats '%F{4}%s%F{5}%F{3} @ %F{2}%b%f'
zstyle ':vcs_info:hg*:*' use-simple true

add-zsh-hook precmd vcs_info

zsh-defer -c 'RPROMPT="\${vcs_info_msg_0_} \${vim_mode}"'

bindkey -v

zmodload zsh/complist
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'k' vi-up-line-or-history
bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -M menuselect 'l' vi-forward-char

# Enter interactive search
bindkey -M menuselect '^xi' vi-insert

export CLICOLOR=1
export LS_COLORS=$(cat ~/.lscolors)

export LESS_TERMCAP_mb=$'\e[1;31m'
export LESS_TERMCAP_md=$'\e[38;2;47;111;159;48;2;244;250;255m'
export LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_se=$'\e[0m'
export LESS_TERMCAP_so=$'\e[38;2;215;23;7m'
export LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_us=$'\e[1;32m'
export GROFF_NO_SGR=1

# Options
setopt monitor
setopt auto_cd
setopt cdablevars
setopt pushd_ignore_dups
setopt interactive_comments
setopt append_history
setopt inc_append_history
setopt hist_ignore_dups
setopt hist_find_no_dups
setopt hist_reduce_blanks
setopt extended_history
setopt hist_expire_dups_first
setopt hist_verify
setopt share_history
setopt transient_rprompt
setopt prompt_subst
setopt multios
setopt correct_all
setopt autopushd
setopt pushdminus
setopt pushdsilent
setopt nobeep
setopt notify
REPORTTIME=5

zle_highlight=('paste:none')

HISTSIZE=3000
SAVEHIST=3000
HISTFILE=~/.zsh_history

# Completion
setopt complete_in_word
setopt always_to_end
setopt auto_menu
setopt auto_param_slash

# Enable completers
zstyle ':completion:*' completer _complete _approximate

zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/.zcompcache"

# file list info
zstyle ':completion:*' file-list list

# activate color-completion
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

# format on completion
zstyle ':completion:*:descriptions' format $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}'

# insert all expansions for expand completer
zstyle ':completion:*:expand:*' tag-order all-expansions
zstyle ':completion:*:history-words' list false

# activate menu
zstyle ':completion:*:history-words' menu yes

# ignore duplicate entries
zstyle ':completion:*:history-words' remove-all-dups yes
zstyle ':completion:*:history-words' stop yes

zstyle ':completion:*:matches' group 'yes'
zstyle ':completion:*' group-name ''
if [[ "$NOMENU" -eq 0 ]] ; then
  # if there are more than 5 options allow selecting from a menu
  zstyle ':completion:*' menu select=5
else
  # don't use any menus at all
  setopt no_auto_menu
fi

zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:options' auto-description '%d'

# describe options in full
zstyle ':completion:*:options' description 'yes'

# complete manual by their section
zstyle ':completion:*:manuals' separate-sections true
zstyle ':completion:*:manuals.*' insert-sections   true
zstyle ':completion:*:man:*' menu yes select

# Search path for sudo completion
zstyle ':completion:*:sudo:*' command-path /usr/local/sbin \
                                           /usr/local/bin  \
                                           /usr/sbin       \
                                           /usr/bin        \
                                           /sbin           \
                                           /bin            \
                                           /usr/X11R6/bin

# provide .. as a completion
zstyle ':completion:*' specal-dirs ..

# case insensitive path-completion
zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*'

# nvim completion
zstyle ':completion:*:*:nvim:*' ignored-patterns '*.(o|hex|elf|pyc|pdf|dup)'
zstyle ':completion:*:*:nvim:*' file-sort modification

if [ -z "$SSH_AUTH_SOCK" ]; then
  eval "$(ssh-agent)"
fi

# fg when pressing Ctrl+Z
function fancy-ctrl-z () {
  if [[ $#BUFFER -eq 0 ]]; then
    if [[ $(jobs | wc -l) -gt 0 ]]; then
      BUFFER='fg'
      zle accept-line
    fi
  else
    zle push-input
    zle clear-screen
  fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z

# Show backgrounded jobs in fzf
j() {
    jobids=$(jobs)

    if [ -z "$jobids" ]
    then
      echo "No background jobs!"
      return
    fi

    id=$(echo $jobids | fzf |  sed -nr 's/^\[([0-9]+)\].*/\1/p')

    fg %${id}
}

# Aliases
alias ls='ls --color=auto'
alias l="ls -haltr"
alias ll="ls -haltr"
alias xclip='xclip -selection clipboard'
alias view='nvim -R'

# Suffix aliases
alias -s py=nvim
alias -s sv=nvim
alias -s v=nvim
alias -s vhd=nvim
alias -s sh=nvim
# Global aliases
alias -g X='| clip'

# Exports
export XDG_CONFIG_HOME=$HOME/.config
export PATH=$HOME/bin:$PATH

export EDITOR=nvim
export HGEDITOR=nvim

export RIPGREP_CONFIG_PATH=$HOME/.config/ripgrep/ripgreprc
export BAT_CONFIG_PATH=$HOME/.config/bat/config

export PS_FORMAT='pid,pgid,state,start_time,%cpu,command'

export GPG_TTY=$(tty)

autoload -U compinit

for dump in ~/.zcompdump(N.mh+24); do
  compinit
done
compinit -C

[ -f ~/.zshrc.local ] && source ~/.zshrc.local

source $HOME/.asdf/asdf.sh
fpath=(${ASDF_DIR}/completions $fpath)

if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc" ]
then
  source "${XDG_CONFIG_HOME:-$HOME/.config}/asdf-direnv/zshrc"
fi

export SUDO_EDITOR=$(which nvim)
eval "$(direnv hook zsh)"

zstyle ':completion:*:descriptions' format '[%d]'
zstyle ':fzf-tab:*' fzf-command ftb-tmux-popup
zstyle ':fzf-tab:*' default-color $'\033[30m'
zsh-defer source ~/.zsh/fzf-tab/fzf-tab.plugin.zsh

zsh-defer source ~/.zsh/zsh-history-substring-search.zsh
export HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=cyan,fg=white'

zsh-defer source ~/.zsh/zsh-autosuggestions.zsh

zsh-defer source ~/.zsh/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh

export HISTDB_FILE="${HOME}/.histdb/zsh-history-$(hostname).db"
export HISTDB_HEIGHT="70%"
zsh-defer source ~/.zsh/zsh-histdb/sqlite-history.zsh
zsh-defer source ~/.zsh/zsh-histdb-skim/zsh-histdb-skim.zsh

zsh-defer source ~/.zsh/jq-zsh-plugin/jq.plugin.zsh

export FZF_DEFAULT_OPTS="--color=fg:#000000,bg:#fbfafc,hl:#0b51a6 \
                         --color=fg+:#000000,bg+:#dbebff,hl+:#0b51a6 \
                         --color=info:#4f9fcf,prompt:#d44950,pointer:#d71707 \
                         --color=marker:#d71707,spinner:#4f9fcf,header:#7653c1"

unix-word-rubout() {
  local WORDCHARS=$'!"#$%&\'()*+,-.:;<=>?@[\\]^_`{|}~'
  zle backward-kill-word
}

# The plugin will auto execute this zvm_after_init function
function zvm_after_init() {
  [ -f ~/.fzf.zsh  ] && source ~/.fzf.zsh
  bindkey '^r' histdb-skim-widget

  # Postpone current command to next prompt
  bindkey '^t' push-line-or-edit

  # Cut current command into killring
  bindkey '^u' backward-kill-line

  bindkey '^[[A' history-substring-search-up
  bindkey '^[[B' history-substring-search-down
  bindkey "$terminfo[kcuu1]" history-substring-search-up
  bindkey "$terminfo[kcud1]" history-substring-search-down
  bindkey '^p' history-substring-search-up
  bindkey '^n' history-substring-search-down

  bindkey '^f' autosuggest-accept

  zle -N unix-word-rubout
  bindkey '^w' unix-word-rubout
  bindkey '^.' insert-last-word
}

zsh-defer source ~/.zsh/zsh-vi-mode.zsh

_zsh_autosuggest_strategy_histdb_top_here() {
    local query="select commands.argv from
history left join commands on history.command_id = commands.rowid
left join places on history.place_id = places.rowid
where places.dir LIKE '$(sql_escape $PWD)%'
and commands.argv LIKE '$(sql_escape $1)%'
group by commands.argv order by count(*) desc limit 1"
    suggestion=$(_histdb_query "$query")
}

ZSH_AUTOSUGGEST_STRATEGY=histdb_top_here

if [ ${TMUX} ]; then
 unset zle_bracketed_paste
fi

# Deduplicate PATH
typeset -U path