diff options
Diffstat (limited to 'shell/completion.bash')
| -rw-r--r-- | shell/completion.bash | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/shell/completion.bash b/shell/completion.bash index 2aec1d64..fcae37a2 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -249,17 +249,25 @@ _fzf_dir_completion() { } _fzf_complete_kill() { - [ -n "${COMP_WORDS[COMP_CWORD]}" ] && return 1 + local trigger=${FZF_COMPLETION_TRIGGER-'**'} + local cur="${COMP_WORDS[COMP_CWORD]}" + if [[ -z "$cur" ]]; then + COMP_WORDS[$COMP_CWORD]=$trigger + elif [[ "$cur" != *"$trigger" ]]; then + return 1 + fi - local selected - selected=$(command ps -ef | sed 1d | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-50%} --min-height 15 --reverse $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS --preview 'echo {}' --preview-window down:3:wrap" __fzf_comprun "kill" -m | awk '{print $2}' | tr '\n' ' ') - selected=${selected% } - printf '\e[5n' + _fzf_proc_completion "$@" +} - if [ -n "$selected" ]; then - COMPREPLY=( "$selected" ) - return 0 - fi +_fzf_proc_completion() { + _fzf_complete -m --preview 'echo {}' --preview-window down:3:wrap --min-height 15 -- "$@" < <( + command ps -ef | sed 1d + ) +} + +_fzf_proc_completion_post() { + awk '{print $2}' } _fzf_host_completion() { @@ -332,7 +340,7 @@ for cmd in $d_cmds; do __fzf_defc "$cmd" _fzf_dir_completion "-o nospace -o dirnames" done -# Kill completion +# Kill completion (supports empty completion trigger) complete -F _fzf_complete_kill -o default -o bashdefault kill unset cmd d_cmds a_cmds x_cmds @@ -342,7 +350,7 @@ _fzf_setup_completion() { kind=$1 fn=_fzf_${1}_completion if [[ $# -lt 2 ]] || ! type -t "$fn" > /dev/null; then - echo "usage: ${FUNCNAME[0]} path|dir|var|alias|host COMMANDS..." + echo "usage: ${FUNCNAME[0]} path|dir|var|alias|host|proc COMMANDS..." return 1 fi shift |
