diff options
Diffstat (limited to 'shell/completion.bash')
-rw-r--r-- | shell/completion.bash | 108 |
1 files changed, 37 insertions, 71 deletions
diff --git a/shell/completion.bash b/shell/completion.bash index 316ac075..9cd5b217 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -4,10 +4,12 @@ # / __/ / /_/ __/ # /_/ /___/_/ completion.bash # -# - $FZF_TMUX (default: 0) -# - $FZF_TMUX_OPTS (default: empty) -# - $FZF_COMPLETION_TRIGGER (default: '**') -# - $FZF_COMPLETION_OPTS (default: empty) +# - $FZF_TMUX (default: 0) +# - $FZF_TMUX_OPTS (default: empty) +# - $FZF_COMPLETION_TRIGGER (default: '**') +# - $FZF_COMPLETION_OPTS (default: empty) +# - $FZF_COMPLETION_PATH_OPTS (default: empty) +# - $FZF_COMPLETION_DIR_OPTS (default: empty) if [[ $- =~ i ]]; then @@ -100,128 +102,77 @@ _fzf_opts_completion() { prev="${COMP_WORDS[COMP_CWORD-1]}" opts=" -h --help - -x --extended -e --exact - --extended-exact +x --no-extended - +e --no-exact -q --query -f --filter --literal - --no-literal - --algo --scheme --expect - --no-expect - --enabled --no-phony - --disabled --phony + --disabled --tiebreak --bind --color - --toggle-sort -d --delimiter -n --nth --with-nth - -s --sort +s --no-sort --track - --no-track --tac - --no-tac - -i - +i + -i --ignore-case + +i --no-ignore-case -m --multi - +m --no-multi --ansi - --no-ansi --no-mouse +c --no-color - +2 --no-256 - --black - --no-black - --bold --no-bold --layout --reverse - --no-reverse --cycle - --no-cycle --keep-right - --no-keep-right - --hscroll --no-hscroll --hscroll-off --scroll-off --filepath-word - --no-filepath-word --info - --no-info - --inline-info - --no-inline-info --separator --no-separator - --scrollbar --no-scrollbar --jump-labels -1 --select-1 - +1 --no-select-1 -0 --exit-0 - +0 --no-exit-0 --read0 - --no-read0 --print0 - --no-print0 --print-query - --no-print-query --prompt --pointer --marker --sync - --no-sync - --async - --no-history --history --history-size - --no-header - --no-header-lines --header --header-lines --header-first - --no-header-first --ellipsis --preview - --no-preview --preview-window --height --min-height - --no-height - --no-margin - --no-padding - --no-border --border - --no-border-label --border-label --border-label-pos - --no-preview-label --preview-label --preview-label-pos --no-unicode - --unicode --margin --padding --tabstop --listen - --no-listen - --clear --no-clear --version --" case "${prev}" in - --algo) - COMPREPLY=( $(compgen -W "v1 v2" -- "$cur") ) - return 0 - ;; --scheme) COMPREPLY=( $(compgen -W "default path history" -- "$cur") ) return 0 @@ -348,8 +299,14 @@ __fzf_generic_path_completion() { if declare -F "$1" > /dev/null; then eval "$1 $(printf %q "$dir")" | __fzf_comprun "$4" -q "$leftover" else - [[ $1 =~ dir ]] && walker=dir,follow || walker=file,dir,follow,hidden - __fzf_comprun "$4" -q "$leftover" --walker "$walker" --walker-root="$dir" + if [[ $1 =~ dir ]]; then + walker=dir,follow + rest=${FZF_COMPLETION_DIR_OPTS-} + else + walker=file,dir,follow,hidden + rest=${FZF_COMPLETION_PATH_OPTS-} + fi + __fzf_comprun "$4" -q "$leftover" --walker "$walker" --walker-root="$dir" $rest fi | while read -r item; do printf "%q " "${item%$3}$3" done @@ -514,8 +471,11 @@ complete -o default -F _fzf_opts_completion fzf # fzf-tmux specific options (like `-w WIDTH`) are left as a future patch. complete -o default -F _fzf_opts_completion fzf-tmux -d_cmds="${FZF_COMPLETION_DIR_COMMANDS:-cd pushd rmdir}" -a_cmds=" +d_cmds="${FZF_COMPLETION_DIR_COMMANDS-cd pushd rmdir}" + +# NOTE: $FZF_COMPLETION_PATH_COMMANDS and $FZF_COMPLETION_VAR_COMMANDS are +# undocumented and subject to change in the future. +a_cmds="${FZF_COMPLETION_PATH_COMMANDS-" awk bat cat diff diff3 emacs emacsclient ex file ftp g++ gcc gvim head hg hx java javac ld less more mvim nvim patch perl python ruby @@ -523,10 +483,11 @@ a_cmds=" basename bunzip2 bzip2 chmod chown curl cp dirname du find git grep gunzip gzip hg jar ln ls mv open rm rsync scp - svn tar unzip zip" + svn tar unzip zip"}" +v_cmds="${FZF_COMPLETION_VAR_COMMANDS-export unset printenv}" # Preserve existing completion -__fzf_orig_completion < <(complete -p $d_cmds $a_cmds ssh 2> /dev/null) +__fzf_orig_completion < <(complete -p $d_cmds $a_cmds $v_cmds unalias kill ssh 2> /dev/null) if type _comp_load > /dev/null 2>&1; then # _comp_load was added in bash-completion 2.12 to replace _completion_loader. @@ -562,10 +523,21 @@ for cmd in $d_cmds; do __fzf_defc "$cmd" _fzf_dir_completion "-o bashdefault -o nospace -o dirnames" done +# Variables +for cmd in $v_cmds; do + __fzf_defc "$cmd" _fzf_var_completion "-o default -o nospace -v" +done + +# Aliases +__fzf_defc unalias _fzf_alias_completion "-a" + +# Processes +__fzf_defc kill _fzf_proc_completion "-o default -o bashdefault" + # ssh __fzf_defc ssh _fzf_complete_ssh "-o default -o bashdefault" -unset cmd d_cmds a_cmds +unset cmd d_cmds a_cmds v_cmds _fzf_setup_completion() { local kind fn cmd @@ -587,10 +559,4 @@ _fzf_setup_completion() { done } -# Environment variables / Aliases / Hosts / Process -_fzf_setup_completion 'var' export unset printenv -_fzf_setup_completion 'alias' unalias -_fzf_setup_completion 'host' telnet -_fzf_setup_completion 'proc' kill - fi |