Skip to content

Commit

Permalink
main: preserve user's "expand_aliases" and allow aliases in internal …
Browse files Browse the repository at this point in the history
…space (fixup 0860be0)
  • Loading branch information
akinomyoga committed May 28, 2021
1 parent 5d85238 commit afc4112
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 13 deletions.
24 changes: 15 additions & 9 deletions ble.pp
Expand Up @@ -283,6 +283,11 @@ function ble/base/restore-builtin-wrappers {
{
ble/base/adjust-builtin-wrappers-1
ble/base/adjust-builtin-wrappers-2

# 対策 expand_aliases (暫定) 終了
if [[ $_ble_bash_expand_aliases ]]; then
shopt -s expand_aliases
fi
} 2>/dev/null # set -x 対策

function ble/base/adjust-bash-options {
Expand All @@ -299,30 +304,31 @@ function ble/base/adjust-bash-options {
_ble_bash_nocasematch=
shopt -q nocasematch 2>/dev/null &&
_ble_bash_nocasematch=1 && shopt -u nocasematch

# Note: expand_aliases はユーザー設定を復元する為に記録する
_ble_bash_expand_aliases=
shopt -q expand_aliases 2>/dev/null &&
_ble_bash_expand_aliases=1 && shopt -u expand_aliases
} 2>/dev/null # set -x 対策 #D0930
function ble/base/restore-bash-options {
[[ $_ble_bash_options_adjusted ]] || return 1
_ble_bash_options_adjusted=
[[ $_ble_bash_expand_aliases ]] && shopt -s expand_aliases
[[ $_ble_bash_nocasematch ]] && shopt -s nocasematch
[[ $_ble_bash_setu && ! -o nounset ]] && set -u
[[ $_ble_bash_setv && ! -o verbose ]] && set -v
[[ $_ble_bash_setx && ! -o xtrace ]] && set -x
[[ $_ble_bash_sete && ! -o errexit ]] && set -e # set -e は最後
} 2>/dev/null # set -x 対策 #D0930
function ble/base/reinforce-bash-options {
# bind -x が終わる度に設定が復元されてしまうので毎回設定し直す。
shopt -u expand_aliases
function ble/base/recover-bash-options {
# bind -x が終わる度に設定が復元されてしまうので毎回設定し直す #D1526 #D1574
if [[ $_ble_bash_expand_aliases ]]; then
shopt -s expand_aliases
else
shopt -u expand_aliases
fi
}

{
# 対策 expand_aliases (暫定) 終了
[[ $_ble_bash_expand_aliases ]] && shopt -s expand_aliases || ((1))
ble/base/adjust-bash-options
} &>/dev/null # set -x 対策 #D0930
{ ble/base/adjust-bash-options; } &>/dev/null # set -x 対策 #D0930

builtin bind &>/dev/null # force to load .inputrc

Expand Down
1 change: 1 addition & 0 deletions memo/ChangeLog.md
Expand Up @@ -73,6 +73,7 @@
- complete (`ble/complete/source:file`): remove slow old codes (reported by timjrd) `#D1512` e5be0c1
- main: preserve user-space overridden builtins `#D1519` 0860be0
- util (`ble/util/type`): fix a bug that aliases are not properly highlighted (reported by 3ximus) `#D1526` 45b30a7
- main: preserve user's `expand_aliases` and allow aliases in internal space (fixup 0860be0) `#D1574` 0000000
- syntax (`ble/syntax:bash/simple-word/eval`): optimize large array passing (motivated by timjrd) `#D1522` c89aa23
- main: accept non-regular files as `blerc` and add option `--norc` `#D1530` 7244e2f
- prompt: let `stderr` pass through to tty in evaluating `PS0` (reported by tycho-kirchner) `#D1541` 24a88ce
Expand Down
35 changes: 35 additions & 0 deletions note.txt
Expand Up @@ -4655,6 +4655,41 @@ bash_tips

2021-05-28

* main: expand_alias の設定を変えるのはやはり良くない [#D1574]

現在 ble.sh の内部では完全に alias を無効化しているが、そうすると blerc の
中で alias を使っている場合に対して影響が出るのではないかという気がする。そ
の場合には関数を使う様に指示する事もできるが、やはり alias が使えないという
のは特殊な気がする。

特に何らかのフレームワークを介して意図的に alias を使って様々の事を実現して
いるという場合も考えられる。そういう事を考えると alias を何もかも動かなくし
てしまうのは違う様な気がする。

うーん。expand_aliases が影響を与えるのは主に ble.sh のロード時であって、ロー
ドが完了した暁には殆ど影響はない? 然し、実際には沢山の eval を使っていて
eval は影響を受ける。特にキーワードや builtin に名前が一致する様な alias に
関しては対策を行っている。その他に影響を与える様な変な alias を設定している
人がいたとしたらそれはその人が悪いのであって、ble.sh の関知する所ではないの
ではないか。という事を考えるとやはり alias は有効のまま処理するべきの様な気
がする。

一応 expand_aliases の adjust を導入した時の議論を確認して問題がないか考え
る。該当する議論は #D1519 にある。関連する問題として #D1526 があった。改め
てこれについて考え直すのが良い。

* 少なくとも adjust builtins をした後には expand aliases は必要ないのではな
いかという気がする。或いは、adjust builtins で待避する alias の数を増やす
必要がある気もするが。

これの修正は簡単だった。他に影響が現れるとも思いにくいが一応確認はしておく
事にする。

と思ったらやはり単純ではない様だ。どうやら alias の状態が bind -x を跨いで
戻ってしまうのは shopt -u expand_aliases している時だけの問題ではなくて、
shopt -s expand_aliases だった時にも同様の様である。なので、やはりユーザー
の側でどういう状態になっていたのかという事を記録・復元する必要がある。

* ble-sabbrev の初期化遅延で内容出力迄も遅延されている (bash-3.*) [#D1573]

ble-sabbrev の初期化を遅延しているが、内容確認の為の ble-sabbrev ですら遅延
Expand Down
3 changes: 1 addition & 2 deletions src/edit.sh
Expand Up @@ -8299,8 +8299,7 @@ fi

function ble-edit/bind/.head {
ble-edit/bind/stdout.on
ble/base/reinforce-bash-options

ble/base/recover-bash-options
[[ $bleopt_internal_suppress_bash_output ]] ||
ble-edit/bind/.head/adjust-bash-rendering
}
Expand Down
2 changes: 0 additions & 2 deletions src/util.sh
Expand Up @@ -2683,9 +2683,7 @@ fi
## @param[in] command
## 種類を判定するコマンド名を指定します。
function ble/util/type {
[[ $_ble_attached && $_ble_bash_expand_aliases ]] && shopt -s expand_aliases
ble/util/assign-array "$1" 'builtin type -a -t -- "$3" 2>/dev/null' "$2"; local ext=$?
[[ $_ble_attached && $_ble_bash_expand_aliases ]] && shopt -u expand_aliases
return "$ext"
}
## @fn ble/util/expand-alias word
Expand Down

0 comments on commit afc4112

Please sign in to comment.