sistema_progs

Programas para customizar o meu entorno de traballo nos meus equipos persoais
Log | Files | Refs

sample.RandomColor.bash (1563B)


      1 # ble/contrib/layer/sample.RandomColor.bash (C) 2015, akinomyoga
      2 #
      3 # This is a sample implementation of a highlighting layer.  This defines a
      4 # random-color layer named `RandomColor'.  To use the layer, the layer name can
      5 # be inserted in the array `_ble_highlight_layer_list`:
      6 #
      7 # ```bash
      8 # ble-import layer/sample.RandomColor
      9 # ble/array#insert-before _ble_highlight_layer_list syntax RandomColor
     10 # ```
     11 #
     12 # Note: This code was first introduced in commit ec3f3661b@akinomyoga/ble.sh
     13 # (2015-02-23) but later moved to contrib in refactoring on 2023-09-19.
     14 
     15 _ble_highlight_layer_RandomColor_buff=()
     16 
     17 function ble/highlight/layer:RandomColor/update {
     18   local text=$1 ret i
     19   _ble_highlight_layer_RandomColor_buff=()
     20   for ((i=0;i<${#text};i++)); do
     21     # _ble_highlight_layer_RandomColor_buff[i] に "<sgr><表示文字>" を設定する。
     22     # "<表示文字>" は ${_ble_highlight_layer_plain_buff[i]} でなければならない
     23     # (或いはそれと文字幅が同じ物…ただそれが反映される保証はない)。
     24     ble/color/gspec2sgr "fg=$((RANDOM%256))"
     25     _ble_highlight_layer_RandomColor_buff[i]=$ret${_ble_highlight_layer_plain_buff[i]}
     26   done
     27   PREV_BUFF=_ble_highlight_layer_RandomColor_buff
     28   ((PREV_UMIN=0,PREV_UMAX=${#text}))
     29 }
     30 function ble/highlight/layer:RandomColor/getg {
     31   # ここでは乱数を返しているが、実際は
     32   # PREV_BUFF=_ble_highlight_layer_RandomColor_buff
     33   # に設定した物に対応する物を指定しないと表示が変になる。
     34   local ret; ble/color/gspec2g "fg=$((RANDOM%256))"; g=$ret
     35 }