Refactor zsh config
This commit is contained in:
parent
82f7a1fd54
commit
05750535b9
|
@ -2,8 +2,8 @@
|
||||||
# zshrc
|
# zshrc
|
||||||
# By Henrik Lissner <henrik@lissner.net>
|
# By Henrik Lissner <henrik@lissner.net>
|
||||||
|
|
||||||
|
if is-interactive; then
|
||||||
repo "tarjoilija/zgen" "$HOME/.zgen"
|
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"
|
||||||
|
@ -22,7 +22,6 @@ if ! zgen saved; then
|
||||||
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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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'
|
||||||
|
|
Loading…
Reference in a new issue