]> git.sev.monster Git - dotfiles.git/blobdiff - etc/zsh/.zshrc
zshrc: catch zkbd errors and continue
[dotfiles.git] / etc / zsh / .zshrc
index 21b596486e6cf9db588a3f34fb8ce7ce2effd97a..85e3d643799b027485056962acef5be7a4477d06 100644 (file)
@@ -10,8 +10,9 @@ setopts=(
   ## 16.2.4  History
   # NOTE: NO_HIST_SAVE_BY_COPY to allow saving histfile if updating another
   #       user's histfile. this is for compatibility with zsu.
-  HIST_FCNTL_LOCK HIST_IGNORE_DUPS HIST_IGNORE_SPACE HIST_LEX_WORDS
-  HIST_NO_STORE HIST_REDUCE_BLANKS NO_HIST_SAVE_BY_COPY SHARE_HISTORY
+  EXTENDED_HISTORY HIST_FCNTL_LOCK HIST_IGNORE_ALL_DUPS HIST_IGNORE_DUPS
+  HIST_IGNORE_SPACE HIST_LEX_WORDS HIST_NO_STORE HIST_REDUCE_BLANKS
+  NO_HIST_SAVE_BY_COPY HIST_SAVE_NO_DUPS SHARE_HISTORY
   ## 16.2.6  Input/Output
   NO_CLOBBER CLOBBER_EMPTY CORRECT_ALL INTERACTIVE_COMMENTS
   HASH_EXECUTABLES_ONLY
@@ -142,12 +143,16 @@ if [[ ! -v _sev_force_zkbd && ( -v terminfo || -v termcap ) ]] {
     }
     find_keymap
     if [[ -z $keymap ]] {
-        if read -q "?Can't read terminfo. Add new zkbd keymap? [y/N]"; then
+        if (read -q "?Can't read terminfo. Add new zkbd keymap? [y/N]") {
             echo
-            autoload -Uz zkbd && zkbd
-            unfunction zkbd
+            {
+                autoload -Uz zkbd && zkbd
+            } always {
+                TRY_BLOCK_ERROR=0
+                unfunction zkbd
+            }
             find_keymap
-        fi
+        }
         echo
     }
     if [[ -n $keymap ]] {
@@ -200,6 +205,20 @@ for k v (${(kv)a}) {
 }
 unset a k v
 
+## fzf
+# bash-style reverse-search-history (i.e. reverse-i-search)
+if [[ -v commands[fzf] ]] {
+    function _history-incremental-pattern-search-fzf {
+        l=(${(f)"$(fc -li -1 0 | fzf -e -m -n 1 +s --preview-window=hidden ${BUFFER:+-q $BUFFER})"})
+        l=$(for x ("${l[@]}") { echo ${${=x}:3}; })
+        BUFFER="$l"
+    }
+    zle -N _history-incremental-pattern-search-fzf
+    bindkey '^R' _history-incremental-pattern-search-fzf
+} else {
+    bindkey '^R' history-incremental-pattern-search-backward
+}
+
 ### aliases
 ## builtins
 alias rehash='_sev_setpath; rehash'
@@ -244,10 +263,10 @@ if [[ "$OSTYPE" =~ '^freebsd' ]] {
 # ps
 if [[ -v commands[pstree] && $commands[pstree]:A:t != busybox ]] {
     # use pstree, but NOT busybox pstree because it kinda sucks
-    ps="pstree -wg3"
+    ps='pstree -wg3'
 } elif [[ "$OSTYPE" =~ '^freebsd' ]] {
-    ps="ps -aSdfxwwouser=USR -ogroup=GRP -opid,nice=NI \
-       -o%cpu,%mem,tty,stat,start=START -oetime,command"
+    ps='ps -aSdfxwwouser=USR -ogroup=GRP -opid,nice=NI \
+       -o%cpu,%mem,tty,stat,start=START -oetime,command'
 } elif [[ $commands[ps]:A:t == busybox ]] {
     # busybox compatible
     ps="ps -eouser='USR     ' -ogroup='GRP     ' \
@@ -256,8 +275,8 @@ if [[ -v commands[pstree] && $commands[pstree]:A:t != busybox ]] {
 } else {
     # XXX: untested, posix
     # TODO: support gnu ps
-    ps="ps -eouser=USR -ogroup=GRP -opid,nice=NI \
-       -opcpu=CPU -ovsz=MEM -otty,stat,etime,comm"
+    ps='ps -eouser=USR -ogroup=GRP -opid,nice=NI \
+       -opcpu=CPU -ovsz=MEM -otty,stat,etime,comm'
 }
 if [[ "$(basename "$PAGER")" = "less" ]] {
     ps="$ps | less -S"
@@ -276,14 +295,25 @@ alias svu="sudo python3 -mvenv --upgrade"
 alias g=git
 alias gd='git diff'
 alias gdh='git diff HEAD'
+alias gdp='git diff HEAD\^'
+alias gds='git diff --staged'
 alias ga='git add'
 alias ga.='git add .'
+alias gai='git add -i'
+alias gap='git add -p'
 alias gc='git commit'
 alias gca='git commit --amend'
 alias gp='git push'
 alias gu='git pull'
 alias gl='git log'
 alias gt='git tree' # from gitconfig
+alias gsh='git show'
+alias gshn='git show --name-status'
+alias gst='git status'
+alias gsts='git status --short'
+alias gs='git stash'
+alias gsp='git stash pop'
+alias grc='git rebase --continue'
 ## cd/zoxide
 function up {
     \cd $(printf '../%.0s' {1..${1:-1}})
@@ -293,6 +323,7 @@ if [[ -v commands[zoxide] ]] {
     # https://github.com/ajeetdsouza/zoxide/issues/513
     eval "${$(zoxide init zsh):s#_files -/#_cd#}"
     alias cd=z
+    alias z-='z -'
 }
 alias cd..=up
 ## dotfiles
@@ -401,5 +432,8 @@ esac
 autoload -Uz promptinit && promptinit
 prompt arrows
 
+### plugins
+load-plugins zshrc
+
 ### load site-specific
 load-site-dotfile zshrc
This page took 0.047046 seconds and 4 git commands to generate.