From ea99d944aafc8b12d82d1d0f3dc5d6ac66611fc9 Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Mon, 6 Mar 2023 15:08:59 +0900 Subject: [PATCH] prompt: clear remaining SGR after "prompt_rps1" (fixup e128801c) --- docs/ChangeLog.md | 1 + note.txt | 15 +++++++++++++++ src/edit.sh | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md index 1c05730c..089a2e9c 100644 --- a/docs/ChangeLog.md +++ b/docs/ChangeLog.md @@ -26,6 +26,7 @@ - prompt: support multiline `prompt_rps1` `#D1502` 4fa139a - canvas: fix wrong coordinate calculation on linefolding (reported by telometto) `#D1602` 9badb5f - prompt: fix coordinates after `prompt_rps1` `#D1972` e128801 + - prompt: clear remaining SGR after `prompt_rps1` (reported by linwaytin) `#D2003` xxxxxxx - syntax: support tilde expansions in parameter expansions `#D1513` 0506df2 - decode: support `ble-bind -m KEYMAP --cursor DECSCUSR` (motivated by jmederosalvarado) `#D1514` `#D1515` `#D1516` 79d671d - decode: reflect changes after `ble-bind --cursor` `#D1873` 39efcf9 diff --git a/note.txt b/note.txt index be701765..f0155ba6 100644 --- a/note.txt +++ b/note.txt @@ -6630,6 +6630,21 @@ bash_tips 2023-03-06 + * edit (rps1): PS1 に prompt_rps1 の色が残る (reported by linwaytin) [#D2003] + https://github.com/akinomyoga/ble.sh/issues/293#issuecomment-1452786142 + https://github.com/akinomyoga/ble.sh/issues/293#issuecomment-1453507285 + Ref #D1972 + + 今迄問題が生じていなかったのは ble/textarea#render/.show-rprompt の直後にプ + ロンプト原点以外の場所にカーソルを配置していたので、sgr に色が設定されてい + たとしても何れにしても goto.draw の際に色がクリアされていたから。 + + それが e128801c1 によってプロンプト原点に強制的に戻る様にしたので PS1 の開 + 始位置に移動する時の sgr0 が出力されなくなって色が残る事となった。元々移動 + する時に sgr0 を出力したのはそうしないと変な所の色に影響が出てしまう端末を + 避ける目的があったので、元々 show-rprompt で先頭に戻る CR の直前の時点で + _ble_term_sgr0 を出力するべきである。その様に修正した。 + * contrib/prompt-git: git gc したら branch 名など取得できなくなった [#D2002] 調べてみるとどうも .git/info/refs の中にまとめて記録される様になった様だ。 diff --git a/src/edit.sh b/src/edit.sh index 56e1d51b..9ec20b53 100644 --- a/src/edit.sh +++ b/src/edit.sh @@ -3184,7 +3184,7 @@ function ble/textarea#render/.show-prompt { ## @var[in] cols function ble/textarea#render/.show-rprompt { [[ $1 || $_ble_prompt_rps1_dirty ]] || return 0 - local rps1out=${_ble_prompt_rps1_data[8]}$_ble_term_cr + local rps1out=${_ble_prompt_rps1_data[8]}$_ble_term_sgr0$_ble_term_cr local rps1x=0 local rps1y=${_ble_prompt_rps1_data[4]} # Note: cols は画面右端ではなく textmap の右端