]> Sergey Matveev's repositories - nnn.git/commitdiff
Bash auto-complete enhancements
authorArun Prakash Jana <engineerarun@gmail.com>
Mon, 8 Jul 2019 18:05:30 +0000 (23:35 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Mon, 8 Jul 2019 18:05:30 +0000 (23:35 +0530)
misc/auto-completion/bash/nnn-completion.bash

index 4c81e770ca6858c8c449e4828a528bcbab31d74c..a0dcd30b787b098ecc3501dce80f819b393a629d 100644 (file)
@@ -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