From be313914a4aed1966380f3decf819a8866c270e6 Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Sat, 12 Jun 2021 15:24:23 +0900 Subject: [PATCH] prompt: support a new backslash sequence "\g{...}" --- memo/ChangeLog.md | 1 + note.txt | 6 ++++++ src/edit.sh | 13 +++++++++++++ 3 files changed, 20 insertions(+) diff --git a/memo/ChangeLog.md b/memo/ChangeLog.md index ddcf1e76..ef98aefd 100644 --- a/memo/ChangeLog.md +++ b/memo/ChangeLog.md @@ -58,6 +58,7 @@ - util (`bleopt`): do no select obsoleted options by wildcards `#D1595` f4312df - progcomp: support quoted commands and better `progcomp_alias` `#D1581` `#D1583` dbe87c3 - syntax: highlight quotes of the `\?` form `#D1584` 5076a03 +- prompt: support a new backslash sequence `\g{...}` `#D1609` 0000000 ## Changes diff --git a/note.txt b/note.txt index e62410f8..b11254b9 100644 --- a/note.txt +++ b/note.txt @@ -4683,6 +4683,12 @@ bash_tips 2021-06-12 + * prompt: \g{...} [#D1609] + + 将来的に Bash が \g に対応するとしても \g{...} の形になるとは限らないし、ま + た、\g 単体であれば \g と \g{...} を区別する事によって処理を分ければ良い。 + 偶々 \g の次に {...} を書きたいという事もそうあるまい。 + * reject: idle: 時々自動的に表示更新をかけるべきではないか [#D1608] 裏で処理が走っている間に状態が変化してそれを表示に反映させたい時にはどうす diff --git a/src/edit.sh b/src/edit.sh index d9bf6703..177a3adb 100644 --- a/src/edit.sh +++ b/src/edit.sh @@ -837,6 +837,19 @@ function ble/prompt/backslash:q { fi return 0 } +function ble/prompt/backslash:g { + local rex='^\{([^{}]*)\}' + if [[ ${tail:2} =~ $rex ]]; then + ((i+=${#BASH_REMATCH})) + local ret + ble/color/gspec2g "${BASH_REMATCH[1]}" + ble/color/g2sgr-ansi "$ret" + ble/prompt/print "$ret" + else + ble/prompt/print "\\$c" + fi + return 0 +} function ble/prompt/backslash:position { ((_ble_textmap_dbeg>=0)) && ble/widget/.update-textmap local fmt=${1:-'(%s,%s)'} pos