@kecan0406/ttheme 1.2.18 → 1.2.20

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.
package/shell/ttheme.zsh CHANGED
@@ -112,7 +112,7 @@ fi
112
112
 
113
113
  typeset -g TTHEME_CONFIG=${XDG_CONFIG_HOME:-$HOME/.config}/ttheme/config.zsh
114
114
 
115
- [[ -r $TTHEME_CONFIG ]] && source $TTHEME_CONFIG
115
+ [[ -r $TTHEME_CONFIG ]] && source "$TTHEME_CONFIG"
116
116
 
117
117
  typeset -g TTHEME_PINS_FILE=${TTHEME_CONFIG:h}/pins
118
118
  typeset -g TTHEME_PINS_RAW="" TTHEME_PINS_AT=""
@@ -305,10 +305,10 @@ __tt_mend() {
305
305
  __tt_apply "$TTHEME_SPEC"
306
306
  }
307
307
 
308
- source $TTHEME_HOME/adapters/_osc.zsh
309
- source $TTHEME_HOME/adapters/_wired.zsh
308
+ source "$TTHEME_HOME/adapters/_osc.zsh"
309
+ source "$TTHEME_HOME/adapters/_wired.zsh"
310
310
  [[ -r $TTHEME_HOME/adapters/$TTHEME_ADAPTER.zsh ]] &&
311
- source $TTHEME_HOME/adapters/$TTHEME_ADAPTER.zsh
311
+ source "$TTHEME_HOME/adapters/$TTHEME_ADAPTER.zsh"
312
312
 
313
313
  __tt_empty() {
314
314
  print -u2 'ttheme: no palettes installed yet — run `ttheme` in a terminal to pick some, or `ttheme add <palette>`'
@@ -729,6 +729,14 @@ __tt_key() {
729
729
  C) REPLY=right ;;
730
730
  D) REPLY=left ;;
731
731
  Z) REPLY=stab ;;
732
+ "200~")
733
+ seq=""
734
+ while read -sk 1 -t 0.5 c; do
735
+ seq+=$c
736
+ [[ $c == '~' && $seq == *$'\e[201~' ]] && break
737
+ done
738
+ REPLY=nop
739
+ ;;
732
740
  *) REPLY=nop ;;
733
741
  esac
734
742
  else
@@ -795,7 +803,7 @@ __tt_unpin_choose() {
795
803
  chosen=0
796
804
  {
797
805
  tty=$(stty -g 2>/dev/null && stty -echo -icanon -ixon min 1 time 0 2>/dev/null)
798
- print -rn -- $'\e[?25l'
806
+ print -rn -- $'\e[?25l\e[?2004h'
799
807
  while :; do
800
808
  __tt_unpin_block $at
801
809
  __tt_unpin_paint $n
@@ -811,7 +819,7 @@ __tt_unpin_choose() {
811
819
  } always {
812
820
  REPLY=$'\r'
813
821
  (( n > 1 )) && REPLY+=$'\e['$(( n - 1 ))'A'
814
- print -rn -- "$REPLY"$'\e[J\e[?25h'
822
+ print -rn -- "$REPLY"$'\e[J\e[?2004l\e[?25h'
815
823
  [[ -n $tty ]] && stty "$tty" 2>/dev/null
816
824
  }
817
825
  (( chosen ))
@@ -960,14 +968,15 @@ __tt_map_tip() {
960
968
 
961
969
  __tt_map_chip() {
962
970
  local -a p=(${=TTHEME_PALETTE[$1]})
963
- local bg=${p[1]#\#} fg=${p[2]#\#}
971
+ local bg=${p[1]#\#} fg=${p[2]#\#} name=$1
972
+ (( ${#name} > $2 )) && name=${name[1,$2-1]}…
964
973
  if (( ! color )); then
965
- printf -v REPLY '%-*s' $2 "$1"
974
+ printf -v REPLY '%-*s' $2 "$name"
966
975
  elif (( ${#p} >= 20 )); then
967
976
  printf -v REPLY "\e[48;2;%d;%d;%d;38;2;%d;%d;%dm %-*s ${TTHEME_SGR[/ink]}" $((16#${bg:0:2})) $((16#${bg:2:2})) $((16#${bg:4:2})) \
968
- $((16#${fg:0:2})) $((16#${fg:2:2})) $((16#${fg:4:2})) $2 "$1"
977
+ $((16#${fg:0:2})) $((16#${fg:2:2})) $((16#${fg:4:2})) $2 "$name"
969
978
  else
970
- printf -v REPLY "${TTHEME_SGR[dim]} %-*s ${TTHEME_SGR[reset]}" $2 "$1"
979
+ printf -v REPLY "${TTHEME_SGR[dim]} %-*s ${TTHEME_SGR[reset]}" $2 "$name"
971
980
  fi
972
981
  }
973
982
 
@@ -1110,7 +1119,7 @@ __tt_map_build() {
1110
1119
 
1111
1120
  __tt_map_fit() {
1112
1121
  local b=$TTHEME_SGR[bold] d=$TTHEME_SGR[dim] y=$TTHEME_SGR[warn] r=$TTHEME_SGR[error] z=$TTHEME_SGR[reset] lab line tag tip note REPLY
1113
- local -i width=$1 i lvl maxw namew need wr cap
1122
+ local -i width=$1 i lvl maxw namew need wr cap short
1114
1123
  local -a lw=() rw=() cut=()
1115
1124
  (( color )) || b= d= y= r= z=
1116
1125
  reply=()
@@ -1149,11 +1158,16 @@ __tt_map_fit() {
1149
1158
  (( lvl > 3 )) && lvl=3
1150
1159
  cut=()
1151
1160
  if (( need > width )); then
1152
- cap=0
1161
+ cap=0 short=0
1153
1162
  for (( i = 1; i <= ${#ll}; i++ )); do
1154
1163
  (( rw[i] > cap )) && cap=$rw[i]
1164
+ (( rw[i] && lw[i] - ${(m)#ll[i]} + 1 > short )) && short=$(( lw[i] - ${(m)#ll[i]} + 1 ))
1155
1165
  done
1156
1166
  cap=$(( width - cap ))
1167
+ if (( short > cap )); then
1168
+ short=$(( short - cap > namew - 4 ? namew - 4 : short - cap ))
1169
+ (( short > 0 )) && (( namew -= short, cap += short ))
1170
+ fi
1157
1171
  maxw=0
1158
1172
  for (( i = 1; i <= ${#ll}; i++ )); do
1159
1173
  wr=$(( rw[i] ? cap : width ))
@@ -1202,6 +1216,10 @@ __tt_map_fit() {
1202
1216
  fi
1203
1217
  fi
1204
1218
  while [[ $line == *' ' ]]; do line=${line% }; done
1219
+ if (( need > width )); then
1220
+ __tt_clip "$line" $width
1221
+ line=$REPLY
1222
+ fi
1205
1223
  reply+=("$line")
1206
1224
  done
1207
1225
  }
@@ -1481,7 +1499,7 @@ __tt_next() {
1481
1499
  REPLY=${TTHEME_PALETTE[$TTHEME_ORDER[idx]]}
1482
1500
  }
1483
1501
 
1484
- source $TTHEME_HOME/preview.zsh
1502
+ source "$TTHEME_HOME/preview.zsh"
1485
1503
 
1486
1504
  __tt_hook() {
1487
1505
  autoload -Uz add-zsh-hook add-zle-hook-widget