Skip to content

Commit

Permalink
edit: set "LINENO" for "PS1", "PROMPT_COMMAND", and "DEBUG"
Browse files Browse the repository at this point in the history
  • Loading branch information
akinomyoga committed Jul 5, 2022
1 parent 82232de commit 4d24f84
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 9 deletions.
2 changes: 1 addition & 1 deletion contrib
3 changes: 3 additions & 0 deletions docs/ChangeLog.md
Expand Up @@ -302,6 +302,7 @@
- debug: add `ble/debug/profiler` (motivated by SuperSandro2000) `#D1824` f629698 XXXXXXX
- util (`ble/string#split`): optimize `#D1826` XXXXXXX
- global: avoid passing arbitrary strings through `awk -v var=value` `#D1827` XXXXXXX
- edit: properly set `LINENO` for `PS1`, `PROMPT_COMMAND`, and `DEBUG` `#D1830` XXXXXXX

## Compatibility

Expand Down Expand Up @@ -397,6 +398,8 @@

- prompt-git: detect staged changes `#D1718` 2b48e31
- prompt-git: fix a bug that information is not updated on reload `#D1732` 361e9c5
- config/execmark: show exit status in a separate line `#D1828` XXXXXXX
- prompt-git: ignore untracked files in submodules `#D1829` XXXXXXX

<!---------------------------------------------------------------------------->
# ble-0.4.0-devel2
Expand Down
27 changes: 27 additions & 0 deletions note.txt
Expand Up @@ -1821,6 +1821,16 @@ bash_tips
- Acknowledgments
- keymap の移動 (これは別 commit にする?)

2022-07-04

* ext: trueline と組み合わせた時に問題が起こるとのこと。
https://github.com/lecramyajiv/Emptydeeds/commit/b57e8354cc350d71c655d93c32112427ec8addda#diff-0a1c1083789380c5f4b4aaebd19b6a4b2431ae808f8b456cf865825cfb93b9dfR2527

* bash: history timestamp に問題がある時に history の初期化が正しくない

bash がエラーメッセージを出力する (bash-5.0+) または segfault する
(bash-4.4-)。現状ではエラーメッセージがそのまま履歴に混入してしまっている。

2022-06-28

* コマンド名の曖昧補完ができない。./adf[tab]
Expand All @@ -1829,6 +1839,9 @@ bash_tips
る。/ が含まれる場合には glob で一致させてその上で実行属性でフィルタする必
要がある気がする。

引数の場合にはできている。うーん。/ が含まれる場合は別に生成するべきなので
はないか。

2022-06-19

* 履歴番号を検索やプロンプトで表示しているが、これは history の最初が 1 でな
Expand Down Expand Up @@ -6436,8 +6449,22 @@ bash_tips
Done (実装ログ)
-------------------------------------------------------------------------------

2022-07-05

* edit: プロンプト評価時に LINENO は一時的に現在の行番号に設定するべき [#D1830]

→これは DEBUG を PREEXEC に使っている設定でも重要になる。
うーん。DEBUG trap を呼び出す時にも設定するべきだろうか。
→DEBUG trap を呼び出す時にも LINENO を設定する事にした。

2022-06-28

* contrib/prompt-git: untracked content は赤ではない色で表示する for submodule [#D1829]
→untracked files in submodule は単に無視するオプションがあったのでそれを使う事にする。

* contrib/config/execmark: 同じ行に errexit を表示していると気づきにくい [#D1828]
→分けて表示する様にした。

* global: awk -v var=value を介して任意の文字列を渡さない [#D1827]

awk の -v で任意の文字列を渡すことはできない。"" の中であるかのように \? が
Expand Down
23 changes: 15 additions & 8 deletions src/edit.sh
Expand Up @@ -1267,8 +1267,9 @@ function ble/prompt/.instantiate {
if ble/prompt/.uses-builtin-prompt-expansion "$ps"; then
[[ $ps == *'\'[wW]* ]] && ble/prompt/unit/add-hash '$PWD'
ble-edit/exec/.setexit "$_ble_edit_exec_lastarg"
BASH_COMMAND=$_ble_edit_exec_BASH_COMMAND \
builtin eval 'expanded=${ps@P}'
LINENO=$_ble_edit_LINENO \
BASH_COMMAND=$_ble_edit_exec_BASH_COMMAND \
builtin eval 'expanded=${ps@P}'

else
# 展開設定
Expand All @@ -1287,8 +1288,9 @@ function ble/prompt/.instantiate {
ble/prompt/.escape "$processed"; local escaped=$ret
expanded=${trace_hash0#*:} # Note: これは次行が失敗した時の既定値
ble-edit/exec/.setexit "$_ble_edit_exec_lastarg"
BASH_COMMAND=$_ble_edit_exec_BASH_COMMAND \
builtin eval "expanded=\"$escaped\""
LINENO=$_ble_edit_LINENO \
BASH_COMMAND=$_ble_edit_exec_BASH_COMMAND \
builtin eval "expanded=\"$escaped\""
else
expanded=$processed
fi
Expand Down Expand Up @@ -1601,7 +1603,8 @@ function _ble_prompt_update__eval_prompt_command_1 {
# まう。仕方がないので local で _ble_edit_exec_TRAPDEBUG_enabled=1 を設定する。
local _ble_edit_exec_TRAPDEBUG_enabled=1
ble-edit/exec/.setexit "$_ble_edit_exec_lastarg"
BASH_COMMAND=$_ble_edit_exec_BASH_COMMAND \
LINENO=$_ble_edit_LINENO \
BASH_COMMAND=$_ble_edit_exec_BASH_COMMAND \
builtin eval -- "$1"
}
ble/function#trace _ble_prompt_update__eval_prompt_command_1
Expand Down Expand Up @@ -6205,11 +6208,13 @@ function ble-edit/exec:gexec/.TRAPDEBUG {
ble/base/.adjust-bash-options __set __shopt

# Run user DEBUG trap in the sandbox
[[ $_ble_attached ]] || local _ble_edit_LINENO=${BASH_LINENO[${#BASH_LINENO[@]}-1]}
local _ble_builtin_trap_processing=$_ble_builtin_trap_DEBUG
local _ble_builtin_trap_postproc
ble/util/setexit "$__lastexit" "$__lastarg"
ble/builtin/trap/invoke DEBUG
LINENO=$_ble_edit_LINENO ble/builtin/trap/invoke DEBUG
_ble_edit_exec_TRAPDEBUG_postproc=$_ble_builtin_trap_postproc # unused
[[ $_ble_attached ]] || ble/util/unlocal _ble_edit_LINENO

# Handle INT
local depth=${#FUNCNAME[*]}
Expand All @@ -6236,8 +6241,9 @@ function ble-edit/exec:gexec/.TRAPDEBUG {
_ble_edit_exec_TRAPDEBUG_lastexit=$__lastexit
_ble_edit_exec_TRAPDEBUG_lastarg=$__lastarg
_ble_edit_exec_TRAPDEBUG_postproc='ble/util/setexit "$_ble_edit_exec_TRAPDEBUG_lastexit" "$_ble_edit_exec_TRAPDEBUG_lastarg"'
local user_trap=${_ble_builtin_trap_handlers[_ble_builtin_trap_DEBUG]}
local user_trap=${_ble_builtin_trap_handlers[_ble_builtin_trap_DEBUG]} q=\' Q="'\''"
if [[ $user_trap == *[![:space:]]* ]]; then
[[ $_ble_attached ]] && user_trap="LINENO=\$_ble_edit_LINENO builtin eval '${user_trap//$q/$Q}'"
_ble_edit_exec_TRAPDEBUG_postproc="$_ble_edit_exec_TRAPDEBUG_postproc;$user_trap"
fi

Expand Down Expand Up @@ -6343,7 +6349,8 @@ function ble-edit/exec:gexec/invoke-hook-with-setexit {
local -a BLE_PIPESTATUS
BLE_PIPESTATUS=("${_ble_edit_exec_PIPESTATUS[@]}")
ble-edit/exec/.setexit "$_ble_edit_exec_lastarg"
BASH_COMMAND=$_ble_edit_exec_BASH_COMMAND \
LINENO=$_ble_edit_LINENO \
BASH_COMMAND=$_ble_edit_exec_BASH_COMMAND \
blehook/invoke "$@"
} >&$_ble_util_fd_stdout 2>&$_ble_util_fd_stderr

Expand Down

0 comments on commit 4d24f84

Please sign in to comment.