Refactor zsh config

This commit is contained in:
Henrik Lissner 2017-10-03 19:55:26 +02:00
parent 82f7a1fd54
commit 05750535b9
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
4 changed files with 42 additions and 56 deletions

View file

@ -2,10 +2,10 @@
# zshrc # zshrc
# By Henrik Lissner <henrik@lissner.net> # By Henrik Lissner <henrik@lissner.net>
repo "tarjoilija/zgen" "$HOME/.zgen" if is-interactive; then
repo "tarjoilija/zgen" "$HOME/.zgen"
source "$HOME/.zgen/zgen.zsh" source "$HOME/.zgen/zgen.zsh"
if ! zgen saved; then if ! zgen saved; then
info "Creating zgen save" info "Creating zgen save"
cache-clear cache-clear
@ -20,9 +20,8 @@ if ! zgen saved; then
fi fi
zgen save zgen save
fi fi
if is-interactive; then
load shell/+zsh/completion.zsh load shell/+zsh/completion.zsh
load shell/+zsh/keybinds.zsh load shell/+zsh/keybinds.zsh
load shell/+zsh/prompt.zsh load shell/+zsh/prompt.zsh

View file

@ -1,3 +1,6 @@
## Plugin config
AUTOPAIR_SPC_WIDGET=magic-space
## General ## General
# Treat these characters as part of a word. # Treat these characters as part of a word.
WORDCHARS='_-*?[]~&.;!#$%^(){}<>' WORDCHARS='_-*?[]~&.;!#$%^(){}<>'
@ -20,9 +23,9 @@ unsetopt HUP # Don't kill jobs on shell exit.
unsetopt CHECK_JOBS # Don't report on jobs when shell exit. unsetopt CHECK_JOBS # Don't report on jobs when shell exit.
## History ## History
HISTFILE="$CACHE_DIR/zhistory" HISTFILE="${CACHE_DIR}/zhistory"
HISTSIZE=10000 # Max events to store in internal history. HISTSIZE=1000 # Max events to store in internal history.
SAVEHIST=10000 # Max events to store in history file. SAVEHIST=1000 # Max events to store in history file.
setopt BANG_HIST # Don't treat '!' specially during expansion. setopt BANG_HIST # Don't treat '!' specially during expansion.
setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format. setopt EXTENDED_HISTORY # Write the history file in the ':start:elapsed;command' format.

View file

@ -1,7 +1,7 @@
# Ran into an issue where the surround module wasn't working if KEYTIMEOUT is <= 10. # The surround module wasn't working if KEYTIMEOUT was <= 10. Specifically,
# Specifically, (delete|change)-surround immediately abort into insert mode if # (delete|change)-surround immediately abort into insert mode if KEYTIMEOUT <=
# KEYTIMEOUT <= 8, and if <= 10, then add-surround would do the same. At 11, all these # 8. If <= 10, then add-surround does the same. At 11, all these issues vanish.
# issues vanish. Very strange! # Very strange!
export KEYTIMEOUT=15 export KEYTIMEOUT=15
autoload -U is-at-least autoload -U is-at-least
@ -53,7 +53,6 @@ bindkey -M viins '^a' beginning-of-line
bindkey -M viins '^e' end-of-line bindkey -M viins '^e' end-of-line
bindkey -M viins '^d' push-line-or-edit bindkey -M viins '^d' push-line-or-edit
bindkey -M viins ' ' magic-space
bindkey -M vicmd '^k' kill-line bindkey -M vicmd '^k' kill-line
bindkey -M vicmd 'H' run-help bindkey -M vicmd 'H' run-help
@ -124,18 +123,3 @@ bindkey -M viins '^X,' _history-complete-newer \
'^X/' _history-complete-older \ '^X/' _history-complete-older \
'^X`' _bash_complete-word '^X`' _bash_complete-word
# In-place search insertion
autoload -Uz narrow-to-region
function _history-incremental-preserving-pattern-search-backward
{
local state
MARK=CURSOR # magick, else multiple ^R don't work
narrow-to-region -p "$LBUFFER${BUFFER:+>>}" -P "${BUFFER:+<<}$RBUFFER" -S state
zle end-of-history
zle history-incremental-pattern-search-backward
narrow-to-region -R state
}
zle -N _history-incremental-preserving-pattern-search-backward
bindkey "^R" _history-incremental-preserving-pattern-search-backward
bindkey -M isearch "^R" history-incremental-pattern-search-backward
bindkey "^S" history-incremental-pattern-search-forward

View file

@ -1,5 +1,5 @@
#!/usr/bin/env zsh #!/usr/bin/env zsh
# Based off Pure <https://github.com/sindresorhus/pure> # Loosely based off Pure <https://github.com/sindresorhus/pure>
_strlen() { echo ${#${(S%%)1//$~%([BSUbfksu]|([FB]|){*})/}}; } _strlen() { echo ${#${(S%%)1//$~%([BSUbfksu]|([FB]|){*})/}}; }
@ -7,9 +7,6 @@ _strlen() { echo ${#${(S%%)1//$~%([BSUbfksu]|([FB]|){*})/}}; }
prompt_git_dirty() { prompt_git_dirty() {
is-callable git || return is-callable git || return
# disable auth prompting on git 2.3+
GIT_TERMINAL_PROMPT=0
# check if we're in a git repo # check if we're in a git repo
[[ "$(command git rev-parse --is-inside-work-tree 2>/dev/null)" == "true" ]] || return [[ "$(command git rev-parse --is-inside-work-tree 2>/dev/null)" == "true" ]] || return
# check if it's dirty # check if it's dirty
@ -27,12 +24,16 @@ prompt_git_dirty() {
prompt_hook_precmd() { prompt_hook_precmd() {
vcs_info # get git info vcs_info # get git info
# Newline before prompt, except on init # Newline before prompt, except on init
[[ -n "$_DONE" ]] && print ""; _DONE=1 [[ $PROMPT_DONE ]] && print ""; PROMPT_DONE=1
} }
## Initialization ###################### ## Initialization ######################
prompt_init() { prompt_init() {
ZLE_RPROMPT_INDENT=0 # prevent the extra space in the rprompt # prevent the extra space in the rprompt
[[ $EMACS ]] || ZLE_RPROMPT_INDENT=0
# prevent percentage showing up
# if output doesn't end with a newline
export PROMPT_EOL_MARK=
# prompt_opts=(cr subst percent) # prompt_opts=(cr subst percent)
setopt PROMPTSUBST setopt PROMPTSUBST
@ -55,11 +56,10 @@ prompt_init() {
zstyle ':vcs_info:*' enable git zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:*' use-simple true zstyle ':vcs_info:*' use-simple true
zstyle ':vcs_info:*' max-exports 2 zstyle ':vcs_info:*' max-exports 2
zstyle ':vcs_info:git*' formats ':%b' zstyle ':vcs_info:git*' formats '%b'
zstyle ':vcs_info:git*' actionformats ':%b (%a)' zstyle ':vcs_info:git*' actionformats '%b (%a)'
# show username@host if logged in through SSH # show username@host if logged in through SSH
prompt_username=
[[ $SSH_CONNECTION ]] && prompt_username='%F{magenta}%n%F{244}@%m ' [[ $SSH_CONNECTION ]] && prompt_username='%F{magenta}%n%F{244}@%m '
RPROMPT='%F{cyan}%~ %F{magenta}${vcs_info_msg_0_}$(prompt_git_dirty)%f' RPROMPT='%F{cyan}%~ %F{magenta}${vcs_info_msg_0_}$(prompt_git_dirty)%f'