forked from pool/bash-completion
80 lines
2.4 KiB
Diff
80 lines
2.4 KiB
Diff
---
|
|
bash-completion-2.12.0/bash_completion | 38 +++++++++++++++++++++++++++++++++
|
|
bash-completion-2.12.0/completions/cd | 11 ++++++++-
|
|
2 files changed, 48 insertions(+), 1 deletion(-)
|
|
|
|
--- bash-completion-2.12.0/bash_completion
|
|
+++ bash-completion-2.12.0/bash_completion 2024-02-23 07:34:25.733559088 +0000
|
|
@@ -1102,6 +1102,7 @@ _comp_quote_compgen()
|
|
_comp_compgen_filedir()
|
|
{
|
|
_comp_compgen_tilde && return
|
|
+ _comp_compgen_dollar "$cur" || return
|
|
|
|
local -a toks
|
|
local _arg=${1-}
|
|
@@ -1775,6 +1776,43 @@ _comp_compgen_tilde()
|
|
return 1
|
|
}
|
|
|
|
+# Perform dollar ($ or backtick) completion
|
|
+# @return True (0) if completion needs further processing,
|
|
+# False (> 0) if dollar or backtick is for commands, also if dollar
|
|
+# is used for variables, completions are put in COMPREPLY and noq
|
|
+# further processing is necessary.
|
|
+_comp_compgen_dollar()
|
|
+{
|
|
+ local s=""
|
|
+ local -i glob=0
|
|
+
|
|
+ shopt -q extglob && let glob++
|
|
+ ((glob == 0)) && shopt -s extglob
|
|
+
|
|
+ [[ "$COMP_LINE" == cd* ]] && s="/"
|
|
+
|
|
+ case "$1" in
|
|
+ \$\(*|\`*)
|
|
+ COMPREPLY=($(compgen -c -P '$(' -S ")$s" -- ${1#??})) ;;
|
|
+ \$\{*)
|
|
+ COMPREPLY=($(compgen -v -P '${' -S "}$s" -- ${1#??})) ;;
|
|
+ \$*)
|
|
+ COMPREPLY=($(compgen -v -P '$' ${s:+-S $s} -- ${1#?})) ;;
|
|
+ *)
|
|
+ ((glob == 0)) && shopt -u extglob
|
|
+ return 0
|
|
+ esac
|
|
+
|
|
+ if ((${#COMPREPLY[@]} > 0)) ; then
|
|
+ ((${#COMPREPLY[@]} == 1)) && eval COMPREPLY=\(${COMPREPLY[@]}\)
|
|
+ else
|
|
+ eval COMPREPLY=\(${1}\)
|
|
+ fi
|
|
+
|
|
+ ((glob == 0)) && shopt -u extglob
|
|
+ return ${#COMPREPLY[@]}
|
|
+}
|
|
+
|
|
# Expand string starting with tilde (~)
|
|
# We want to expand ~foo/... to /home/foo/... to avoid problems when
|
|
# word-to-complete starting with a tilde is fed to commands and ending up
|
|
--- bash-completion-2.12.0/completions/cd
|
|
+++ bash-completion-2.12.0/completions/cd 2024-02-23 07:45:00.565836867 +0000
|
|
@@ -5,7 +5,16 @@
|
|
_comp_cmd_cd()
|
|
{
|
|
local cur prev words cword comp_args
|
|
- _comp_initialize -- "$@" || return
|
|
+ _comp_initialize -- "$@" || {
|
|
+ if [[ ${#COMPREPLY[@]} -eq 1 ]]; then
|
|
+ local i=${COMPREPLY[0]}
|
|
+ if [[ "$i" == "$cur" && $i != "*/" ]]; then
|
|
+ _comp_compgen_dollar "$i" || return
|
|
+ COMPREPLY[0]="${i%%/}/"
|
|
+ fi
|
|
+ fi
|
|
+ return
|
|
+ }
|
|
|
|
if [[ $cur == -* ]]; then
|
|
_comp_compgen_help -c help "$1"
|