]> Sergey Matveev's repositories - dotfiles.git/blobdiff - zsh/.zshrc
Complete by git status
[dotfiles.git] / zsh / .zshrc
index 99f9b0841063581d820143e65e65f86e60bf742f..9f6f8349156e3de96b7539f9ee5688c4422e3674 100644 (file)
@@ -5,6 +5,7 @@ setopt INTERACTIVE_COMMENTS
 setopt GLOB_STAR_SHORT GLOB_DOTS EXTENDED_GLOB
 setopt NO_NOMATCH
 setopt AUTO_PUSHD PUSHD_IGNORE_DUPS
+setopt PIPE_FAIL
 
 setopt RM_STAR_SILENT
 export LISTMAX=9999
@@ -208,3 +209,38 @@ ZSH_HIGHLIGHT_STYLES[path_pathseparator]="fg=white,bold,underline"
 . ~/work/zsh-autosuggestions/zsh-autosuggestions.zsh
 ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=cyan"
 # }}}
+
+# fzf {{{
+alias -g PE="| pe"
+
+export FZF_DEFAULT_OPTS="--color=16 --info=inline --preview='less -N -S {}'"
+
+_fzf_find() {
+    find . \( -path "*/\.git" -o -fstype devfs -o -fstype procfs \) -prune \
+        -o -type d -print $@ 2>/dev/null | cut -b3-
+}
+
+export FZF_CTRL_T_COMMAND="_fzf_find -o -type f -print -o -type l -print"
+export FZF_ALT_C_COMMAND=_fzf_find
+
+_fzf_git_status() {
+    local item
+    git status --short | fzf -m --preview="" | while read item ; do
+        item=`echo $item | cut -w -f2-`
+        echo -n "$item "
+    done
+    local ret=$?
+    print
+    return $ret
+}
+fzf-git-status-widget() {
+  LBUFFER="${LBUFFER}$(_fzf_git_status)"
+  local ret=$?
+  zle reset-prompt
+  return $ret
+}
+zle -N fzf-git-status-widget
+bindkey "^Y" fzf-git-status-widget
+
+. ~/work/fzf/shell/key-bindings.zsh
+# }}}