bash-completion/bash-completion-fix-missing-directory-completion-with-filename-pattern.patch
Dr. Werner Fink 9a91df3fc4 Accepting request 789868 from home:michals
- Fix completion excluding directories (boo#1167952).
  * bash-completion-fix-missing-directory-completion-with-filename-pattern.patch

- Fix completion excluding directories (boo#1167952).
  * bash-completion-fix-missing-directory-completion-with-filename-pattern.patch

OBS-URL: https://build.opensuse.org/request/show/789868
OBS-URL: https://build.opensuse.org/package/show/shells/bash-completion?expand=0&rev=109
2020-03-31 09:47:26 +00:00

69 lines
2.5 KiB
Diff

From 06f94a5c855fc38c0583a3b65c27c1c814a90bac Mon Sep 17 00:00:00 2001
From: Michal Suchanek <msuchanek@suse.de>
Date: Mon, 30 Mar 2020 19:48:39 +0200
Subject: [PATCH] Revert "_filedir: avoid duplicate dirs internally, and a
compgen -d call for files"
This reverts commit da99bc55954e9f60b9c3a9e9071ff6301d7015cb.
References: https://github.com/scop/bash-completion/issues/378 boo#1167952
The solution without calling compgen -d proves unrealiable.
Until this is fixed revert to calling compgen -d for completions with
file pattern.
---
bash_completion | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/bash_completion b/bash_completion
index 0fc89e51..015fea12 100644
--- a/bash_completion
+++ b/bash_completion
@@ -560,34 +560,25 @@ _filedir()
local -a toks
local reset
- if [[ "$1" == -d ]]; then
- reset=$(shopt -po noglob); set -o noglob
- toks=( $(compgen -d -- "$cur") )
- IFS=' '; $reset; IFS=$'\n'
- else
+ reset=$(shopt -po noglob); set -o noglob
+ toks=( $(compgen -d -- "$cur") )
+ IFS=' '; $reset; IFS=$'\n'
+
+ if [[ "$1" != -d ]]; then
local quoted
_quote_readline_by_ref "$cur" quoted
# Munge xspec to contain uppercase version too
# http://thread.gmane.org/gmane.comp.shells.bash.bugs/15294/focus=15306
- local xspec=${1:+"!*.@($1|${1^^})"} plusdirs=()
-
- # Use plusdirs to get dir completions if we have a xspec; if we don't,
- # there's no need, dirs come along with other completions. Don't use
- # plusdirs quite yet if fallback is in use though, in order to not ruin
- # the fallback condition with the "plus" dirs.
- local opts=( -f -X "$xspec" )
- [[ $xspec ]] && plusdirs=(-o plusdirs)
- [[ ${COMP_FILEDIR_FALLBACK-} ]] || opts+=( "${plusdirs[@]}" )
-
+ local xspec=${1:+"!*.@($1|${1^^})"}
reset=$(shopt -po noglob); set -o noglob
- toks+=( $(compgen "${opts[@]}" -- $quoted) )
+ toks+=( $(compgen -f -X "$xspec" -- $quoted) )
IFS=' '; $reset; IFS=$'\n'
# Try without filter if it failed to produce anything and configured to
[[ -n ${COMP_FILEDIR_FALLBACK:-} && -n "$1" && ${#toks[@]} -lt 1 ]] && {
reset=$(shopt -po noglob); set -o noglob
- toks+=( $(compgen -f "${plusdirs[@]}" -- $quoted) )
+ toks+=( $(compgen -f -- $quoted) )
IFS=' '; $reset; IFS=$'\n'
}
fi
--
2.25.1