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