Skip to content

Commit

Permalink
decode: fix non-working TAB completion in bash-4.4 and lower
Browse files Browse the repository at this point in the history
  • Loading branch information
akinomyoga committed Feb 9, 2023
1 parent 7bd25c9 commit 6351e7f
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 19 deletions.
32 changes: 16 additions & 16 deletions ble.pp
Expand Up @@ -132,15 +132,15 @@ function ble/base/restore-bash-options {
ble/base/adjust-bash-options
} &>/dev/null # set -x 対策 #D0930

## @var _ble_edit_POSIXLY_CORRECT_adjusted
## @var _ble_bash_POSIXLY_CORRECT_adjusted
## 現在 POSIXLY_CORRECT 状態を待避した状態かどうかを保持します。
## @var _ble_edit_POSIXLY_CORRECT_set
## @var _ble_bash_POSIXLY_CORRECT_set
## 待避した POSIXLY_CORRECT の設定・非設定状態を保持します。
## @var _ble_edit_POSIXLY_CORRECT_set
## @var _ble_bash_POSIXLY_CORRECT_set
## 待避した POSIXLY_CORRECT の値を保持します。
_ble_edit_POSIXLY_CORRECT_adjusted=
_ble_edit_POSIXLY_CORRECT_set=
_ble_edit_POSIXLY_CORRECT=
_ble_bash_POSIXLY_CORRECT_adjusted=
_ble_bash_POSIXLY_CORRECT_set=
_ble_bash_POSIXLY_CORRECT=
function ble/base/workaround-POSIXLY_CORRECT {
# This function will be overwritten by ble-decode
true
Expand All @@ -152,29 +152,29 @@ function ble/base/unset-POSIXLY_CORRECT {
fi
}
function ble/base/adjust-POSIXLY_CORRECT {
[[ $_ble_edit_POSIXLY_CORRECT_adjusted ]] && return
_ble_edit_POSIXLY_CORRECT_adjusted=1
_ble_edit_POSIXLY_CORRECT_set=${POSIXLY_CORRECT+set}
_ble_edit_POSIXLY_CORRECT=$POSIXLY_CORRECT
[[ $_ble_bash_POSIXLY_CORRECT_adjusted ]] && return
_ble_bash_POSIXLY_CORRECT_adjusted=1
_ble_bash_POSIXLY_CORRECT_set=${POSIXLY_CORRECT+set}
_ble_bash_POSIXLY_CORRECT=$POSIXLY_CORRECT
unset -v POSIXLY_CORRECT

# ユーザが触ったかもしれないので何れにしても workaround を呼び出す。
ble/base/workaround-POSIXLY_CORRECT
}
function ble/base/restore-POSIXLY_CORRECT {
if [[ ! $_ble_edit_POSIXLY_CORRECT_adjusted ]]; then return; fi # Note: set -e の為 || は駄目
_ble_edit_POSIXLY_CORRECT_adjusted=
if [[ $_ble_edit_POSIXLY_CORRECT_set ]]; then
POSIXLY_CORRECT=$_ble_edit_POSIXLY_CORRECT
if [[ ! $_ble_bash_POSIXLY_CORRECT_adjusted ]]; then return; fi # Note: set -e の為 || は駄目
_ble_bash_POSIXLY_CORRECT_adjusted=
if [[ $_ble_bash_POSIXLY_CORRECT_set ]]; then
POSIXLY_CORRECT=$_ble_bash_POSIXLY_CORRECT
else
ble/base/unset-POSIXLY_CORRECT
fi
}
ble/base/adjust-POSIXLY_CORRECT

function ble/base/is-POSIXLY_CORRECT {
if [[ $_ble_edit_POSIXLY_CORRECT_adjusted ]]; then
[[ $_ble_edit_POSIXLY_CORRECT_set ]]
if [[ $_ble_bash_POSIXLY_CORRECT_adjusted ]]; then
[[ $_ble_bash_POSIXLY_CORRECT_set ]]
else
[[ ${POSIXLY_CORRECT+set} ]]
fi
Expand Down
16 changes: 13 additions & 3 deletions src/decode.sh
Expand Up @@ -441,15 +441,25 @@ function ble-decode/.hook/erase-progress {
fi
}

function ble-decode/.hook/adjust-volatile-options {
# Note: bind -x 内の set +v は揮発性なのでできるだけ先頭で set +v しておく。
# (PROLOGUE 内から呼ばれる) stdout.on より前であれば大丈夫 #D0930
if [[ $_ble_bash_options_adjusted ]]; then
set +ev
fi
if [[ $_ble_bash_POSIXLY_CORRECT_adjusted && ${POSIXLY_CORRECT+set} ]]; then
set +o posix
ble/base/workaround-POSIXLY_CORRECT
fi
}

function ble-decode/.hook {
if ble/util/is-stdin-ready; then
ble/array#push _ble_decode_input_buffer "$@"
return
fi

# Note: bind -x 内の set +v は揮発性なのでできるだけ先頭で set +v しておく。
# (PROLOGUE 内から呼ばれる) stdout.on より前であれば大丈夫 #D0930
[[ ! $_ble_bash_options_adjusted ]] || set +ev +o posix
ble-decode/.hook/adjust-volatile-options

local IFS=$' \t\n'
ble-decode/PROLOGUE
Expand Down

0 comments on commit 6351e7f

Please sign in to comment.