]> Sergey Matveev's repositories - dotfiles.git/blob - tmux/bin/tmux-fzf.zsh
2eff748fa4f987497a95db223907629a1f46ff0a
[dotfiles.git] / tmux / bin / tmux-fzf.zsh
1 #!/usr/bin/env zsh
2
3 cd $2
4 set -e
5 tmp=`mktemp`
6 trap "rm -f $tmp" HUP PIPE INT QUIT TERM EXIT
7
8 case $1 in
9 (find)
10     bfs -L . -mindepth 1 \
11         -path "*/.git" -prune -o \
12         -path "*/.redo" -prune -o \
13         \( -type f -o -type d -o -type l \) -print |
14     cut -c3- | fzf -m --preview="less -N -S {}" |
15     while read fn ; do print ${(q)fn} ; done > $tmp
16     ;;
17 (git-files) git status --short | fzf -m | perl -npe 's/^\s*\S+\s+//' > $tmp ;;
18 (git-branches) { git branch ; git branch --remote } | fzf > $tmp ;;
19 (git-commits)
20     git --no-pager log --oneline -n 20 | perl -ne "print \"@~\$n \$_\"; \$n++" |
21     fzf --reverse | cut -w -f1 > $tmp
22     ;;
23 (*) echo unknown command ; sleep 1 ; exit ;;
24 esac
25
26 [ -s $tmp ] || exit
27 tmux set-buffer "`perl -npe 's/\n/ /g' $tmp`"
28 tmux paste-buffer
29 tmux delete-buffer