use tabs for indentation
This commit is contained in:
parent
7cde9989b3
commit
186f44ab9b
1 changed files with 170 additions and 168 deletions
338
rc/fzf.kak
338
rc/fzf.kak
|
@ -44,7 +44,7 @@ Supported tools:
|
||||||
universal-ctags: ""readtags""
|
universal-ctags: ""readtags""
|
||||||
|
|
||||||
Default arguments:
|
Default arguments:
|
||||||
""readtags -l | cut -f1 | sort -u""
|
""readtags -l | cut -f1 | sort -u""
|
||||||
" \
|
" \
|
||||||
str fzf_tag_command "readtags"
|
str fzf_tag_command "readtags"
|
||||||
|
|
||||||
|
@ -70,204 +70,206 @@ Best used with mapping like:
|
||||||
fzf-mode %{ evaluate-commands 'enter-user-mode fzf' }
|
fzf-mode %{ evaluate-commands 'enter-user-mode fzf' }
|
||||||
|
|
||||||
define-command -hidden fzf-file %{
|
define-command -hidden fzf-file %{
|
||||||
evaluate-commands %sh{
|
evaluate-commands %sh{
|
||||||
if [ -z $(command -v $kak_opt_fzf_file_command) ]; then
|
if [ -z $(command -v $kak_opt_fzf_file_command) ]; then
|
||||||
echo "echo -markup '{Information}''$kak_opt_fzf_file_command'' is not installed. Falling back to ''find'''"
|
echo "echo -markup '{Information}''$kak_opt_fzf_file_command'' is not installed. Falling back to ''find'''"
|
||||||
kak_opt_fzf_file_command="find"
|
kak_opt_fzf_file_command="find"
|
||||||
fi
|
fi
|
||||||
case $kak_opt_fzf_file_command in
|
case $kak_opt_fzf_file_command in
|
||||||
find)
|
find)
|
||||||
cmd="find -type f"
|
cmd="find -type f"
|
||||||
;;
|
;;
|
||||||
ag)
|
ag)
|
||||||
cmd="ag -l -f --hidden --one-device . "
|
cmd="ag -l -f --hidden --one-device . "
|
||||||
;;
|
;;
|
||||||
rg)
|
rg)
|
||||||
cmd="rg -L --hidden --files"
|
cmd="rg -L --hidden --files"
|
||||||
;;
|
;;
|
||||||
find*|ag*|rg*)
|
find*|ag*|rg*)
|
||||||
cmd=$kak_opt_fzf_file_command
|
cmd=$kak_opt_fzf_file_command
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "echo -markup '{Information}$kak_opt_fzf_file_command is not supported by the script. fzf.kak may not work as you expect."
|
echo "echo -markup '{Information}$kak_opt_fzf_file_command is not supported by the script. fzf.kak may not work as you expect."
|
||||||
cmd=$kak_opt_fzf_file_command
|
cmd=$kak_opt_fzf_file_command
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
eval echo 'fzf \"edit \$1\" \"$cmd\"'
|
eval echo 'fzf \"edit \$1\" \"$cmd\"'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
define-command -hidden fzf-git %{
|
define-command -hidden fzf-git %{
|
||||||
evaluate-commands %sh{
|
evaluate-commands %sh{
|
||||||
case $kak_opt_fzf_git_command in
|
case $kak_opt_fzf_git_command in
|
||||||
git)
|
git)
|
||||||
cmd="git ls-tree --name-only -r HEAD"
|
cmd="git ls-tree --name-only -r HEAD"
|
||||||
;;
|
;;
|
||||||
git*)
|
git*)
|
||||||
cmd=$kak_opt_fzf_git_command
|
cmd=$kak_opt_fzf_git_command
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "echo -markup '{Information}$kak_opt_fzf_git_command vcs is not supported by the script. fzf.kak may not work as you expect."
|
echo "echo -markup '{Information}$kak_opt_fzf_git_command vcs is not supported by the script. fzf.kak may not work as you expect."
|
||||||
cmd=$kak_opt_fzf_git_command
|
cmd=$kak_opt_fzf_git_command
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
eval echo 'fzf \"edit \$1\" \"$cmd\"'
|
eval echo 'fzf \"edit \$1\" \"$cmd\"'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
define-command -hidden fzf-tag %{
|
define-command -hidden fzf-tag %{
|
||||||
evaluate-commands %sh{
|
evaluate-commands %sh{
|
||||||
case $kak_opt_fzf_tag_command in
|
case $kak_opt_fzf_tag_command in
|
||||||
readtags)
|
readtags)
|
||||||
cmd="readtags -l | cut -f1 | sort -u"
|
cmd="readtags -l | cut -f1 | sort -u"
|
||||||
;;
|
;;
|
||||||
readtags*)
|
readtags*)
|
||||||
cmd=$kak_opt_fzf_tag_command
|
cmd=$kak_opt_fzf_tag_command
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "echo -markup '{Information}$kak_opt_fzf_tag_command is not supported by the script. fzf.kak may not work as you expect."
|
echo "echo -markup '{Information}$kak_opt_fzf_tag_command is not supported by the script. fzf.kak may not work as you expect."
|
||||||
cmd=$kak_opt_fzf_tag_command
|
cmd=$kak_opt_fzf_tag_command
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
eval echo 'fzf \"ctags-search \$1\" \"$cmd\"'
|
eval echo 'fzf \"ctags-search \$1\" \"$cmd\"'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
define-command -hidden fzf-cd %{
|
define-command -hidden fzf-cd %{
|
||||||
fzf "cd $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{
|
define-command -hidden fzf -params 2 %{ evaluate-commands %sh{
|
||||||
callback=$1
|
callback=$1
|
||||||
items_command=$2
|
items_command=$2
|
||||||
|
|
||||||
# 'tr' - if '(cmd1 && cmd2) | fzf' was passed 'awk' will return '(cmd1'
|
# 'tr' - if '(cmd1 && cmd2) | fzf' was passed 'awk' will return '(cmd1'
|
||||||
items_executable=$(echo $items_command | awk '{print $1}' | tr '(' ' ' | cut -d " " -f 2)
|
items_executable=$(echo $items_command | awk '{print $1}' | tr '(' ' ' | cut -d " " -f 2)
|
||||||
if [ -z $(command -v $items_executable) ]; then
|
if [ -z $(command -v $items_executable) ]; then
|
||||||
echo "fail \'$items_executable' executable not found"
|
echo "fail \'$items_executable' executable not found"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case $callback in
|
case $callback in
|
||||||
cd*)
|
cd*)
|
||||||
title="fzf change directory"
|
title="fzf change directory"
|
||||||
message="Change the server''s working directory"
|
message="Change the server''s working directory"
|
||||||
additional_flags=
|
additional_flags=
|
||||||
;;
|
;;
|
||||||
ctags-search*)
|
ctags-search*)
|
||||||
title="fzf tag"
|
title="fzf tag"
|
||||||
[ ! -z "${kak_client_env_TMUX}" ] && additional_keybindings="
|
[ ! -z "${kak_client_env_TMUX}" ] && additional_keybindings="
|
||||||
<c-s>: open tag in horizontal split
|
<c-s>: open tag in horizontal split
|
||||||
<c-v>: open tag in vertical split"
|
<c-v>: open tag in vertical split"
|
||||||
message="Jump to a symbol''s definition.
|
message="Jump to a symbol''s definition.
|
||||||
<ret>: open tag in new buffer.
|
<ret>: open tag in new buffer.
|
||||||
<c-w>: open tag in new window $additional_keybindings"
|
<c-w>: open tag in new window $additional_keybindings"
|
||||||
additional_flags="--expect ctrl-v --expect ctrl-s"
|
additional_flags="--expect ctrl-v --expect ctrl-s"
|
||||||
;;
|
;;
|
||||||
edit*)
|
edit*)
|
||||||
title="fzf edit"
|
title="fzf edit"
|
||||||
[ "$items_executable" = "git" ] && additional_info=" from git tree"
|
[ "$items_executable" = "git" ] && additional_info=" from git tree"
|
||||||
[ ! -z "${kak_client_env_TMUX}" ] && additional_keybindings="
|
[ ! -z "${kak_client_env_TMUX}" ] && additional_keybindings="
|
||||||
<c-s>: open file in horizontal split
|
<c-s>: open file in horizontal split
|
||||||
<c-v>: open file in vertical split"
|
<c-v>: open file in vertical split"
|
||||||
message="Open single or multiple files$additional_info.
|
message="Open single or multiple files$additional_info.
|
||||||
<ret>: open file in new buffer.
|
<ret>: open file in new buffer.
|
||||||
<c-w>: open file in new window $additional_keybindings"
|
<c-w>: open file in new window $additional_keybindings"
|
||||||
additional_flags="-m --expect ctrl-v --expect ctrl-s"
|
additional_flags="-m --expect ctrl-v --expect ctrl-s"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
title="fzf unknown command"
|
title="fzf unknown command"
|
||||||
message="This command is not known by fzf.kak plugin. You can send a PR with it to https://github.com/andreyorst/fzf.kak"
|
message="This command is not known by fzf.kak plugin. You can send a PR with it to https://github.com/andreyorst/fzf.kak"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
echo "info -title '$title' '$message'"
|
echo "info -title '$title' '$message'"
|
||||||
|
|
||||||
tmp=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-fzf.XXXXXX))
|
tmp=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-fzf.XXXXXX))
|
||||||
exec=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-exec.XXXXXX))
|
exec=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-exec.XXXXXX))
|
||||||
|
|
||||||
if [ ! -z "${kak_client_env_TMUX}" ]; then
|
if [ ! -z "${kak_client_env_TMUX}" ]; then
|
||||||
cmd="$items_command | fzf-tmux -d 15 --color=16 --expect ctrl-w $additional_flags> $tmp"
|
cmd="$items_command | fzf-tmux -d 15 --color=16 --expect ctrl-w $additional_flags> $tmp"
|
||||||
elif [ ! -z "${kak_opt_termcmd}" ]; then
|
elif [ ! -z "${kak_opt_termcmd}" ]; then
|
||||||
path=$(pwd)
|
path=$(pwd)
|
||||||
cmd="$kak_opt_termcmd \"sh -c 'cd $path && $items_command | fzf --color=16 -m --expect ctrl-w > $tmp'\""
|
cmd="$kak_opt_termcmd \"sh -c 'cd $path && $items_command | fzf --color=16 -m --expect ctrl-w > $tmp'\""
|
||||||
else
|
else
|
||||||
echo "fail termcmd option is not set"
|
echo "fail termcmd option is not set"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
(
|
(
|
||||||
eval "$cmd"
|
eval "$cmd"
|
||||||
if [ -s $tmp ]; then
|
if [ -s $tmp ]; then
|
||||||
(
|
(
|
||||||
read action
|
read action
|
||||||
if [ "${callback% *}" != "cd" ]; then
|
if [ "${callback% *}" != "cd" ]; then
|
||||||
case $action in
|
case $action in
|
||||||
"ctrl-w")
|
"ctrl-w")
|
||||||
wincmd="x11-new"
|
wincmd="x11-new"
|
||||||
[ ! -z "${kak_client_env_TMUX}" ] && wincmd="tmux-new-window" ;;
|
[ ! -z "${kak_client_env_TMUX}" ] && wincmd="tmux-new-window" ;;
|
||||||
"ctrl-s")
|
"ctrl-s")
|
||||||
wincmd="tmux-new-vertical" ;;
|
wincmd="tmux-new-vertical" ;;
|
||||||
"ctrl-v")
|
"ctrl-v")
|
||||||
wincmd="tmux-new-horizontal" ;;
|
wincmd="tmux-new-horizontal" ;;
|
||||||
*)
|
*)
|
||||||
wincmd= ;;
|
wincmd= ;;
|
||||||
esac
|
esac
|
||||||
callback="$wincmd $callback"
|
callback="$wincmd $callback"
|
||||||
fi
|
fi
|
||||||
echo "echo eval -client $kak_client \"$callback\" | kak -p $kak_session" > $exec
|
echo "echo eval -client $kak_client \"$callback\" | kak -p $kak_session" > $exec
|
||||||
chmod 755 $exec
|
chmod 755 $exec
|
||||||
while read file; do
|
while read file; do
|
||||||
$exec $file
|
$exec $file
|
||||||
done
|
done
|
||||||
) < $tmp
|
) < $tmp
|
||||||
fi
|
fi
|
||||||
rm $tmp
|
rm $tmp
|
||||||
rm $exec
|
rm $exec
|
||||||
) > /dev/null 2>&1 < /dev/null &
|
) > /dev/null 2>&1 < /dev/null &
|
||||||
}}
|
}}
|
||||||
|
|
||||||
define-command -hidden fzf-buffer %{ evaluate-commands %sh{
|
define-command -hidden fzf-buffer %{ evaluate-commands %sh{
|
||||||
tmp=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-fzf.XXXXXX))
|
tmp=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-fzf.XXXXXX))
|
||||||
setbuf=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-setbuf.XXXXXX))
|
setbuf=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-setbuf.XXXXXX))
|
||||||
delbuf=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-delbuf.XXXXXX))
|
delbuf=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-delbuf.XXXXXX))
|
||||||
buffers=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-buffers.XXXXXX))
|
buffers=$(mktemp $(eval echo $kak_opt_fzf_tmp/kak-buffers.XXXXXX))
|
||||||
items_command="echo $kak_buflist | tr ' ' '\n' | sort"
|
items_command="echo $kak_buflist | tr ' ' '\n' | sort"
|
||||||
|
|
||||||
if [ ! -z "${kak_client_env_TMUX}" ]; then
|
if [ ! -z "${kak_client_env_TMUX}" ]; then
|
||||||
cmd="$items_command | fzf-tmux -d 15 --color=16 --expect ctrl-d > $tmp"
|
cmd="$items_command | fzf-tmux -d 15 --color=16 --expect ctrl-d > $tmp"
|
||||||
elif [ ! -z "${kak_opt_termcmd}" ]; then
|
elif [ ! -z "${kak_opt_termcmd}" ]; then
|
||||||
path=$(pwd)
|
path=$(pwd)
|
||||||
eval "echo $kak_buflist | tr ' ' '\n' | sort > $buffers"
|
eval "echo $kak_buflist | tr ' ' '\n' | sort > $buffers"
|
||||||
cmd="$kak_opt_termcmd \"sh -c 'cat $buffers | fzf --color=16 --expect ctrl-d > $tmp'\""
|
cmd="$kak_opt_termcmd \"sh -c 'cat $buffers | fzf --color=16 --expect ctrl-d > $tmp'\""
|
||||||
else
|
else
|
||||||
echo "fail termcmd option is not set"
|
echo "fail termcmd option is not set"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "info -title 'fzf buffer' 'Set buffer to edit in current client
|
echo "info -title 'fzf buffer' 'Set buffer to edit in current client
|
||||||
<c-d>: delete selected buffer'"
|
<c-d>: delete selected buffer'"
|
||||||
|
|
||||||
echo "echo eval -client $kak_client \"buffer \$1\" | kak -p $kak_session" > $setbuf
|
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 \"delete-buffer \$1\" | kak -p $kak_session" > $delbuf
|
||||||
echo "echo eval -client $kak_client \"fzf-buffer \" | kak -p $kak_session" >> $delbuf
|
echo "echo eval -client $kak_client \"fzf-buffer \" | kak -p $kak_session" >> $delbuf
|
||||||
chmod 755 $setbuf
|
chmod 755 $setbuf
|
||||||
chmod 755 $delbuf
|
chmod 755 $delbuf
|
||||||
(
|
(
|
||||||
eval "$cmd"
|
eval "$cmd"
|
||||||
if [ -s $tmp ]; then
|
if [ -s $tmp ]; then
|
||||||
( read action
|
(
|
||||||
read buf
|
read action
|
||||||
if [ "$action" = "ctrl-d" ]; then
|
read buf
|
||||||
$setbuf $kak_bufname
|
if [ "$action" = "ctrl-d" ]; then
|
||||||
$delbuf $buf
|
$setbuf $kak_bufname
|
||||||
else
|
$delbuf $buf
|
||||||
$setbuf $buf
|
else
|
||||||
fi) < $tmp
|
$setbuf $buf
|
||||||
else
|
fi
|
||||||
$setbuf $kak_bufname
|
) < $tmp
|
||||||
fi
|
else
|
||||||
rm $tmp
|
$setbuf $kak_bufname
|
||||||
rm $setbuf
|
fi
|
||||||
rm $delbuf
|
rm $tmp
|
||||||
rm $buffers
|
rm $setbuf
|
||||||
) > /dev/null 2>&1 < /dev/null &
|
rm $delbuf
|
||||||
|
rm $buffers
|
||||||
|
) > /dev/null 2>&1 < /dev/null &
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue