COMPREPLY=()
local IFS=$' \n'
local cur=$2 prev=$3
- local -a opts opts_with_args
+ local -a opts
opts=(
-b
-d
-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