@kecan0406/ttheme 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.1",
2
+ "version": "1.1.3",
3
3
  "gate": [
4
4
  {
5
5
  "rule": "foreground",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kecan0406/ttheme",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "ttheme": "bin/ttheme.js"
package/shell/ttheme.zsh CHANGED
@@ -4,7 +4,7 @@ zmodload -F zsh/stat b:zstat 2>/dev/null
4
4
 
5
5
  __tt_palettes_load() {
6
6
  local -a at
7
- unset TTHEME_PALETTE TTHEME_GROUP TTHEME_NATIVE TTHEME_SRC
7
+ unset TTHEME_PALETTE TTHEME_GROUP TTHEME_CATALOG TTHEME_NATIVE TTHEME_SRC
8
8
  source $TTHEME_HOME/palettes.zsh || return 1
9
9
  zstat -F %s.%N -A at +mtime -- $TTHEME_HOME/palettes.zsh 2>/dev/null
10
10
  TTHEME_PALETTES_AT=$at[1]
@@ -231,7 +231,7 @@ __tt_name_of() { REPLY=${${(k)TTHEME_PALETTE[(re)$1]}:-custom} }
231
231
  __tt_color() { [[ -t 1 && -z $NO_COLOR && $TERM != dumb ]] }
232
232
 
233
233
  __tt_palette_line() {
234
- local name=$1 width=$2 on=$3 hex cell="" bar=""
234
+ local name=$1 width=$2 on=$3 label=${4:-$1} hex cell="" bar=""
235
235
  local -a p=(${=TTHEME_PALETTE[$name]}) sw=(${=TTHEME_SWATCH[$name]})
236
236
  (( ${#p} >= 20 )) || return 1
237
237
  for hex in $sw; do
@@ -243,9 +243,9 @@ __tt_palette_line() {
243
243
  printf -v ac '\e[38;2;%d;%d;%dm' $((16#${cur:0:2})) $((16#${cur:2:2})) $((16#${cur:4:2}))
244
244
  printf -v bar '\e[48;2;%d;%d;%d;38;2;%d;%d;%dm' \
245
245
  $((16#${sel:0:2})) $((16#${sel:2:2})) $((16#${sel:4:2})) $((16#${fg:0:2})) $((16#${fg:2:2})) $((16#${fg:4:2}))
246
- printf '%s▌\e[39m %s %s■\e[39m \e[1m%-*s\e[22m %s\e[0m\n' "$ac" "$bar" "$ac" "$width" "$name" "$cell"
246
+ printf '%s▌\e[39m %s %s■\e[39m \e[1m%-*s\e[22m %s\e[0m\n' "$ac" "$bar" "$ac" "$width" "$label" "$cell"
247
247
  else
248
- printf ' %-*s %s\e[0m\n' "$width" "$name" "$cell"
248
+ printf ' %-*s %s\e[0m\n' "$width" "$label" "$cell"
249
249
  fi
250
250
  }
251
251
 
@@ -457,7 +457,7 @@ __tt_order() {
457
457
  }
458
458
 
459
459
  __tt_menu() {
460
- local k cur="" grp last_grp="" REPLY
460
+ local k cur="" grp last_grp="" shelf last_shelf="" label REPLY
461
461
  local -a reply
462
462
  local -i width=0
463
463
  __tt_order
@@ -469,7 +469,9 @@ __tt_menu() {
469
469
  fi
470
470
  [[ -n $TTHEME_SPEC ]] && __tt_name_of "$TTHEME_SPEC" && cur=$REPLY
471
471
  for k in $reply; do
472
- (( ${#k} > width )) && width=${#k}
472
+ label=${k##*/}
473
+ [[ -n ${TTHEME_CATALOG[$k]} && ${TTHEME_GROUP[$k]} == *@* ]] && label=" $label"
474
+ (( ${#label} > width )) && width=${#label}
473
475
  done
474
476
  for k in $reply; do
475
477
  grp=${TTHEME_GROUP[$k]:-Other}
@@ -478,9 +480,17 @@ __tt_menu() {
478
480
  printf ' \033[1m%s\033[0m' "$grp"
479
481
  [[ -n ${TTHEME_NATIVE[$k]} ]] && printf ' \033[2m%s\033[0m' "${TTHEME_NATIVE[$k]}"
480
482
  printf '\n'
481
- last_grp=$grp
483
+ last_grp=$grp last_shelf=""
482
484
  fi
483
- __tt_palette_line "$k" $width ${${(M)k:#$cur}:+1}
485
+ shelf=""
486
+ [[ $grp == *@* ]] && shelf=${TTHEME_CATALOG[$k]}
487
+ if [[ -n $shelf && $shelf != "$last_shelf" ]]; then
488
+ printf ' \033[1m%s\033[0m\n' "$shelf"
489
+ last_shelf=$shelf
490
+ fi
491
+ label=${k##*/}
492
+ [[ -n $shelf ]] && label=" $label"
493
+ __tt_palette_line "$k" $width "${${(M)k:#$cur}:+1}" "$label"
484
494
  done
485
495
  printf '\n \033[2mttheme use <palette> paints this tab · ttheme preview · ttheme help\033[0m\n'
486
496
  }
@@ -671,14 +681,14 @@ __tt_rotate() {
671
681
 
672
682
  __tt_pv_rows() {
673
683
  rtype=() rval=() rcnt=()
674
- local g t gm ruled=""
675
- local -a ts
684
+ local g t c gm ruled=""
685
+ local -a ts cs loose inside
676
686
  for g in $groups; do
677
687
  ts=()
678
688
  gm=""
679
689
  [[ -n $flt && ${(L)g} == *$flt* ]] && gm=1
680
690
  for t in ${=gthemes[$g]}; do
681
- [[ -z $flt || -n $gm || $t == *$flt* ]] && ts+=($t)
691
+ [[ -z $flt || -n $gm || $t == *$flt* || ${(L)TTHEME_CATALOG[$t]} == *$flt* ]] && ts+=($t)
682
692
  done
683
693
  [[ -n $flt ]] && (( ! ${#ts} )) && continue
684
694
  if [[ $g == *@* && -z $ruled ]]; then
@@ -686,12 +696,38 @@ __tt_pv_rows() {
686
696
  (( ${#rtype} )) && { rtype+=(rule); rval+=(''); rcnt+=(0) }
687
697
  fi
688
698
  rtype+=(hdr); rval+=($g); rcnt+=(${#ts})
689
- if [[ -n $flt || -n ${exp[$g]} ]]; then
690
- for t in $ts; do rtype+=(thm); rval+=($t); rcnt+=(0); done
691
- fi
699
+ [[ -n $flt || -n ${exp[$g]} ]] || continue
700
+ cs=() loose=()
701
+ for t in $ts; do
702
+ c=${TTHEME_CATALOG[$t]}
703
+ if [[ -n $c && $g == *@* ]]; then
704
+ (( ${cs[(Ie)$c]} )) || cs+=($c)
705
+ else
706
+ loose+=($t)
707
+ fi
708
+ done
709
+ for c in $cs; do
710
+ inside=()
711
+ for t in $ts; do
712
+ [[ ${TTHEME_CATALOG[$t]} == "$c" ]] && inside+=($t)
713
+ done
714
+ rtype+=(cat); rval+=("$g/$c"); rcnt+=(${#inside})
715
+ if [[ -n $flt || -n ${exp[$g/$c]} ]]; then
716
+ for t in $inside; do rtype+=(thm); rval+=($t); rcnt+=(0); done
717
+ fi
718
+ done
719
+ for t in $loose; do rtype+=(thm); rval+=($t); rcnt+=(0); done
692
720
  done
693
721
  }
694
722
 
723
+ __tt_pv_at() {
724
+ local i
725
+ for (( i = 1; i <= ${#rval}; i++ )); do
726
+ [[ ${rtype[i]} == (hdr|cat) && ${rval[i]} == "$1" ]] && { cur=$i; return 0 }
727
+ done
728
+ return 0
729
+ }
730
+
695
731
  __tt_pv_first() {
696
732
  local name=$1 i
697
733
  cur=1 top=1
@@ -707,8 +743,9 @@ __tt_pv_first() {
707
743
  }
708
744
 
709
745
  __tt_pv_goto() {
710
- local name=$1 i
711
- exp[${TTHEME_GROUP[$name]:-Other}]=1
746
+ local name=$1 i g=${TTHEME_GROUP[$1]:-Other} c=${TTHEME_CATALOG[$1]}
747
+ exp[$g]=1
748
+ [[ -n $c && $g == *@* ]] && exp[$g/$c]=1
712
749
  __tt_pv_rows
713
750
  for (( i = 1; i <= ${#rval}; i++ )); do
714
751
  [[ ${rtype[i]} == thm && ${rval[i]} == $name ]] && { cur=$i; return 0 }
@@ -738,16 +775,19 @@ __tt_pv_toggle() {
738
775
 
739
776
  __tt_pv_left() {
740
777
  [[ -n $flt ]] && return 0
741
- if [[ ${rtype[cur]} == hdr ]]; then
742
- [[ -n ${exp[${rval[cur]}]} ]] && __tt_pv_toggle
778
+ if [[ ${rtype[cur]} == (hdr|cat) ]]; then
779
+ if [[ -n ${exp[${rval[cur]}]} ]]; then
780
+ __tt_pv_toggle
781
+ elif [[ ${rtype[cur]} == cat ]]; then
782
+ __tt_pv_at ${rval[cur]%%/*}
783
+ fi
743
784
  return 0
744
785
  fi
745
- local g=${TTHEME_GROUP[${rval[cur]}]:-Other} i
746
- for (( i = cur; i >= 1; i-- )); do
747
- [[ ${rtype[i]} == hdr ]] && { cur=$i; break }
748
- done
786
+ local g=${TTHEME_GROUP[${rval[cur]}]:-Other} c=${TTHEME_CATALOG[${rval[cur]}]}
787
+ [[ -n $c && $g == *@* ]] && g=$g/$c
749
788
  exp[$g]=""
750
789
  __tt_pv_rows
790
+ __tt_pv_at $g
751
791
  }
752
792
 
753
793
  typeset -gA TTHEME_GLYPHS=(
@@ -815,7 +855,7 @@ __tt_pv_hl() {
815
855
  }
816
856
 
817
857
  __tt_pv_row() {
818
- local t=${rval[$1]} b=$'\e[1m' d=$'\e[2m' r=$'\e[22;24;39m' z=$'\e[0m' on="" gut=" " base="" lead=$'\e[2m' mark=" " name arrow=▸
858
+ local t=${rval[$1]} b=$'\e[1m' d=$'\e[2m' r=$'\e[22;24;39m' z=$'\e[0m' on="" gut=" " base="" lead=$'\e[2m' mark=" " name arrow=▸ ind=" "
819
859
  local -i w
820
860
  (( color )) || b= d= r= z= lead=
821
861
  if (( $1 == cur )); then
@@ -843,19 +883,37 @@ __tt_pv_row() {
843
883
  REPLY=$gut$on" "$lead$arrow$r" "$base$REPLY$r${(l:w:: :)}$d${rcnt[$1]}$r" "$z
844
884
  return 0
845
885
  fi
886
+ if [[ ${rtype[$1]} == cat ]]; then
887
+ [[ -n $flt || -n ${exp[$t]} ]] && arrow=▾
888
+ name=${t#*/}
889
+ (( ${(m)#name} > lw - 12 )) && name="${name[1,lw-13]}…"
890
+ base=$b
891
+ if (( color )) && [[ $t == "$acat" ]]; then
892
+ base+=$ac lead=$ac
893
+ elif (( $1 == cur )); then
894
+ lead=""
895
+ fi
896
+ __tt_pv_hl "$name" "$base"
897
+ w=$(( lw - 8 - ${(m)#name} - ${#rcnt[$1]} ))
898
+ (( w < 1 )) && w=1
899
+ REPLY=$gut$on" "$lead$arrow$r" "$base$REPLY$r${(l:w:: :)}$d${rcnt[$1]}$r" "$z
900
+ return 0
901
+ fi
846
902
  if (( $1 == cur )); then
847
903
  mark=$ac"■"$r base=$b
848
904
  elif [[ -n $cdot && $t == "$cn" ]]; then
849
905
  mark=$cdot
850
906
  fi
851
- __tt_pv_hl "$t" "$base"
907
+ name=${t##*/}
908
+ [[ -n ${TTHEME_CATALOG[$t]} && ${TTHEME_GROUP[$t]} == *@* ]] && ind=" "
909
+ __tt_pv_hl "$name" "$base"
852
910
  if (( color )); then
853
911
  [[ -n ${tstrip[$t]} ]] || __tt_pv_strip $t
854
- w=$(( lw - 19 - ${#t} ))
912
+ w=$(( lw - 16 - ${#ind} - ${#name} ))
855
913
  (( w < 1 )) && w=1
856
- REPLY=$gut$on" $mark $base$REPLY$r${(l:w:: :)}${tstrip[$t]} "$z
914
+ REPLY=$gut$on"$ind$mark $base$REPLY$r${(l:w:: :)}${tstrip[$t]} "$z
857
915
  else
858
- REPLY="$gut $mark $REPLY"
916
+ REPLY="$gut$ind$mark $REPLY"
859
917
  fi
860
918
  }
861
919
 
@@ -919,7 +977,7 @@ __tt_pv_foot() {
919
977
  [[ -n $flt ]] && badge=FILTER
920
978
  if (( ! ${#rval} )); then
921
979
  kk=(bksp) kl=(edit)
922
- elif [[ ${rtype[cur]} == hdr ]]; then
980
+ elif [[ ${rtype[cur]} == (hdr|cat) ]]; then
923
981
  if [[ -z $flt && -n ${exp[${rval[cur]}]} ]]; then
924
982
  kk=(←) kl=(close)
925
983
  elif [[ -z $flt ]]; then
@@ -1270,7 +1328,7 @@ __tt_pv_flush() {
1270
1328
  }
1271
1329
 
1272
1330
  __tt_pv_draw() {
1273
- local out line cnt ex ag="" ac="" sb="" dd="" zz="" state=on src="" REPLY
1331
+ local out line cnt ex ag="" acat="" ac="" sb="" dd="" zz="" state=on src="" REPLY
1274
1332
  local -i lw sw split sc se=$(( pw - 2 )) h k i N=${#rval} mt=${#TTHEME_ORDER} wiped=0
1275
1333
  __tt_pv_lw
1276
1334
  lw=$reply[1] sw=$reply[2]
@@ -1291,7 +1349,10 @@ __tt_pv_draw() {
1291
1349
  printf -v ac '\e[38;2;%d;%d;%dm' $((16#${acx:0:2})) $((16#${acx:2:2})) $((16#${acx:4:2}))
1292
1350
  printf -v sb '\e[48;2;%d;%d;%dm' $((16#${sbx:0:2})) $((16#${sbx:2:2})) $((16#${sbx:4:2}))
1293
1351
  fi
1294
- [[ ${rtype[cur]} == thm ]] && ag=${TTHEME_GROUP[${rval[cur]}]:-Other}
1352
+ if [[ ${rtype[cur]} == thm ]]; then
1353
+ ag=${TTHEME_GROUP[${rval[cur]}]:-Other}
1354
+ [[ -n ${TTHEME_CATALOG[${rval[cur]}]} ]] && acat=$ag/${TTHEME_CATALOG[${rval[cur]}]}
1355
+ fi
1295
1356
  fi
1296
1357
  if [[ -n $flt ]]; then
1297
1358
  local -a mm=(${(M)rtype:#thm})
@@ -1597,13 +1658,13 @@ __tt_pv_handle() {
1597
1658
  sel=${rval[cur]}
1598
1659
  return 1
1599
1660
  fi
1600
- elif [[ ${rtype[cur]} == hdr ]]; then
1661
+ elif [[ ${rtype[cur]} == (hdr|cat) ]]; then
1601
1662
  __tt_pv_toggle
1602
1663
  fi
1603
1664
  ;;
1604
1665
  up) (( cur > 1 )) && cur=$(( cur - 1 )); [[ ${rtype[cur]} == rule ]] && cur=$(( cur - 1 )) ;;
1605
1666
  down) (( cur < ${#rval} )) && cur=$(( cur + 1 )); [[ ${rtype[cur]} == rule ]] && cur=$(( cur + 1 )) ;;
1606
- right) [[ ${rtype[cur]} == hdr && -z ${exp[${rval[cur]}]} ]] && __tt_pv_toggle ;;
1667
+ right) [[ ${rtype[cur]} == (hdr|cat) && -z ${exp[${rval[cur]}]} ]] && __tt_pv_toggle ;;
1607
1668
  left) __tt_pv_left ;;
1608
1669
  home) cur=1 ;;
1609
1670
  end) (( ${#rval} )) && cur=${#rval} ;;
@@ -1618,7 +1679,7 @@ __tt_pv_handle() {
1618
1679
  (( cur < 1 )) && cur=1
1619
1680
  [[ ${rtype[cur]} == rule ]] && cur=$(( cur + 1 ))
1620
1681
  ;;
1621
- ' ') [[ ${rtype[cur]} == hdr ]] && __tt_pv_toggle ;;
1682
+ ' ') [[ ${rtype[cur]} == (hdr|cat) ]] && __tt_pv_toggle ;;
1622
1683
  $'\t')
1623
1684
  [[ ${rtype[cur]} == thm ]] || return 0
1624
1685
  name=${rval[cur]}