From 4f9ac2aab919f3ce522afe7cc1b65c24897b2306 Mon Sep 17 00:00:00 2001 From: Taylor Braun-Jones Date: Fri, 25 Apr 2014 14:20:42 -0400 Subject: Support completion of arguments to -f and -C options Note: This is only available for bash_completion users. --- misc/bash-completion | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/misc/bash-completion b/misc/bash-completion index 0ca5235..b30b773 100644 --- a/misc/bash-completion +++ b/misc/bash-completion @@ -16,8 +16,25 @@ # . path/to/ninja/misc/bash-completion _ninja_target() { - local cur targets dir line targets_command OPTIND - cur="${COMP_WORDS[COMP_CWORD]}" + local cur prev targets dir line targets_command OPTIND + + # When available, use bash_completion to: + # 1) Complete words when the cursor is in the middle of the word + # 2) Complete paths with files or directories, as appropriate + if _get_comp_words_by_ref cur prev &>/dev/null ; then + case $prev in + -f) + _filedir + return 0 + ;; + -C) + _filedir -d + return 0 + ;; + esac + else + cur="${COMP_WORDS[COMP_CWORD]}" + fi if [[ "$cur" == "--"* ]]; then # there is currently only one argument that takes -- -- cgit v0.12 From b1d4668260ef142837c76c6ca95c32e1a43d4aef Mon Sep 17 00:00:00 2001 From: Taylor Braun-Jones Date: Sun, 27 Apr 2014 18:31:40 -0400 Subject: Fix getopts barfing over the terminal when trying to complete -f and -C Note that this is only applicable for when bash_completion is unavailable. --- misc/bash-completion | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/bash-completion b/misc/bash-completion index b30b773..6edf4df 100644 --- a/misc/bash-completion +++ b/misc/bash-completion @@ -43,7 +43,7 @@ _ninja_target() { dir="." line=$(echo ${COMP_LINE} | cut -d" " -f 2-) # filter out all non relevant arguments but keep C for dirs - while getopts C:f:j:l:k:nvd:t: opt $line; do + while getopts :C:f:j:l:k:nvd:t: opt $line; do case $opt in # eval for tilde expansion C) eval dir="$OPTARG" ;; -- cgit v0.12