Skip to content

Commit

Permalink
feat(_comp_compgen_commands): auto set -o filenames when appropriate
Browse files Browse the repository at this point in the history
  • Loading branch information
scop committed Jun 1, 2023
1 parent faab292 commit 4d4839e
Show file tree
Hide file tree
Showing 17 changed files with 18 additions and 20 deletions.
2 changes: 2 additions & 0 deletions bash_completion
Expand Up @@ -2709,6 +2709,8 @@ _comp_compgen_commands()
{
[[ ! ${cur-} ]] && shopt -q no_empty_cmd_completion && return
_comp_compgen -- -c
# for e.g. spaces in paths to and in command names
((${#COMPREPLY[@]} == 0)) || compopt -o filenames
}

# @since 2.12
Expand Down
1 change: 0 additions & 1 deletion completions/_svn
Expand Up @@ -38,7 +38,6 @@ _comp_cmd_svn()
return
;;
--editor-cmd | --diff-cmd | --diff3-cmd)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
1 change: 0 additions & 1 deletion completions/cpio
Expand Up @@ -22,7 +22,6 @@ _comp_cmd_cpio()
return
;;
--rsh-command)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
1 change: 0 additions & 1 deletion completions/fio
Expand Up @@ -74,7 +74,6 @@ _comp_cmd_fio()
return
;;
--trigger | --trigger-remote)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
1 change: 0 additions & 1 deletion completions/man
Expand Up @@ -29,7 +29,6 @@ _comp_cmd_man()
return
;;
--pager | -${noargopts}P)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
1 change: 0 additions & 1 deletion completions/perlcritic
Expand Up @@ -31,7 +31,6 @@ _comp_cmd_perlcritic()
return
;;
--pager)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
5 changes: 1 addition & 4 deletions completions/protoc
Expand Up @@ -18,10 +18,7 @@ _comp_cmd_protoc()
return
;;
--plugin)
if [[ $cur != *=* ]]; then
compopt -o filenames
_comp_compgen_commands
fi
[[ $cur == *=* ]] || _comp_compgen_commands
return
;;
--proto_path | --*_out)
Expand Down
1 change: 0 additions & 1 deletion completions/querybts
Expand Up @@ -17,7 +17,6 @@ _comp_cmd_querybts()
return
;;
--mbox-reader-cmd)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
1 change: 0 additions & 1 deletion completions/reportbug
Expand Up @@ -37,7 +37,6 @@ _comp_cmd_reportbug()
return
;;
--editor | --mua | --mbox-reader-cmd | -${noargopts}e)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
1 change: 0 additions & 1 deletion completions/rpm
Expand Up @@ -89,7 +89,6 @@ _comp_cmd_rpm()
return
;;
--pipe)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
1 change: 0 additions & 1 deletion completions/sqlite3
Expand Up @@ -17,7 +17,6 @@ _comp_cmd_sqlite3()
return
;;
-cmd)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
3 changes: 1 addition & 2 deletions completions/ssh
Expand Up @@ -424,7 +424,6 @@ _comp_cmd_sftp()
return
;;
-*S)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down Expand Up @@ -574,7 +573,7 @@ _comp_cmd_scp()
return
;;
-*S)
compopt +o nospace -o filenames
compopt +o nospace
_comp_compgen_commands
return
;;
Expand Down
1 change: 0 additions & 1 deletion completions/tar
Expand Up @@ -560,7 +560,6 @@ _comp_cmd_tar__gnu()
--to-command | --info-script | --new-volume-script | \
--rmt-command | --rsh-command | --use-compress-program | \
-${noargopts}[FI])
compopt -o filenames
_comp_compgen_commands
break
;;
Expand Down
1 change: 0 additions & 1 deletion completions/tcpdump
Expand Up @@ -26,7 +26,6 @@ _comp_cmd_tcpdump()
return
;;
-${noargopts}z)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
1 change: 0 additions & 1 deletion completions/valgrind
Expand Up @@ -81,7 +81,6 @@ _comp_cmd_valgrind()
return
;;
\<command\>)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
1 change: 0 additions & 1 deletion completions/vpnc
Expand Up @@ -53,7 +53,6 @@ _vpnc()
return
;;
--password-helper)
compopt -o filenames
_comp_compgen_commands
return
;;
Expand Down
15 changes: 14 additions & 1 deletion test/t/unit/test_unit_compgen_commands.py
@@ -1,6 +1,6 @@
import pytest

from conftest import assert_bash_exec, bash_env_saved
from conftest import assert_bash_exec, assert_complete, bash_env_saved


@pytest.mark.bashcomp(cmd=None, ignore_env=r"^\+COMPREPLY=")
Expand All @@ -15,6 +15,15 @@ def functions(self, request, bash):
r' printf "%s\n" "${COMPREPLY[@]}";'
r"}",
)
assert_bash_exec(
bash,
"_comp_cmd_ccc() {"
" local cur;"
" _comp_get_words cur;"
" unset -v COMPREPLY;"
" _comp_compgen_commands;"
"}; complete -F _comp_cmd_ccc ccc",
)

def test_basic(self, bash, functions):
output = assert_bash_exec(
Expand All @@ -32,3 +41,7 @@ def test_empty(self, bash, functions, shopt_no_empty, result_empty):
bash, "_comp_compgen_commands__test", want_output=True
)
assert (output.strip() == "") == result_empty

def test_spaces(self, bash, functions):
completion = assert_complete(bash, "ccc shared/default/bar")
assert completion == r"\ bar.d/"

0 comments on commit 4d4839e

Please sign in to comment.