2018-11-11 10:41:15 +00:00
|
|
|
# ╭─────────────╥────────────────────────╮
|
|
|
|
# │ Author: ║ File: │
|
|
|
|
# │ Andrey Orst ║ fzf-cd.kak │
|
|
|
|
# ╞═════════════╩════════════════════════╡
|
|
|
|
# │ Module for changing directories with │
|
|
|
|
# │ fzf for fzf.kak plugin │
|
|
|
|
# ╞══════════════════════════════════════╡
|
|
|
|
# │ GitHub.com/andreyorst/fzf.kak │
|
|
|
|
# ╰──────────────────────────────────────╯
|
|
|
|
|
|
|
|
declare-option -docstring "command to provide list of directories to fzf.
|
|
|
|
Default value:
|
2019-02-15 17:11:45 +00:00
|
|
|
find: (echo .. && find . \( -path '*/.svn*' -o -path '*/.git*' \) -prune -o -type d -print)
|
2018-11-11 10:41:15 +00:00
|
|
|
" \
|
|
|
|
str fzf_cd_command "find"
|
|
|
|
|
2018-11-29 11:33:33 +00:00
|
|
|
declare-option -docstring 'allow showing preview window while changing directories
|
|
|
|
Default value:
|
|
|
|
false
|
|
|
|
' \
|
|
|
|
bool fzf_cd_preview false
|
|
|
|
|
|
|
|
declare-option -docstring 'command to show list of directories in preview window
|
|
|
|
Default value:
|
|
|
|
tree -d
|
|
|
|
' \
|
|
|
|
str cd_preview_cmd "tree -d {}"
|
|
|
|
|
|
|
|
declare-option -docstring 'maximum amount of previewed directories' \
|
|
|
|
int fzf_preview_dirs '300'
|
|
|
|
|
2019-03-26 17:34:01 +00:00
|
|
|
try %{ declare-user-mode fzf }
|
2018-11-11 10:41:15 +00:00
|
|
|
map global fzf -docstring "change directory" 'c' '<esc>: fzf-cd<ret>'
|
|
|
|
|
|
|
|
define-command -hidden fzf-cd %{ evaluate-commands %sh{
|
2018-11-24 11:39:54 +00:00
|
|
|
tmux_height=$kak_opt_fzf_tmux_height
|
2018-11-22 12:36:32 +00:00
|
|
|
printf '%s\n' "info -title %{fzf change directory} %{Change the server's working directory}"
|
|
|
|
|
|
|
|
case $kak_opt_fzf_cd_command in
|
2018-11-11 10:41:15 +00:00
|
|
|
find)
|
2019-02-15 17:11:45 +00:00
|
|
|
items_command="(echo .. && find . \( -path '*/.svn*' -o -path '*/.git*' \) -prune -o -type d -print)" ;;
|
2018-11-11 10:41:15 +00:00
|
|
|
*)
|
2018-11-22 12:36:32 +00:00
|
|
|
items_command=$kak_opt_fzf_cd_command ;;
|
|
|
|
esac
|
2018-11-29 11:33:33 +00:00
|
|
|
if [ $kak_opt_fzf_cd_preview = "true" ]; then
|
|
|
|
preview="--preview '($kak_opt_cd_preview_cmd) 2>/dev/null | head -n $kak_opt_fzf_preview_dirs'"
|
|
|
|
fi
|
2019-03-26 12:25:13 +00:00
|
|
|
printf "%s\n" "fzf -preview -kak-cmd %{change-directory} -items-cmd %{$items_command} -fzf-args %{$preview} -post-action %{fzf-cd}"
|
2018-11-22 12:36:32 +00:00
|
|
|
}}
|
2018-11-24 11:39:54 +00:00
|
|
|
|