From bb8541da3e7eb5cebfe87541eb0873b3a32b759b Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Mon, 13 Feb 2023 05:59:17 +0900 Subject: [PATCH] color: rearrange color table by "ble palette" --- ble.pp | 2 +- contrib | 2 +- docs/ChangeLog.md | 1 + note.txt | 13 +++++----- src/color.sh | 60 ++++++++++++++++++++++++++++++++++++++++++++--- 5 files changed, 67 insertions(+), 11 deletions(-) diff --git a/ble.pp b/ble.pp index 19172497..dd0d9009 100644 --- a/ble.pp +++ b/ble.pp @@ -2020,7 +2020,7 @@ function ble/dispatch { (opt) bleopt "$@" ;; (hook) blehook "$@" ;; (sabbrev) ble-sabbrev "$@" ;; - (palette) ble-color-show "$@" ;; + (palette) ble-palette "$@" ;; (help|--help) ble/dispatch/.help "$@" ;; (version|--version) ble/util/print "ble.sh, version $BLE_VERSION (noarch)" ;; (check|--test) ble/base/sub:test "$@" ;; diff --git a/contrib b/contrib index d36f22da..b7457cda 160000 --- a/contrib +++ b/contrib @@ -1 +1 @@ -Subproject commit d36f22da991f6c83a41efff7f209b8024e61ac2d +Subproject commit b7457cda161893937f578d2bd0eb1979986c4ce6 diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md index 9fc98aae..1e2f4efa 100644 --- a/docs/ChangeLog.md +++ b/docs/ChangeLog.md @@ -221,6 +221,7 @@ - canvas: update Unicode version 15.0.0 `#D1880` 49e55f4 - decode (`vi_imap-rlfunc.txt`): update the widget for `backward-kill-word` as `kill-backward-{u => c}word` `#D1896` e19b796 - term (`_ble_term_TERM`): detect wezterm-20220408 `#D1909` 486564a +- color: rearrange color table by `ble palette` (suggested by stackoverflow/caoanan) `#D1961` xxxxxxx ## Fixes diff --git a/note.txt b/note.txt index 51ad3a5b..ffcc1bfa 100644 --- a/note.txt +++ b/note.txt @@ -1947,15 +1947,10 @@ bash_tips * README: Guix package の位置が変わっている。 * syntax: 関数名として function `xxx` 等も実は許されている。 + 5.3 以降では更に <(...) も関数名として使える。 * syntax: 5.2 以降では (()) [[]] の直後は } 等が来ても良い。 - * ble palette - https://superuser.com/a/1512656/980046 コメント - - 色の排列を考え直す余地はある。現在は横幅 64 使っている。高さが 32 なのは実 - は端末の 80x24 には入り切らない。 - 2023-02-06 * auto-complete: cd 等簡単に成否が分かる物については判定して除外する可能性 @@ -6682,6 +6677,12 @@ bash_tips 2023-02-12 + * color: ble palette の並び方をより分りやすく (suggested by stackoverflow/caoanan) [#D1961] + https://superuser.com/a/1512656/980046 コメント by caoanan + + 色の排列を考え直す余地はある。現在は横幅 64 使っている。高さが 32 なのは実 + は端末の 80x24 には入り切らない。 + * syntax: 履歴展開 & "$!", heredoc [#D1960] bash-4.1 以下で echo "$!" を実行しようとしても履歴展開周りで変な事が起こっ diff --git a/src/color.sh b/src/color.sh index c7796c7b..467e5b0e 100644 --- a/src/color.sh +++ b/src/color.sh @@ -13,6 +13,8 @@ _ble_color_gflags_Blink=0x40 _ble_color_gflags_DecorationMask=0x77 _ble_color_gflags_FgMask=0x00000000FFFFFF00 _ble_color_gflags_BgMask=0x00FFFFFF00000000 +_ble_color_gflags_FgShift=8 +_ble_color_gflags_BgShift=32 _ble_color_gflags_FgIndexed=0x0100000000000000 _ble_color_gflags_BgIndexed=0x0200000000000000 @@ -72,17 +74,69 @@ function ble-color-show { return "$?" fi - local cols=16 + local cols=$(((${COLUMNS:-80}-1)/4)) + ((cols<1?(cols=1):(cols>16&&(cols=16)))) local bg bg0 bgN ret gflags=$((_ble_color_gflags_BgIndexed|_ble_color_gflags_FgIndexed)) for ((bg0=0;bg0<256;bg0+=cols)); do ((bgN=bg0+cols,bgN<256||(bgN=256))) for ((bg=bg0;bg=12?3+p:p)) + for ((B=0;B<6;B++)); do + ((bg=16+R*36+G*6+B)) + ble/color/g2sgr "$((gflags|bg<<_ble_color_gflags_BgShift|(l%2?15:0)<<_ble_color_gflags_FgShift))" + printf '%s%03d ' "$ret" "$bg" + done + if ((p+1<3)); then + printf '%s ' "$_ble_term_sgr0" + else + printf '%s\n' "$_ble_term_sgr0" + fi + done + done + + local l c K + for ((l=0;l<4;l++)); do + for ((c=0;c<12;c++)); do + ((K=l/2*12+c)) + ((bg=232+K)) + ble/color/g2sgr "$((gflags|bg<<_ble_color_gflags_BgShift|(l%2?15:0)<<_ble_color_gflags_FgShift))" printf '%s%03d ' "$ret" "$bg" done printf '%s\n' "$_ble_term_sgr0"