From 2aa354117715aebf987db40177074a9891bcd6a0 Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Wed, 12 Oct 2022 10:52:25 +0800 Subject: [PATCH 01/15] Fix unbound variables in completion.bash --- shell/completion.bash | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shell/completion.bash b/shell/completion.bash index 4b1e0dba58d..169b4c57989 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -55,8 +55,8 @@ __fzf_orig_completion() { cmd="${BASH_REMATCH[3]}" [[ "$f" = _fzf_* ]] && continue printf -v "_fzf_orig_completion_${cmd//[^A-Za-z0-9_]/_}" "%s" "${comp} %s ${cmd} #${f}" - if [[ "$l" = *" -o nospace "* ]] && [[ ! "$__fzf_nospace_commands" = *" $cmd "* ]]; then - __fzf_nospace_commands="$__fzf_nospace_commands $cmd " + if [[ "$l" = *" -o nospace "* ]] && [[ ! "${__fzf_nospace_commands-}" = *" $cmd "* ]]; then + __fzf_nospace_commands="${__fzf_nospace_commands-} $cmd " fi fi done @@ -329,7 +329,7 @@ __fzf_defc() { func="$2" opts="$3" orig_var="_fzf_orig_completion_${cmd//[^A-Za-z0-9_]/_}" - orig="${!orig_var}" + orig="${!orig_var-}" if [[ -n "$orig" ]]; then printf -v def "$orig" "$func" eval "$def" From 17c2b3f325df4282788097d9ae0d6927707aa26e Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Wed, 12 Oct 2022 22:20:32 +0800 Subject: [PATCH 02/15] Fix default empty variables to actually expand as empty. --- shell/completion.bash | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shell/completion.bash b/shell/completion.bash index 169b4c57989..c07b98fd3fb 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -37,7 +37,7 @@ bind '"\e[0n": redraw-current-line' 2> /dev/null __fzf_comprun() { if [[ "$(type -t _fzf_comprun 2>&1)" = function ]]; then _fzf_comprun "$@" - elif [[ -n "$TMUX_PANE" ]] && { [[ "${FZF_TMUX:-0}" != 0 ]] || [[ -n "$FZF_TMUX_OPTS" ]]; }; then + elif [[ -n "$TMUX_PANE" ]] && { [[ "${FZF_TMUX:-0}" != 0 ]] || [[ -n "${FZF_TMUX_OPTS-}" ]]; }; then shift fzf-tmux ${FZF_TMUX_OPTS:--d${FZF_TMUX_HEIGHT:-40%}} -- "$@" else @@ -180,7 +180,7 @@ __fzf_generic_path_completion() { leftover=${leftover/#\/} [[ -z "$dir" ]] && dir='.' [[ "$dir" != "/" ]] && dir="${dir/%\//}" - matches=$(eval "$1 $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS $2" __fzf_comprun "$4" -q "$leftover" | while read -r item; do + matches=$(eval "$1 $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS ${FZF_COMPLETION_OPTS-} $2" __fzf_comprun "$4" -q "$leftover" | while read -r item; do printf "%q " "${item%$3}$3" done) matches=${matches% } @@ -236,7 +236,7 @@ _fzf_complete() { if [[ "$cur" == *"$trigger" ]]; then cur=${cur:0:${#cur}-${#trigger}} - selected=$(FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS $str_arg" __fzf_comprun "${rest[0]}" "${args[@]}" -q "$cur" | $post | tr '\n' ' ') + selected=$(FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS ${FZF_COMPLETION_OPTS-} $str_arg" __fzf_comprun "${rest[0]}" "${args[@]}" -q "$cur" | $post | tr '\n' ' ') selected=${selected% } # Strip trailing space not to repeat "-o nospace" if [[ -n "$selected" ]]; then COMPREPLY=("$selected") From 9d0448b22c54fdd51ea2109f38a16cd5f29f1ddc Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Fri, 14 Oct 2022 14:04:16 +0800 Subject: [PATCH 03/15] Fix remaining variables in completion.bash --- shell/completion.bash | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/shell/completion.bash b/shell/completion.bash index c07b98fd3fb..7234a0e1f3d 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -139,17 +139,17 @@ _fzf_handle_dynamic_completion() { shift orig_cmd="$1" orig_var="_fzf_orig_completion_$cmd" - orig="${!orig_var##*#}" + orig="${!orig_var-##*#}" if [[ -n "$orig" ]] && type "$orig" > /dev/null 2>&1; then $orig "$@" - elif [[ -n "$_fzf_completion_loader" ]]; then + elif [[ -n "${_fzf_completion_loader-}" ]]; then orig_complete=$(complete -p "$orig_cmd" 2> /dev/null) _completion_loader "$@" ret=$? # _completion_loader may not have updated completion for the command if [[ "$(complete -p "$orig_cmd" 2> /dev/null)" != "$orig_complete" ]]; then __fzf_orig_completion < <(complete -p "$orig_cmd" 2> /dev/null) - if [[ "$__fzf_nospace_commands" = *" $orig_cmd "* ]]; then + if [[ "${__fzf_nospace_commands-}" = *" $orig_cmd "* ]]; then eval "${orig_complete/ -F / -o nospace -F }" else eval "$orig_complete" @@ -175,16 +175,16 @@ __fzf_generic_path_completion() { [[ $base = *"/"* ]] && dir="$base" while true; do - if [[ -z "$dir" ]] || [[ -d "$dir" ]]; then - leftover=${base/#"$dir"} + if [[ -z "${dir-}" ]] || [[ -d "${dir-}" ]]; then + leftover=${base/#"${dir-}"} leftover=${leftover/#\/} - [[ -z "$dir" ]] && dir='.' - [[ "$dir" != "/" ]] && dir="${dir/%\//}" - matches=$(eval "$1 $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS ${FZF_COMPLETION_OPTS-} $2" __fzf_comprun "$4" -q "$leftover" | while read -r item; do + [[ -z "${dir-}" ]] && dir='.' + [[ "${dir-}" != "/" ]] && dir="${dir/%\//}" + matches=$(eval "$1 $(printf %q "${dir-}")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS ${FZF_COMPLETION_OPTS-} $2" __fzf_comprun "$4" -q "$leftover" | while read -r item; do printf "%q " "${item%$3}$3" done) matches=${matches% } - [[ -z "$3" ]] && [[ "$__fzf_nospace_commands" = *" ${COMP_WORDS[0]} "* ]] && matches="$matches " + [[ -z "$3" ]] && [[ "${__fzf_nospace_commands-}" = *" ${COMP_WORDS[0]} "* ]] && matches="$matches " if [[ -n "$matches" ]]; then COMPREPLY=( "$matches" ) else @@ -193,8 +193,8 @@ __fzf_generic_path_completion() { printf '\e[5n' return 0 fi - dir=$(dirname "$dir") - [[ "$dir" =~ /$ ]] || dir="$dir"/ + dir=$(dirname "${dir-}") + [[ "${dir-}" =~ /$ ]] || dir="${dir-}"/ done else shift From 2e9dd4e81902cfbf4baf82d3145aa56ac7c82e69 Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Fri, 14 Oct 2022 14:42:05 +0800 Subject: [PATCH 04/15] fix unbound variables in key-bindings.bash --- shell/key-bindings.bash | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/key-bindings.bash b/shell/key-bindings.bash index f6797d49b94..c8f21a1720b 100644 --- a/shell/key-bindings.bash +++ b/shell/key-bindings.bash @@ -19,7 +19,7 @@ __fzf_select__() { -o -type f -print \ -o -type d -print \ -o -type l -print 2> /dev/null | cut -b3-"}" - opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore --reverse $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS -m" + opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore --reverse $FZF_DEFAULT_OPTS ${FZF_CTRL_T_OPTS-} -m" eval "$cmd" | FZF_DEFAULT_OPTS="$opts" $(__fzfcmd) "$@" | while read -r item; do @@ -30,7 +30,7 @@ __fzf_select__() { if [[ $- =~ i ]]; then __fzfcmd() { - [[ -n "$TMUX_PANE" ]] && { [[ "${FZF_TMUX:-0}" != 0 ]] || [[ -n "$FZF_TMUX_OPTS" ]]; } && + [[ -n "$TMUX_PANE" ]] && { [[ "${FZF_TMUX:-0}" != 0 ]] || [[ -n "${FZF_TMUX_OPTS-}" ]]; } && echo "fzf-tmux ${FZF_TMUX_OPTS:--d${FZF_TMUX_HEIGHT:-40%}} -- " || echo "fzf" } @@ -44,13 +44,13 @@ __fzf_cd__() { local cmd opts dir cmd="${FZF_ALT_C_COMMAND:-"command find -L . -mindepth 1 \\( -path '*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \\) -prune \ -o -type d -print 2> /dev/null | cut -b3-"}" - opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore --reverse $FZF_DEFAULT_OPTS $FZF_ALT_C_OPTS +m" + opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore --reverse $FZF_DEFAULT_OPTS ${FZF_ALT_C_OPTS-} +m" dir=$(eval "$cmd" | FZF_DEFAULT_OPTS="$opts" $(__fzfcmd)) && printf 'builtin cd -- %q' "$dir" } __fzf_history__() { local output opts script - opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort $FZF_CTRL_R_OPTS +m --read0" + opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort ${FZF_CTRL_R_OPTS-} +m --read0" script='BEGIN { getc; $/ = "\n\t"; $HISTCOUNT = $ENV{last_hist} + 1 } s/^[ *]//; print $HISTCOUNT - $. . "\t$_" if !$seen{$_}++' output=$( builtin fc -lnr -2147483648 | From 083c55f2d38a7f51ae0e02b49118434793848231 Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Fri, 14 Oct 2022 15:27:29 +0800 Subject: [PATCH 05/15] Fix zsh 'parameter unset' in keybindings --- shell/key-bindings.zsh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/key-bindings.zsh b/shell/key-bindings.zsh index 47ef17a7c4c..0e0d7921f81 100644 --- a/shell/key-bindings.zsh +++ b/shell/key-bindings.zsh @@ -46,7 +46,7 @@ __fsel() { -o -type l -print 2> /dev/null | cut -b3-"}" setopt localoptions pipefail no_aliases 2> /dev/null local item - eval "$cmd" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS" $(__fzfcmd) -m "$@" | while read item; do + eval "$cmd" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_CTRL_T_OPTS-}" $(__fzfcmd) -m "$@" | while read item; do echo -n "${(q)item} " done local ret=$? @@ -55,7 +55,7 @@ __fsel() { } __fzfcmd() { - [ -n "$TMUX_PANE" ] && { [ "${FZF_TMUX:-0}" != 0 ] || [ -n "$FZF_TMUX_OPTS" ]; } && + [ -n "$TMUX_PANE" ] && { [ "${FZF_TMUX:-0}" != 0 ] || [ -n "${FZF_TMUX_OPTS-}" ]; } && echo "fzf-tmux ${FZF_TMUX_OPTS:--d${FZF_TMUX_HEIGHT:-40%}} -- " || echo "fzf" } @@ -75,7 +75,7 @@ fzf-cd-widget() { local cmd="${FZF_ALT_C_COMMAND:-"command find -L . -mindepth 1 \\( -path '*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \\) -prune \ -o -type d -print 2> /dev/null | cut -b3-"}" setopt localoptions pipefail no_aliases 2> /dev/null - local dir="$(eval "$cmd" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_ALT_C_OPTS" $(__fzfcmd) +m)" + local dir="$(eval "$cmd" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_ALT_C_OPTS-}" $(__fzfcmd) +m)" if [[ -z "$dir" ]]; then zle redisplay return 0 @@ -98,7 +98,7 @@ fzf-history-widget() { local selected num setopt localoptions noglobsubst noposixbuiltins pipefail no_aliases 2> /dev/null selected=( $(fc -rl 1 | awk '{ cmd=$0; sub(/^[ \t]*[0-9]+\**[ \t]+/, "", cmd); if (!seen[cmd]++) print $0 }' | - FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} $FZF_DEFAULT_OPTS -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort,ctrl-z:ignore $FZF_CTRL_R_OPTS --query=${(qqq)LBUFFER} +m" $(__fzfcmd)) ) + FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} ${FZF_DEFAULT_OPTS-} -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort,ctrl-z:ignore ${FZF_CTRL_R_OPTS-} --query=${(qqq)LBUFFER} +m" $(__fzfcmd)) ) local ret=$? if [ -n "$selected" ]; then num=$selected[1] From 4e73061755f6e072873a43eb03fc328f3a3a9d4b Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Fri, 14 Oct 2022 15:33:24 +0800 Subject: [PATCH 06/15] Fix zsh 'parameter unset' in completion --- shell/completion.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/completion.zsh b/shell/completion.zsh index 417d03c0f4a..e695c344dda 100644 --- a/shell/completion.zsh +++ b/shell/completion.zsh @@ -279,8 +279,8 @@ fzf-completion() { [ -z "$trigger" -a ${LBUFFER[-1]} = ' ' ] && tokens+=("") # When the trigger starts with ';', it becomes a separate token - if [[ ${LBUFFER} = *"${tokens[-2]}${tokens[-1]}" ]]; then - tokens[-2]="${tokens[-2]}${tokens[-1]}" + if [[ ${LBUFFER} = *"${tokens[-2]-}${tokens[-1]}" ]]; then + tokens[-2]="${tokens[-2]-}${tokens[-1]}" tokens=(${tokens[0,-2]}) fi From 432a6ceadc56d13145378db3da0df23d7d707718 Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Fri, 14 Oct 2022 22:19:00 +0800 Subject: [PATCH 07/15] Fix unbound variables completion.bash --- shell/completion.bash | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shell/completion.bash b/shell/completion.bash index 7234a0e1f3d..ece458e84fb 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -37,7 +37,7 @@ bind '"\e[0n": redraw-current-line' 2> /dev/null __fzf_comprun() { if [[ "$(type -t _fzf_comprun 2>&1)" = function ]]; then _fzf_comprun "$@" - elif [[ -n "$TMUX_PANE" ]] && { [[ "${FZF_TMUX:-0}" != 0 ]] || [[ -n "${FZF_TMUX_OPTS-}" ]]; }; then + elif [[ -n "${TMUX_PANE-}" ]] && { [[ "${FZF_TMUX:-0}" != 0 ]] || [[ -n "${FZF_TMUX_OPTS-}" ]]; }; then shift fzf-tmux ${FZF_TMUX_OPTS:--d${FZF_TMUX_HEIGHT:-40%}} -- "$@" else @@ -180,7 +180,7 @@ __fzf_generic_path_completion() { leftover=${leftover/#\/} [[ -z "${dir-}" ]] && dir='.' [[ "${dir-}" != "/" ]] && dir="${dir/%\//}" - matches=$(eval "$1 $(printf %q "${dir-}")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS ${FZF_COMPLETION_OPTS-} $2" __fzf_comprun "$4" -q "$leftover" | while read -r item; do + matches=$(eval "$1 $(printf %q "${dir-}")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_COMPLETION_OPTS-} $2" __fzf_comprun "$4" -q "$leftover" | while read -r item; do printf "%q " "${item%$3}$3" done) matches=${matches% } @@ -236,7 +236,7 @@ _fzf_complete() { if [[ "$cur" == *"$trigger" ]]; then cur=${cur:0:${#cur}-${#trigger}} - selected=$(FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS ${FZF_COMPLETION_OPTS-} $str_arg" __fzf_comprun "${rest[0]}" "${args[@]}" -q "$cur" | $post | tr '\n' ' ') + selected=$(FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_COMPLETION_OPTS-} $str_arg" __fzf_comprun "${rest[0]}" "${args[@]}" -q "$cur" | $post | tr '\n' ' ') selected=${selected% } # Strip trailing space not to repeat "-o nospace" if [[ -n "$selected" ]]; then COMPREPLY=("$selected") From 19e150aedc50237d0d5a4d8a84024b2c2e708981 Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Fri, 14 Oct 2022 22:25:33 +0800 Subject: [PATCH 08/15] Fix remaining variables in key-bindings.zsh --- shell/key-bindings.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/key-bindings.zsh b/shell/key-bindings.zsh index 0e0d7921f81..dfb473cc8be 100644 --- a/shell/key-bindings.zsh +++ b/shell/key-bindings.zsh @@ -55,7 +55,7 @@ __fsel() { } __fzfcmd() { - [ -n "$TMUX_PANE" ] && { [ "${FZF_TMUX:-0}" != 0 ] || [ -n "${FZF_TMUX_OPTS-}" ]; } && + [ -n "${TMUX_PANE-}" ] && { [ "${FZF_TMUX:-0}" != 0 ] || [ -n "${FZF_TMUX_OPTS-}" ]; } && echo "fzf-tmux ${FZF_TMUX_OPTS:--d${FZF_TMUX_HEIGHT:-40%}} -- " || echo "fzf" } From b8e371972e77c8d3d5fd756a164ce1628a89d8c9 Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Fri, 14 Oct 2022 22:31:35 +0800 Subject: [PATCH 09/15] Fix remaining unbound variables --- shell/key-bindings.bash | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/key-bindings.bash b/shell/key-bindings.bash index c8f21a1720b..d83f9d3ed92 100644 --- a/shell/key-bindings.bash +++ b/shell/key-bindings.bash @@ -19,7 +19,7 @@ __fzf_select__() { -o -type f -print \ -o -type d -print \ -o -type l -print 2> /dev/null | cut -b3-"}" - opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore --reverse $FZF_DEFAULT_OPTS ${FZF_CTRL_T_OPTS-} -m" + opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore --reverse ${FZF_DEFAULT_OPTS-} ${FZF_CTRL_T_OPTS-} -m" eval "$cmd" | FZF_DEFAULT_OPTS="$opts" $(__fzfcmd) "$@" | while read -r item; do @@ -30,7 +30,7 @@ __fzf_select__() { if [[ $- =~ i ]]; then __fzfcmd() { - [[ -n "$TMUX_PANE" ]] && { [[ "${FZF_TMUX:-0}" != 0 ]] || [[ -n "${FZF_TMUX_OPTS-}" ]]; } && + [[ -n "${TMUX_PANE-}" ]] && { [[ "${FZF_TMUX:-0}" != 0 ]] || [[ -n "${FZF_TMUX_OPTS-}" ]]; } && echo "fzf-tmux ${FZF_TMUX_OPTS:--d${FZF_TMUX_HEIGHT:-40%}} -- " || echo "fzf" } @@ -44,13 +44,13 @@ __fzf_cd__() { local cmd opts dir cmd="${FZF_ALT_C_COMMAND:-"command find -L . -mindepth 1 \\( -path '*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \\) -prune \ -o -type d -print 2> /dev/null | cut -b3-"}" - opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore --reverse $FZF_DEFAULT_OPTS ${FZF_ALT_C_OPTS-} +m" + opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore --reverse ${FZF_DEFAULT_OPTS-} ${FZF_ALT_C_OPTS-} +m" dir=$(eval "$cmd" | FZF_DEFAULT_OPTS="$opts" $(__fzfcmd)) && printf 'builtin cd -- %q' "$dir" } __fzf_history__() { local output opts script - opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort ${FZF_CTRL_R_OPTS-} +m --read0" + opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} -n2..,.. --scheme=history --bind=ctrl-r:toggle-sort ${FZF_CTRL_R_OPTS-} +m --read0" script='BEGIN { getc; $/ = "\n\t"; $HISTCOUNT = $ENV{last_hist} + 1 } s/^[ *]//; print $HISTCOUNT - $. . "\t$_" if !$seen{$_}++' output=$( builtin fc -lnr -2147483648 | From 5ccd390922fd8c1ea217f10c5f6596ff8b444ac2 Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Sun, 16 Oct 2022 10:12:13 +0800 Subject: [PATCH 10/15] Initialize an empty var instead of catching empty expansion --- shell/completion.bash | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/shell/completion.bash b/shell/completion.bash index ece458e84fb..a53fcda3ff1 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -173,13 +173,14 @@ __fzf_generic_path_completion() { base=${cur:0:${#cur}-${#trigger}} eval "base=$base" + dir= [[ $base = *"/"* ]] && dir="$base" while true; do - if [[ -z "${dir-}" ]] || [[ -d "${dir-}" ]]; then + if [[ -z "$dir" ]] || [[ -d "$dir" ]]; then leftover=${base/#"${dir-}"} leftover=${leftover/#\/} - [[ -z "${dir-}" ]] && dir='.' - [[ "${dir-}" != "/" ]] && dir="${dir/%\//}" + [[ -z "$dir" ]] && dir='.' + [[ "$dir" != "/" ]] && dir="${dir/%\//}" matches=$(eval "$1 $(printf %q "${dir-}")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_COMPLETION_OPTS-} $2" __fzf_comprun "$4" -q "$leftover" | while read -r item; do printf "%q " "${item%$3}$3" done) @@ -193,8 +194,8 @@ __fzf_generic_path_completion() { printf '\e[5n' return 0 fi - dir=$(dirname "${dir-}") - [[ "${dir-}" =~ /$ ]] || dir="${dir-}"/ + dir=$(dirname "$dir") + [[ "$dir" =~ /$ ]] || dir="$dir"/ done else shift From 3236d57d0b8d7240a367e66332077daa277a0cf7 Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Sun, 16 Oct 2022 13:38:33 +0800 Subject: [PATCH 11/15] Cleanup leftover unneeded expansion --- shell/completion.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/completion.bash b/shell/completion.bash index a53fcda3ff1..91b93accb03 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -177,11 +177,11 @@ __fzf_generic_path_completion() { [[ $base = *"/"* ]] && dir="$base" while true; do if [[ -z "$dir" ]] || [[ -d "$dir" ]]; then - leftover=${base/#"${dir-}"} + leftover=${base/#"$dir"} leftover=${leftover/#\/} [[ -z "$dir" ]] && dir='.' [[ "$dir" != "/" ]] && dir="${dir/%\//}" - matches=$(eval "$1 $(printf %q "${dir-}")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_COMPLETION_OPTS-} $2" __fzf_comprun "$4" -q "$leftover" | while read -r item; do + matches=$(eval "$1 $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_COMPLETION_OPTS-} $2" __fzf_comprun "$4" -q "$leftover" | while read -r item; do printf "%q " "${item%$3}$3" done) matches=${matches% } From 389d2f7ee83e9a37acda1c0d9e0810ed51d6d0de Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Sun, 16 Oct 2022 14:09:51 +0800 Subject: [PATCH 12/15] Split expression into two --- shell/completion.bash | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/completion.bash b/shell/completion.bash index 91b93accb03..51687a081dd 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -139,7 +139,8 @@ _fzf_handle_dynamic_completion() { shift orig_cmd="$1" orig_var="_fzf_orig_completion_$cmd" - orig="${!orig_var-##*#}" + orig="${!orig_var-}" + orig="${orig##*#}" if [[ -n "$orig" ]] && type "$orig" > /dev/null 2>&1; then $orig "$@" elif [[ -n "${_fzf_completion_loader-}" ]]; then From 722461f089f784ce5d5f46627cde11cc70b5946c Mon Sep 17 00:00:00 2001 From: John Fred Fadrigalan Date: Sun, 16 Oct 2022 14:23:04 +0800 Subject: [PATCH 13/15] Remaining var. --- shell/completion.zsh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/completion.zsh b/shell/completion.zsh index e695c344dda..81597985d64 100644 --- a/shell/completion.zsh +++ b/shell/completion.zsh @@ -99,9 +99,9 @@ fi __fzf_comprun() { if [[ "$(type _fzf_comprun 2>&1)" =~ function ]]; then _fzf_comprun "$@" - elif [ -n "$TMUX_PANE" ] && { [ "${FZF_TMUX:-0}" != 0 ] || [ -n "$FZF_TMUX_OPTS" ]; }; then + elif [ -n "${TMUX_PANE-}" ] && { [ "${FZF_TMUX:-0}" != 0 ] || [ -n "${FZF_TMUX_OPTS-}" ]; }; then shift - if [ -n "$FZF_TMUX_OPTS" ]; then + if [ -n "${FZF_TMUX_OPTS-}" ]; then fzf-tmux ${(Q)${(Z+n+)FZF_TMUX_OPTS}} -- "$@" else fzf-tmux -d ${FZF_TMUX_HEIGHT:-40%} -- "$@" @@ -145,7 +145,7 @@ __fzf_generic_path_completion() { leftover=${leftover/#\/} [ -z "$dir" ] && dir='.' [ "$dir" != "/" ] && dir="${dir/%\//}" - matches=$(eval "$compgen $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS" __fzf_comprun "$cmd" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover" | while read item; do + matches=$(eval "$compgen $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS ${FZF_COMPLETION_OPTS-}" __fzf_comprun "$cmd" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover" | while read item; do item="${item%$suffix}$suffix" echo -n "${(q)item} " done) @@ -208,7 +208,7 @@ _fzf_complete() { type $post > /dev/null 2>&1 || post=cat _fzf_feed_fifo "$fifo" - matches=$(FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS $str_arg" __fzf_comprun "$cmd" "${args[@]}" -q "${(Q)prefix}" < "$fifo" | $post | tr '\n' ' ') + matches=$(FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS ${FZF_COMPLETION_OPTS-} $str_arg" __fzf_comprun "$cmd" "${args[@]}" -q "${(Q)prefix}" < "$fifo" | $post | tr '\n' ' ') if [ -n "$matches" ]; then LBUFFER="$lbuf$matches" fi From 7b81a7e29cedcec61a49ef4253e95742cb1f28f5 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 16 Oct 2022 15:47:56 +0900 Subject: [PATCH 14/15] Test with 'set -u' (will fail) --- test/test_go.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/test_go.rb b/test/test_go.rb index bb6a4c8d89e..ab5a4ae66ed 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -2758,6 +2758,7 @@ def set_var(name, val) end __END__ +set -u PS1= PROMPT_COMMAND= HISTFILE= HISTSIZE=100 unset <%= UNSETS.join(' ') %> unset $(env | sed -n /^_fzf_orig/s/=.*//p) @@ -2801,8 +2802,8 @@ def set_var(name, val) awk '{print "g" $0 $0}' } -[ -n "$BASH" ] && complete -F _fzf_complete_f -o default -o bashdefault f -[ -n "$BASH" ] && complete -F _fzf_complete_g -o default -o bashdefault g +[ -n "${BASH-}" ] && complete -F _fzf_complete_f -o default -o bashdefault f +[ -n "${BASH-}" ] && complete -F _fzf_complete_g -o default -o bashdefault g _comprun() { local command=$1 From e78e5b3a897761288cad9409080420880b1f35e7 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 16 Oct 2022 15:48:55 +0900 Subject: [PATCH 15/15] Fix zsh test failures --- shell/completion.zsh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shell/completion.zsh b/shell/completion.zsh index 81597985d64..807d7b3ade2 100644 --- a/shell/completion.zsh +++ b/shell/completion.zsh @@ -145,7 +145,7 @@ __fzf_generic_path_completion() { leftover=${leftover/#\/} [ -z "$dir" ] && dir='.' [ "$dir" != "/" ] && dir="${dir/%\//}" - matches=$(eval "$compgen $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS ${FZF_COMPLETION_OPTS-}" __fzf_comprun "$cmd" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover" | while read item; do + matches=$(eval "$compgen $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_COMPLETION_OPTS-}" __fzf_comprun "$cmd" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover" | while read item; do item="${item%$suffix}$suffix" echo -n "${(q)item} " done) @@ -184,7 +184,7 @@ _fzf_complete() { args=("$@") sep= for i in {0..${#args[@]}}; do - if [[ "${args[$i]}" = -- ]]; then + if [[ "${args[$i]-}" = -- ]]; then sep=$i break fi @@ -208,7 +208,7 @@ _fzf_complete() { type $post > /dev/null 2>&1 || post=cat _fzf_feed_fifo "$fifo" - matches=$(FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS ${FZF_COMPLETION_OPTS-} $str_arg" __fzf_comprun "$cmd" "${args[@]}" -q "${(Q)prefix}" < "$fifo" | $post | tr '\n' ' ') + matches=$(FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore ${FZF_DEFAULT_OPTS-} ${FZF_COMPLETION_OPTS-} $str_arg" __fzf_comprun "$cmd" "${args[@]}" -q "${(Q)prefix}" < "$fifo" | $post | tr '\n' ' ') if [ -n "$matches" ]; then LBUFFER="$lbuf$matches" fi