From: Arun Prakash Jana Date: Mon, 8 Jul 2019 18:05:30 +0000 (+0530) Subject: Bash auto-complete enhancements X-Git-Tag: v2.6~59 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=427c4b2429942f518970a5c5ff019a05a218c009;p=nnn.git Bash auto-complete enhancements --- diff --git a/misc/auto-completion/bash/nnn-completion.bash b/misc/auto-completion/bash/nnn-completion.bash index 4c81e770..a0dcd30b 100644 --- a/misc/auto-completion/bash/nnn-completion.bash +++ b/misc/auto-completion/bash/nnn-completion.bash @@ -9,7 +9,7 @@ _nnn () { COMPREPLY=() local IFS=$' \n' local cur=$2 prev=$3 - local -a opts opts_with_args + local -a opts opts=( -b -d @@ -23,22 +23,16 @@ _nnn () { -v -w ) - opts_with_arg=( - -b - -p - ) - - # Do not complete non option names - [[ $cur == -* ]] || return 1 - - # Do not complete when the previous arg is an option expecting an argument - for opt in "${opts_with_arg[@]}"; do - [[ $opt == $prev ]] && return 1 - done - - # Complete option names - COMPREPLY=( $(compgen -W "${opts[*]}" -- "$cur") ) - return 0 + if [[ $prev == -b ]]; then + local bookmarks=$(echo $NNN_BMS | awk -F: -v RS=\; '{print $1}') + COMPREPLY=( $(compgen -W "$bookmarks" -- "$cur") ) + elif [[ $prev == -p ]]; then + COMPREPLY=( $(compgen -f -d -- "$cur") ) + elif [[ $cur == -* ]]; then + COMPREPLY=( $(compgen -W "${opts[*]}" -- "$cur") ) + else + COMPREPLY=( $(compgen -f -d -- "$cur") ) + fi } -complete -F _nnn nnn +complete -o filenames -F _nnn nnn