1
0
Fork 0

add ability to open files, tags in new window and splits. Add ability to open several files at once

This commit is contained in:
Andrey Orst 2018-09-25 13:57:03 +03:00
parent a753c1a89a
commit b72684bffd

View file

@ -133,35 +133,60 @@ define-command -hidden fzf-tag %{
}
}
define-command -hidden fzf-cd %{
fzf "change-directory $1" "(echo .. && find \( -path '*/.svn*' -o -path '*/.git*' \) -prune -o -type d -print)"
fzf "cd $1" "(echo .. && find \( -path '*/.svn*' -o -path '*/.git*' \) -prune -o -type d -print)"
}
define-command -hidden fzf -params 2 %{ evaluate-commands %sh{
callback=$1
items_command=$2
tmp=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-fzf.XXXXXX))
exec=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-exec.XXXXXX))
if [ ! -z "${kak_client_env_TMUX}" ]; then
cmd="$items_command | fzf-tmux -d 15 --color=16 > $tmp"
elif [ ! -z "${kak_opt_termcmd}" ]; then
path=$(pwd)
cmd="$kak_opt_termcmd \"sh -c 'cd $path && $items_command | fzf --color=16 > $tmp'\""
else
echo "fail termcmd option is not set"
fi
# 'tr' - if '(cmd1 && cmd2) | fzf' was passed 'awk' will return '(cmd1'
items_executable=$(echo $items_command | awk '{print $1}' | tr '(' ' ')
if [ -z $(command -v $items_executable) ]; then
echo "fail \'$items_executable' executable not found"
exit
fi
echo "echo eval -client $kak_client \"$callback\" | kak -p $kak_session" > $exec
chmod 755 $exec
tmp=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-fzf.XXXXXX))
exec=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-exec.XXXXXX))
if [ ! -z "${kak_client_env_TMUX}" ]; then
cmd="$items_command | fzf-tmux -d 15 --color=16 -m --expect ctrl-w --expect ctrl-v --expect ctrl-s > $tmp"
[ "${callback% *}" != "cd" ] && echo "echo -markup '{Information}<c-w>: new window, <c-v>: vertical split, <c-s>: horizontal split'"
elif [ ! -z "${kak_opt_termcmd}" ]; then
path=$(pwd)
cmd="$kak_opt_termcmd \"sh -c 'cd $path && $items_command | fzf --color=16 -m --expect ctrl-w > $tmp'\""
[ "${callback% *}" != "cd" ] && echo "echo -markup '{Information}<c-w>: new window'"
else
echo "fail termcmd option is not set"
fi
(
eval "$cmd"
(while read file; do
if [ -s $tmp ]; then
(
read action
if [ "${callback% *}" != "cd" ]; then
case $action in
"ctrl-w")
wincmd="x11-new"
[ ! -z "${kak_client_env_TMUX}" ] && wincmd="tmux-new-window" ;;
"ctrl-s")
wincmd="tmux-new-vertical" ;;
"ctrl-v")
wincmd="tmux-new-horizontal" ;;
*)
wincmd= ;;
esac
callback="$wincmd $callback"
fi
echo "echo eval -client $kak_client \"$callback\" | kak -p $kak_session" > $exec
chmod 755 $exec
while read file; do
$exec $file
done) < $tmp
done
) < $tmp
fi
rm $tmp
rm $exec
) > /dev/null 2>&1 < /dev/null &
@ -173,6 +198,7 @@ define-command -hidden fzf-buffer %{ evaluate-commands %sh{
delbuf=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-delbuf.XXXXXX))
buffers=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-buffers.XXXXXX))
items_command="echo $kak_buflist | tr ' ' '\n' | sort"
if [ ! -z "${kak_client_env_TMUX}" ]; then
cmd="$items_command | fzf-tmux -d 15 --color=16 --expect ctrl-d > $tmp"
elif [ ! -z "${kak_opt_termcmd}" ]; then
@ -182,6 +208,9 @@ define-command -hidden fzf-buffer %{ evaluate-commands %sh{
else
echo "fail termcmd option is not set"
fi
echo "echo -markup '{Information}<c-d>: delete selected buffer'"
echo "echo eval -client $kak_client \"buffer \$1\" | kak -p $kak_session" > $setbuf
echo "echo eval -client $kak_client \"delete-buffer \$1\" | kak -p $kak_session" > $delbuf
echo "echo eval -client $kak_client \"fzf-buffer \" | kak -p $kak_session" >> $delbuf
@ -192,7 +221,7 @@ define-command -hidden fzf-buffer %{ evaluate-commands %sh{
if [ -s $tmp ]; then
( read action
read buf
if [ "$action" == "ctrl-d" ]; then
if [ "$action" = "ctrl-d" ]; then
$setbuf $kak_bufname
$delbuf $buf
else