- #!/bin/sh
-
-tmux capture-pane -J
-tmp=`mktemp`
-trap "rm -f $tmp" HUP PIPE INT QUIT TERM EXIT
-tmux save-buffer $tmp
-tmux delete-buffer
-session_name="fzf-selector"
-tmux has-session -t $session_name 2>/dev/null && tmux kill-session -t $session_name || :
-
-case "$1" in
-find)
- tmux new-session -d -s $session_name -c "$2" '
- find . -path "*/.git" -prune -o \( -type f -o -type d -o -type l \) -print |
- cut -c3- | fzf -m --preview="less -N -S {}" | read data
- tmux set-buffer "${data:- }"
- '
- ;;
-buf-files)
- tmux new-session -d -s $session_name -c "$2" "pe < $tmp"
- ;;
-git-files)
- tmux new-session -d -s $session_name -c "$2" '
- git status --short | fzf -m | while read item ; do
- item=$(echo $item | cut -w -f2-)
- echo -n "$item "
- done | read data
- tmux set-buffer "${data:- }"
- '
- ;;
-git-branches)
- tmux new-session -d -s $session_name -c "$2" '
- { git branch ; git branch --remote } | fzf | read data
- tmux set-buffer "${data:- }"
- '
- ;;
-git-commits)
- tmux new-session -d -s $session_name -c "$2" '
- git --no-pager log --oneline -n 20 | perl -ne "print \"@~\$n \$_\"; \$n++" |
- fzf --reverse | cut -w -f1 | read data
- tmux set-buffer "${data:- }"
- '
- ;;
-*)
- echo unknown command
- sleep 1
- exit
- ;;
-esac
-
-tmux set-option -t $session_name status off
-tmux attach-session -t $session_name
-tmux paste-buffer
-tmux delete-buffer