@kecan0406/ttheme 1.2.7 → 1.2.9
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/README.md +14 -7
- package/bin/ttheme.js +225 -207
- package/bin/ttheme.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/package.json +2 -2
- package/shell/adapters/_bg.zsh +21 -9
- package/shell/preview.zsh +1949 -0
- package/shell/ttheme.zsh +180 -1491
package/shell/ttheme.zsh
CHANGED
|
@@ -33,6 +33,7 @@ __tt_fresh() {
|
|
|
33
33
|
__tt_prompt() {
|
|
34
34
|
emulate -L zsh ${=${options[xtrace]:#off}:+-o xtrace}
|
|
35
35
|
(( TTHEME_FRONT < 0 )) || TTHEME_FRONT=0
|
|
36
|
+
[[ -n $TTHEME_SSH_SPEC ]] && __tt_ssh_back
|
|
36
37
|
__tt_fresh
|
|
37
38
|
}
|
|
38
39
|
|
|
@@ -80,9 +81,15 @@ typeset -g TTHEME_PINS_FILE=${TTHEME_CONFIG:h}/pins
|
|
|
80
81
|
typeset -g TTHEME_PINS_RAW="" TTHEME_PINS_AT=""
|
|
81
82
|
typeset -gA TTHEME_PINS=()
|
|
82
83
|
typeset -g TTHEME_PIN="" TTHEME_PIN_SPEC="" TTHEME_BASE_SPEC=""
|
|
84
|
+
typeset -g TTHEME_SSH_SPEC="" TTHEME_SSH_BACK=""
|
|
83
85
|
|
|
84
86
|
__tt_tilde() { REPLY=${1/#$HOME\//\~/} }
|
|
85
87
|
|
|
88
|
+
__tt_ssh_ok() {
|
|
89
|
+
setopt localoptions extendedglob
|
|
90
|
+
[[ $1 == ssh:[[:alnum:]._*?:-]## ]]
|
|
91
|
+
}
|
|
92
|
+
|
|
86
93
|
__tt_pins_load() {
|
|
87
94
|
emulate -L zsh ${=${options[xtrace]:#off}:+-o xtrace}
|
|
88
95
|
setopt localoptions extendedglob
|
|
@@ -96,10 +103,16 @@ __tt_pins_load() {
|
|
|
96
103
|
TTHEME_PINS=()
|
|
97
104
|
for line in "${(@f)raw}"; do
|
|
98
105
|
line=${line%%[[:space:]]##}
|
|
99
|
-
[[ $line == [~/]*[[:space:]]* ]] || continue
|
|
106
|
+
[[ $line == ([~/]|ssh:)*[[:space:]]* ]] || continue
|
|
100
107
|
name=${line##*[[:space:]]} key=${${line%[[:space:]]*}%%[[:space:]]##}
|
|
101
|
-
[[ $key ==
|
|
102
|
-
|
|
108
|
+
if [[ $key == ssh:* ]]; then
|
|
109
|
+
key=ssh:${(L)key#ssh:}
|
|
110
|
+
__tt_ssh_ok $key || continue
|
|
111
|
+
TTHEME_PINS[$key]=$name
|
|
112
|
+
else
|
|
113
|
+
[[ $key == \~ ]] && key=$HOME
|
|
114
|
+
TTHEME_PINS[${key/#\~\//$HOME/}]=$name
|
|
115
|
+
fi
|
|
103
116
|
[[ -n ${TTHEME_PALETTE[$name]} ]] || print -u2 "ttheme: unknown palette '$name' pinned to $key"
|
|
104
117
|
done
|
|
105
118
|
}
|
|
@@ -261,35 +274,10 @@ __tt_empty() {
|
|
|
261
274
|
return 1
|
|
262
275
|
}
|
|
263
276
|
|
|
264
|
-
__tt_spec() {
|
|
265
|
-
local spec=${TTHEME_PALETTE[$1]}
|
|
266
|
-
[[ -n $spec ]] || return 1
|
|
267
|
-
print -r -- "$spec"
|
|
268
|
-
}
|
|
269
|
-
|
|
270
277
|
__tt_name_of() { REPLY=${${(k)TTHEME_PALETTE[(re)$1]}:-custom} }
|
|
271
278
|
|
|
272
279
|
__tt_color() { [[ -t 1 && -z $NO_COLOR && $TERM != dumb ]] }
|
|
273
280
|
|
|
274
|
-
__tt_palette_line() {
|
|
275
|
-
local name=$1 width=$2 on=$3 label=${4:-$1} hex cell="" bar=""
|
|
276
|
-
local -a p=(${=TTHEME_PALETTE[$name]}) sw=(${=TTHEME_SWATCH[$name]})
|
|
277
|
-
(( ${#p} >= 20 )) || return 1
|
|
278
|
-
for hex in $sw; do
|
|
279
|
-
hex=${hex#\#}
|
|
280
|
-
cell+=$'\e[38;2;'$((16#${hex:0:2}))';'$((16#${hex:2:2}))';'$((16#${hex:4:2}))'m■ '
|
|
281
|
-
done
|
|
282
|
-
if [[ -n $on ]]; then
|
|
283
|
-
local cur=${p[3]#\#} sel=${p[4]#\#} fg=${p[2]#\#} ac
|
|
284
|
-
printf -v ac '\e[38;2;%d;%d;%dm' $((16#${cur:0:2})) $((16#${cur:2:2})) $((16#${cur:4:2}))
|
|
285
|
-
printf -v bar '\e[48;2;%d;%d;%d;38;2;%d;%d;%dm' \
|
|
286
|
-
$((16#${sel:0:2})) $((16#${sel:2:2})) $((16#${sel:4:2})) $((16#${fg:0:2})) $((16#${fg:2:2})) $((16#${fg:4:2}))
|
|
287
|
-
printf '%s▌\e[39m %s %s■\e[39m \e[1m%-*s\e[22m %s\e[0m\n' "$ac" "$bar" "$ac" "$width" "$label" "$cell"
|
|
288
|
-
else
|
|
289
|
-
printf ' %-*s %s\e[0m\n' "$width" "$label" "$cell"
|
|
290
|
-
fi
|
|
291
|
-
}
|
|
292
|
-
|
|
293
281
|
__tt_announce() {
|
|
294
282
|
(( TTHEME_ANNOUNCE )) || return 0
|
|
295
283
|
local -a p=(${=TTHEME_SPEC})
|
|
@@ -312,7 +300,7 @@ __tt_announce() {
|
|
|
312
300
|
__tt_dir_rule() {
|
|
313
301
|
local k base best="" bestlen=-1 p=${1:A}
|
|
314
302
|
for k in ${(k)TTHEME_PINS}; do
|
|
315
|
-
[[ -n ${TTHEME_PALETTE[$TTHEME_PINS[$k]]} ]] || continue
|
|
303
|
+
[[ $k == /* && -n ${TTHEME_PALETTE[$TTHEME_PINS[$k]]} ]] || continue
|
|
316
304
|
base=${${k%/\*\*}:A}
|
|
317
305
|
if [[ $k == *"/**" ]]; then
|
|
318
306
|
[[ $p == "$base" || $p == "${base%/}"/* ]] || continue
|
|
@@ -395,10 +383,77 @@ __tt_focus() {
|
|
|
395
383
|
fi
|
|
396
384
|
}
|
|
397
385
|
|
|
386
|
+
__tt_ssh_host() {
|
|
387
|
+
setopt localoptions extendedglob
|
|
388
|
+
local w o host=""
|
|
389
|
+
local -a words=(${(z)1})
|
|
390
|
+
local -i i=1 tty=0 ended=0
|
|
391
|
+
while [[ ${words[i]} == ([[:alpha:]_][[:alnum:]_]#=*|command|exec|noglob|nocorrect|-) ]]; do (( ++i )); done
|
|
392
|
+
[[ ${${(Q)words[i]}:t} == ssh ]] || return 1
|
|
393
|
+
for (( ++i; i <= ${#words}; i++ )); do
|
|
394
|
+
case ${words[i]} in
|
|
395
|
+
('&&'|'||'|';'|';;'|';&'|';|') break ;;
|
|
396
|
+
('2>'|'2>>'|'2>|'|'2>&') (( ++i )); continue ;;
|
|
397
|
+
('&'|'&!'|'&|'|'|'|'|&'|[0-9]#[\<\>]*|'&>'*) return 1 ;;
|
|
398
|
+
esac
|
|
399
|
+
w=${(Q)words[i]}
|
|
400
|
+
if (( ! ended )) && [[ $w == -?* ]]; then
|
|
401
|
+
[[ $w == -- ]] && { ended=1; continue }
|
|
402
|
+
o=${w#-}
|
|
403
|
+
while [[ -n $o ]]; do
|
|
404
|
+
case ${o[1]} in
|
|
405
|
+
(t) (( ++tty )) ;;
|
|
406
|
+
([fGNnsTVOQW]) return 1 ;;
|
|
407
|
+
([BbcDEeFIiJLlmoPpRSw]) [[ -n ${o[2,-1]} ]] || (( ++i )); break ;;
|
|
408
|
+
esac
|
|
409
|
+
o=${o[2,-1]}
|
|
410
|
+
done
|
|
411
|
+
continue
|
|
412
|
+
fi
|
|
413
|
+
if [[ -n $host ]]; then
|
|
414
|
+
(( tty )) || return 1
|
|
415
|
+
break
|
|
416
|
+
fi
|
|
417
|
+
host=$w
|
|
418
|
+
done
|
|
419
|
+
[[ $host == ssh://* ]] && host=${${host#ssh://}%:<->}
|
|
420
|
+
REPLY=${(L)${${host##*@}#\[}%\]}
|
|
421
|
+
[[ -n $REPLY ]]
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
__tt_ssh_rule() {
|
|
425
|
+
local k best=""
|
|
426
|
+
[[ -n ${TTHEME_PALETTE[${TTHEME_PINS[ssh:$1]}]} ]] && { REPLY=ssh:$1; return 0 }
|
|
427
|
+
for k in ${(k)TTHEME_PINS}; do
|
|
428
|
+
[[ $k == ssh:*[*?]* && -n ${TTHEME_PALETTE[$TTHEME_PINS[$k]]} && $1 == ${~k#ssh:} ]] || continue
|
|
429
|
+
(( ${#k} > ${#best} )) && best=$k
|
|
430
|
+
done
|
|
431
|
+
[[ -n $best ]] || return 1
|
|
432
|
+
REPLY=$best
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
__tt_ssh_back() {
|
|
436
|
+
local back=$TTHEME_SSH_BACK worn=$TTHEME_SSH_SPEC
|
|
437
|
+
TTHEME_SSH_BACK="" TTHEME_SSH_SPEC=""
|
|
438
|
+
[[ $TTHEME_SPEC == "$worn" && $back != "$worn" ]] || return 0
|
|
439
|
+
if [[ -n $back ]]; then
|
|
440
|
+
__tt_wear "$back"
|
|
441
|
+
else
|
|
442
|
+
__tt_osc_reset
|
|
443
|
+
TTHEME_SPEC=
|
|
444
|
+
fi
|
|
445
|
+
}
|
|
446
|
+
|
|
398
447
|
__tt_ran() {
|
|
399
448
|
emulate -L zsh ${=${options[xtrace]:#off}:+-o xtrace}
|
|
449
|
+
local REPLY name
|
|
400
450
|
TTHEME_RAN=1
|
|
401
451
|
[[ ${${(z)3}[1]:t} == tmux ]] && TTHEME_MUXED=1
|
|
452
|
+
[[ $3 == *ssh* ]] && __tt_ssh_host "$3" && __tt_ssh_rule "$REPLY" || return 0
|
|
453
|
+
name=$TTHEME_PINS[$REPLY]
|
|
454
|
+
TTHEME_SSH_BACK=$TTHEME_SPEC TTHEME_SSH_SPEC=$TTHEME_PALETTE[$name]
|
|
455
|
+
[[ $TTHEME_SSH_SPEC == "$TTHEME_SPEC" ]] || __tt_wear "$TTHEME_SSH_SPEC" "$name"
|
|
456
|
+
return 0
|
|
402
457
|
}
|
|
403
458
|
|
|
404
459
|
__tt_unmux() {
|
|
@@ -468,13 +523,24 @@ __tt_dir_label() {
|
|
|
468
523
|
}
|
|
469
524
|
|
|
470
525
|
__tt_pin_scope() {
|
|
471
|
-
if [[ $1 ==
|
|
526
|
+
if [[ $1 == ssh:* ]]; then
|
|
527
|
+
REPLY="while connected"
|
|
528
|
+
elif [[ $1 == *"/**" ]]; then
|
|
472
529
|
REPLY="and below"
|
|
473
530
|
else
|
|
474
531
|
REPLY="this directory"
|
|
475
532
|
fi
|
|
476
533
|
}
|
|
477
534
|
|
|
535
|
+
__tt_pin_where() {
|
|
536
|
+
if [[ $1 == ssh:* ]]; then
|
|
537
|
+
REPLY="ssh ${1#ssh:}"
|
|
538
|
+
else
|
|
539
|
+
__tt_pin_base "$1"
|
|
540
|
+
__tt_dir_label "$REPLY"
|
|
541
|
+
fi
|
|
542
|
+
}
|
|
543
|
+
|
|
478
544
|
__tt_repo() {
|
|
479
545
|
local at=${1:a}
|
|
480
546
|
while [[ $at != / ]]; do
|
|
@@ -501,6 +567,11 @@ __tt_pin_cover() {
|
|
|
501
567
|
|
|
502
568
|
__tt_pin_scopes() {
|
|
503
569
|
local d=${1:a} k
|
|
570
|
+
if [[ $1 == ssh:* ]]; then
|
|
571
|
+
plabel=(" This host ") pkeys=("$1") pkdef=1
|
|
572
|
+
[[ $1 == *[*?]* ]] && plabel=(" Every match ")
|
|
573
|
+
return 0
|
|
574
|
+
fi
|
|
504
575
|
plabel=(" This directory " " And below ") pkeys=("$d" "${d%/}/**") pkdef=2
|
|
505
576
|
if __tt_repo "$d" && [[ $REPLY != "$d" ]]; then
|
|
506
577
|
plabel+=(" Repository ") pkeys+=("$REPLY/**")
|
|
@@ -514,26 +585,30 @@ __tt_pin_scopes() {
|
|
|
514
585
|
}
|
|
515
586
|
|
|
516
587
|
__tt_pin_save() {
|
|
517
|
-
local name=$1 key=$2 k base spec REPLY
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
588
|
+
local name=$1 key=$2 k base spec=$3 REPLY
|
|
589
|
+
if [[ $key == /* ]]; then
|
|
590
|
+
__tt_pin_base "$key"
|
|
591
|
+
base=$REPLY
|
|
592
|
+
for k in ${(k)TTHEME_PINS}; do
|
|
593
|
+
[[ $k == /* ]] || continue
|
|
594
|
+
__tt_pin_base "$k"
|
|
595
|
+
[[ $REPLY == "$base" ]] && unset "TTHEME_PINS[$k]"
|
|
596
|
+
done
|
|
597
|
+
fi
|
|
525
598
|
TTHEME_PINS[$key]=$name
|
|
526
599
|
if ! __tt_pins_write; then
|
|
527
600
|
print -u2 "ttheme pin: could not write $TTHEME_PINS_FILE"
|
|
528
601
|
return 1
|
|
529
602
|
fi
|
|
530
|
-
[[
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
603
|
+
if [[ $key == /* ]]; then
|
|
604
|
+
[[ -n $TTHEME_PIN ]] || TTHEME_BASE_SPEC=$3
|
|
605
|
+
if __tt_dir_rule "$PWD"; then
|
|
606
|
+
spec=${TTHEME_PALETTE[$TTHEME_PINS[$REPLY]]}
|
|
607
|
+
TTHEME_PIN=$REPLY TTHEME_PIN_SPEC=$spec
|
|
608
|
+
else
|
|
609
|
+
spec=$TTHEME_BASE_SPEC
|
|
610
|
+
TTHEME_PIN="" TTHEME_PIN_SPEC=""
|
|
611
|
+
fi
|
|
537
612
|
fi
|
|
538
613
|
if [[ $spec != "$TTHEME_SPEC" ]]; then
|
|
539
614
|
if [[ -n $spec ]]; then
|
|
@@ -543,7 +618,7 @@ __tt_pin_save() {
|
|
|
543
618
|
TTHEME_SPEC=
|
|
544
619
|
fi
|
|
545
620
|
fi
|
|
546
|
-
|
|
621
|
+
__tt_pin_where "$key"
|
|
547
622
|
k=$REPLY
|
|
548
623
|
__tt_pin_scope "$key"
|
|
549
624
|
if __tt_color; then
|
|
@@ -551,7 +626,7 @@ __tt_pin_save() {
|
|
|
551
626
|
else
|
|
552
627
|
print -r -- "Pinned · $name → $k · $REPLY"
|
|
553
628
|
fi
|
|
554
|
-
if [[ $TTHEME_PIN != "$key" ]]; then
|
|
629
|
+
if [[ $key == /* && $TTHEME_PIN != "$key" ]]; then
|
|
555
630
|
__tt_here_line Here
|
|
556
631
|
print -r -- "$REPLY"
|
|
557
632
|
fi
|
|
@@ -560,10 +635,11 @@ __tt_pin_save() {
|
|
|
560
635
|
__tt_unpin_drop() {
|
|
561
636
|
local k REPLY where
|
|
562
637
|
local -a gone=()
|
|
638
|
+
local -i dirs=0
|
|
563
639
|
for k in "$@"; do
|
|
564
640
|
[[ -n ${TTHEME_PINS[$k]} ]] || continue
|
|
565
|
-
|
|
566
|
-
|
|
641
|
+
[[ $k == /* ]] && dirs=1
|
|
642
|
+
__tt_pin_where "$k"
|
|
567
643
|
where=$REPLY
|
|
568
644
|
__tt_pin_scope "$k"
|
|
569
645
|
gone+=("Unpinned · ${TTHEME_PINS[$k]} on $where · $REPLY")
|
|
@@ -581,6 +657,7 @@ __tt_unpin_drop() {
|
|
|
581
657
|
print -r -- "$k"
|
|
582
658
|
fi
|
|
583
659
|
done
|
|
660
|
+
(( dirs )) || return 0
|
|
584
661
|
__tt_here_line Here
|
|
585
662
|
print -r -- "$REPLY"
|
|
586
663
|
}
|
|
@@ -735,6 +812,15 @@ __tt_unpin() {
|
|
|
735
812
|
local -i chosen=0 color=0
|
|
736
813
|
__tt_color && color=1
|
|
737
814
|
__tt_pins_load
|
|
815
|
+
if [[ $1 == ssh:* ]]; then
|
|
816
|
+
k=ssh:${(L)1#ssh:}
|
|
817
|
+
if [[ -z ${TTHEME_PINS[$k]} ]]; then
|
|
818
|
+
print -u2 -r -- "ttheme unpin: nothing pinned to ssh ${k#ssh:}"
|
|
819
|
+
return 1
|
|
820
|
+
fi
|
|
821
|
+
__tt_unpin_drop $k
|
|
822
|
+
return
|
|
823
|
+
fi
|
|
738
824
|
if (( $# )); then
|
|
739
825
|
d=$1
|
|
740
826
|
[[ $d == \~ || $d == \~/* ]] && d=$HOME${d#\~}
|
|
@@ -1079,12 +1165,22 @@ __tt_map_fit() {
|
|
|
1079
1165
|
done
|
|
1080
1166
|
}
|
|
1081
1167
|
|
|
1168
|
+
__tt_map_ssh() {
|
|
1169
|
+
local k name flag
|
|
1170
|
+
for k in ${(oi)${(M)${(k)TTHEME_PINS}:#ssh:*}}; do
|
|
1171
|
+
name=$TTHEME_PINS[$k] flag=""
|
|
1172
|
+
[[ -n ${TTHEME_PALETTE[$name]} ]] || flag="not installed"
|
|
1173
|
+
lp+=("") lpw+=(0) ll+=("ssh ${k#ssh:}") lat+=("$k") lpal+=("$name") lnote+=("while connected") lflag+=("$flag")
|
|
1174
|
+
done
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1082
1177
|
__tt_map_tree() {
|
|
1083
1178
|
local home=${HOME:a} here=${PWD:a} htip="" REPLY
|
|
1084
1179
|
local -A own=() below=() parent=() mark=() tstrip=()
|
|
1085
1180
|
local -a roots=() lp=() lpw=() ll=() lat=() lpal=() lnote=() lflag=() reply
|
|
1086
1181
|
local -i width=$(( COLUMNS > 0 ? COLUMNS : 80 ))
|
|
1087
1182
|
__tt_map_build ""
|
|
1183
|
+
__tt_map_ssh
|
|
1088
1184
|
__tt_map_fit $width
|
|
1089
1185
|
print -rl -- "${reply[@]}"
|
|
1090
1186
|
print
|
|
@@ -1143,42 +1239,12 @@ __tt_order() {
|
|
|
1143
1239
|
}
|
|
1144
1240
|
|
|
1145
1241
|
__tt_menu() {
|
|
1146
|
-
local k
|
|
1242
|
+
local k
|
|
1147
1243
|
local -a reply
|
|
1148
|
-
local -i width=0
|
|
1149
1244
|
__tt_order
|
|
1150
|
-
if ! __tt_color; then
|
|
1151
|
-
for k in $reply; do
|
|
1152
|
-
printf '%s\t%s\t%s\n' "$k" "${TTHEME_GROUP[$k]:-Other}" "${TTHEME_SRC[$k]:-unknown}"
|
|
1153
|
-
done
|
|
1154
|
-
return 0
|
|
1155
|
-
fi
|
|
1156
|
-
[[ -n $TTHEME_SPEC ]] && __tt_name_of "$TTHEME_SPEC" && cur=$REPLY
|
|
1157
1245
|
for k in $reply; do
|
|
1158
|
-
|
|
1159
|
-
[[ -n ${TTHEME_CATALOG[$k]} && ${TTHEME_GROUP[$k]} == *@* ]] && label=" $label"
|
|
1160
|
-
(( ${#label} > width )) && width=${#label}
|
|
1246
|
+
printf '%s\t%s\t%s\n' "$k" "${TTHEME_GROUP[$k]:-Other}" "${TTHEME_SRC[$k]:-unknown}"
|
|
1161
1247
|
done
|
|
1162
|
-
for k in $reply; do
|
|
1163
|
-
grp=${TTHEME_GROUP[$k]:-Other}
|
|
1164
|
-
if [[ $grp != $last_grp ]]; then
|
|
1165
|
-
[[ $grp == *@* && $last_grp != *@* && -n $last_grp ]] && printf ' \033[2m── Markets ──────────\033[0m\n'
|
|
1166
|
-
printf ' \033[1m%s\033[0m' "$grp"
|
|
1167
|
-
[[ -n ${TTHEME_NATIVE[$k]} ]] && printf ' \033[2m%s\033[0m' "${TTHEME_NATIVE[$k]}"
|
|
1168
|
-
printf '\n'
|
|
1169
|
-
last_grp=$grp last_shelf=""
|
|
1170
|
-
fi
|
|
1171
|
-
shelf=""
|
|
1172
|
-
[[ $grp == *@* ]] && shelf=${TTHEME_CATALOG[$k]}
|
|
1173
|
-
if [[ -n $shelf && $shelf != "$last_shelf" ]]; then
|
|
1174
|
-
printf ' \033[1m%s\033[0m\n' "$shelf"
|
|
1175
|
-
last_shelf=$shelf
|
|
1176
|
-
fi
|
|
1177
|
-
label=${k##*/}
|
|
1178
|
-
[[ -n $shelf ]] && label=" $label"
|
|
1179
|
-
__tt_palette_line "$k" $width "${${(M)k:#$cur}:+1}" "$label"
|
|
1180
|
-
done
|
|
1181
|
-
printf '\n \033[2mttheme use <palette> paints this tab · ttheme preview · ttheme help\033[0m\n'
|
|
1182
1248
|
}
|
|
1183
1249
|
|
|
1184
1250
|
__tt_help() {
|
|
@@ -1231,14 +1297,17 @@ __tt_cli() {
|
|
|
1231
1297
|
}
|
|
1232
1298
|
|
|
1233
1299
|
__tt_catalog() {
|
|
1234
|
-
local was
|
|
1300
|
+
local was="$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}"
|
|
1235
1301
|
__tt_cli "$@" || return
|
|
1236
1302
|
[[ $1 == (list|share) ]] && return 0
|
|
1303
|
+
__tt_catalog_done "$was"
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1306
|
+
__tt_catalog_done() {
|
|
1237
1307
|
[[ -r $TTHEME_HOME/palettes.zsh ]] || return 0
|
|
1238
|
-
was="$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}"
|
|
1239
1308
|
__tt_palettes_load && __tt_reloaded
|
|
1240
|
-
[[ "$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}" == "$
|
|
1241
|
-
__tt_follow "$
|
|
1309
|
+
[[ "$TTHEME_STARTUP ${TTHEME_PALETTE[$TTHEME_STARTUP]}" == "$1" ]] && return 0
|
|
1310
|
+
__tt_follow "$1"
|
|
1242
1311
|
__tt_worn_shown
|
|
1243
1312
|
__tt_reload
|
|
1244
1313
|
}
|
|
@@ -1359,1407 +1428,7 @@ __tt_rotate() {
|
|
|
1359
1428
|
__tt_announce
|
|
1360
1429
|
}
|
|
1361
1430
|
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
__tt_pv_seek() {
|
|
1365
|
-
local t part key REPLY
|
|
1366
|
-
for t in ${(k)TTHEME_PALETTE}; do
|
|
1367
|
-
key=""
|
|
1368
|
-
for part in "$t" "${TTHEME_GROUP[$t]:-Other}" "${TTHEME_NATIVE[$t]}" "${TTHEME_CATALOG[$t]}" "${(@s:|:)TTHEME_NATIVE_NAMES[$t]}" "${TTHEME_CHARACTER[$t]}"; do
|
|
1369
|
-
[[ -n $part ]] || continue
|
|
1370
|
-
__tt_pv_norm "$part"
|
|
1371
|
-
key+="|$REPLY"
|
|
1372
|
-
done
|
|
1373
|
-
pvseek[$t]=$key
|
|
1374
|
-
done
|
|
1375
|
-
}
|
|
1376
|
-
|
|
1377
|
-
__tt_pv_alias() {
|
|
1378
|
-
REPLY=""
|
|
1379
|
-
[[ -n $nflt && -n $2 ]] || return 0
|
|
1380
|
-
local main
|
|
1381
|
-
__tt_pv_norm "$1"
|
|
1382
|
-
main=$REPLY
|
|
1383
|
-
__tt_pv_norm "$2"
|
|
1384
|
-
[[ $main != *$nflt* && $REPLY == *$nflt* ]] && REPLY=$2 || REPLY=""
|
|
1385
|
-
return 0
|
|
1386
|
-
}
|
|
1387
|
-
|
|
1388
|
-
__tt_pv_rows() {
|
|
1389
|
-
rtype=() rval=() rcnt=()
|
|
1390
|
-
local g t c ruled="" nflt="" REPLY
|
|
1391
|
-
local -a ts cs loose inside
|
|
1392
|
-
if [[ -n $flt ]]; then
|
|
1393
|
-
(( ${#pvseek} )) || __tt_pv_seek
|
|
1394
|
-
__tt_pv_norm "$flt"
|
|
1395
|
-
nflt=$REPLY
|
|
1396
|
-
fi
|
|
1397
|
-
for g in $groups; do
|
|
1398
|
-
ts=()
|
|
1399
|
-
for t in ${=gthemes[$g]}; do
|
|
1400
|
-
[[ -z $flt || ${pvseek[$t]} == *$nflt* ]] && ts+=($t)
|
|
1401
|
-
done
|
|
1402
|
-
[[ -n $flt ]] && (( ! ${#ts} )) && continue
|
|
1403
|
-
if [[ $g == *@* && -z $ruled ]]; then
|
|
1404
|
-
ruled=1
|
|
1405
|
-
(( ${#rtype} )) && { rtype+=(rule); rval+=(''); rcnt+=(0) }
|
|
1406
|
-
fi
|
|
1407
|
-
rtype+=(hdr); rval+=($g); rcnt+=(${#ts})
|
|
1408
|
-
[[ -n $flt || -n ${exp[$g]} ]] || continue
|
|
1409
|
-
cs=() loose=()
|
|
1410
|
-
for t in $ts; do
|
|
1411
|
-
c=${TTHEME_CATALOG[$t]}
|
|
1412
|
-
if [[ -n $c && $g == *@* ]]; then
|
|
1413
|
-
(( ${cs[(Ie)$c]} )) || cs+=($c)
|
|
1414
|
-
else
|
|
1415
|
-
loose+=($t)
|
|
1416
|
-
fi
|
|
1417
|
-
done
|
|
1418
|
-
for c in $cs; do
|
|
1419
|
-
inside=()
|
|
1420
|
-
for t in $ts; do
|
|
1421
|
-
[[ ${TTHEME_CATALOG[$t]} == "$c" ]] && inside+=($t)
|
|
1422
|
-
done
|
|
1423
|
-
rtype+=(cat); rval+=("$g/$c"); rcnt+=(${#inside})
|
|
1424
|
-
if [[ -n $flt || -n ${exp[$g/$c]} ]]; then
|
|
1425
|
-
for t in $inside; do rtype+=(thm); rval+=($t); rcnt+=(0); done
|
|
1426
|
-
fi
|
|
1427
|
-
done
|
|
1428
|
-
for t in $loose; do rtype+=(thm); rval+=($t); rcnt+=(0); done
|
|
1429
|
-
done
|
|
1430
|
-
}
|
|
1431
|
-
|
|
1432
|
-
__tt_pv_at() {
|
|
1433
|
-
local i
|
|
1434
|
-
for (( i = 1; i <= ${#rval}; i++ )); do
|
|
1435
|
-
[[ ${rtype[i]} == (hdr|cat) && ${rval[i]} == "$1" ]] && { cur=$i; return 0 }
|
|
1436
|
-
done
|
|
1437
|
-
return 0
|
|
1438
|
-
}
|
|
1439
|
-
|
|
1440
|
-
__tt_pv_first() {
|
|
1441
|
-
local name=$1 i
|
|
1442
|
-
cur=1 top=1
|
|
1443
|
-
if [[ -n $name ]]; then
|
|
1444
|
-
for (( i = 1; i <= ${#rval}; i++ )); do
|
|
1445
|
-
[[ ${rtype[i]} == thm && ${rval[i]} == $name ]] && { cur=$i; return 0 }
|
|
1446
|
-
done
|
|
1447
|
-
fi
|
|
1448
|
-
for (( i = 1; i <= ${#rtype}; i++ )); do
|
|
1449
|
-
[[ ${rtype[i]} == thm ]] && { cur=$i; return 0 }
|
|
1450
|
-
done
|
|
1451
|
-
return 0
|
|
1452
|
-
}
|
|
1453
|
-
|
|
1454
|
-
__tt_pv_goto() {
|
|
1455
|
-
local name=$1 i g=${TTHEME_GROUP[$1]:-Other} c=${TTHEME_CATALOG[$1]}
|
|
1456
|
-
exp[$g]=1
|
|
1457
|
-
[[ -n $c && $g == *@* ]] && exp[$g/$c]=1
|
|
1458
|
-
__tt_pv_rows
|
|
1459
|
-
for (( i = 1; i <= ${#rval}; i++ )); do
|
|
1460
|
-
[[ ${rtype[i]} == thm && ${rval[i]} == $name ]] && { cur=$i; return 0 }
|
|
1461
|
-
done
|
|
1462
|
-
cur=1
|
|
1463
|
-
}
|
|
1464
|
-
|
|
1465
|
-
__tt_pv_shows() {
|
|
1466
|
-
REPLY=${bgview[$1]:-$1}
|
|
1467
|
-
[[ -n $tune && $1 == "$tune" ]] && REPLY=$tpick
|
|
1468
|
-
return 0
|
|
1469
|
-
}
|
|
1470
|
-
|
|
1471
|
-
__tt_pv_focus() {
|
|
1472
|
-
[[ ${rtype[cur]} == thm ]] || return 0
|
|
1473
|
-
__tt_pv_shows ${rval[cur]}
|
|
1474
|
-
(( resized )) || [[ $REPLY == "$bgname" ]] || __tt_pv_bg_show "$REPLY"
|
|
1475
|
-
local spec=${TTHEME_PALETTE[${rval[cur]}]}
|
|
1476
|
-
[[ $spec == "$applied" ]] && return 0
|
|
1477
|
-
__tt_pv_paint "$spec"
|
|
1478
|
-
applied=$spec
|
|
1479
|
-
}
|
|
1480
|
-
|
|
1481
|
-
__tt_pv_toggle() {
|
|
1482
|
-
[[ -n $flt ]] && return 0
|
|
1483
|
-
local g=${rval[cur]}
|
|
1484
|
-
if [[ -n ${exp[$g]} ]]; then
|
|
1485
|
-
exp[$g]=""
|
|
1486
|
-
else
|
|
1487
|
-
exp[$g]=1
|
|
1488
|
-
fi
|
|
1489
|
-
__tt_pv_rows
|
|
1490
|
-
}
|
|
1491
|
-
|
|
1492
|
-
__tt_pv_left() {
|
|
1493
|
-
[[ -n $flt ]] && return 0
|
|
1494
|
-
if [[ ${rtype[cur]} == (hdr|cat) ]]; then
|
|
1495
|
-
if [[ -n ${exp[${rval[cur]}]} ]]; then
|
|
1496
|
-
__tt_pv_toggle
|
|
1497
|
-
elif [[ ${rtype[cur]} == cat ]]; then
|
|
1498
|
-
__tt_pv_at ${rval[cur]%%/*}
|
|
1499
|
-
fi
|
|
1500
|
-
return 0
|
|
1501
|
-
fi
|
|
1502
|
-
local g=${TTHEME_GROUP[${rval[cur]}]:-Other} c=${TTHEME_CATALOG[${rval[cur]}]}
|
|
1503
|
-
[[ -n $c && $g == *@* ]] && g=$g/$c
|
|
1504
|
-
exp[$g]=""
|
|
1505
|
-
__tt_pv_rows
|
|
1506
|
-
__tt_pv_at $g
|
|
1507
|
-
}
|
|
1508
|
-
|
|
1509
|
-
typeset -gA TTHEME_GLYPHS=(
|
|
1510
|
-
0 111101101101111 1 010110010010111 2 111001111100111 3 111001111001111 4 101101111001001
|
|
1511
|
-
5 111100111001111 6 111100111101111 7 111001001001001 8 111101111101111 9 111101111001111
|
|
1512
|
-
'%' 101001010100101 F 111100110100100 I 111010010010111 L 100100100100111
|
|
1513
|
-
)
|
|
1514
|
-
|
|
1515
|
-
__tt_pv_osd() {
|
|
1516
|
-
local text=${(U)osd} bits line oc=$'\e[1m' blank
|
|
1517
|
-
local -i s=2 n=${#text} w r c k i top left
|
|
1518
|
-
(( n * 16 + 4 <= pw && ph >= 14 )) || s=1
|
|
1519
|
-
w=$(( n * 8 * s - 2 * s + 4 ))
|
|
1520
|
-
top=$(( (ph - 5 * s) / 2 )) left=$(( (pw - w) / 2 + 1 ))
|
|
1521
|
-
(( top < 2 )) && top=2
|
|
1522
|
-
(( left < 1 )) && left=1
|
|
1523
|
-
if (( color )) && [[ ${rtype[cur]} == thm ]]; then
|
|
1524
|
-
local -a fp=(${=TTHEME_PALETTE[${rval[cur]}]})
|
|
1525
|
-
local fc=${fp[3]#\#}
|
|
1526
|
-
printf -v oc '\e[1;38;2;%d;%d;%dm' $((16#${fc:0:2})) $((16#${fc:2:2})) $((16#${fc:4:2}))
|
|
1527
|
-
fi
|
|
1528
|
-
blank=${(l:w:: :)}
|
|
1529
|
-
out+=$'\e['$(( top - 1 ))';'${left}H$blank
|
|
1530
|
-
for (( r = 0; r < 5; r++ )); do
|
|
1531
|
-
line=" "
|
|
1532
|
-
for (( k = 1; k <= n; k++ )); do
|
|
1533
|
-
bits=${TTHEME_GLYPHS[${text[k]}]}
|
|
1534
|
-
for (( c = 1; c <= 3; c++ )); do
|
|
1535
|
-
if [[ ${bits[r * 3 + c]} == 1 ]]; then
|
|
1536
|
-
line+=${(l:2*s::█:)}
|
|
1537
|
-
else
|
|
1538
|
-
line+=${(l:2*s:: :)}
|
|
1539
|
-
fi
|
|
1540
|
-
done
|
|
1541
|
-
(( k < n )) && line+=${(l:2*s:: :)}
|
|
1542
|
-
done
|
|
1543
|
-
line+=" "
|
|
1544
|
-
for (( i = 0; i < s; i++ )); do
|
|
1545
|
-
out+=$'\e['$(( top + r * s + i ))';'${left}H$oc$line$'\e[0m'
|
|
1546
|
-
done
|
|
1547
|
-
done
|
|
1548
|
-
out+=$'\e['$(( top + 5 * s ))';'${left}H$blank
|
|
1549
|
-
}
|
|
1550
|
-
|
|
1551
|
-
__tt_pv_lw() {
|
|
1552
|
-
local -i lw=$(( pw - 2 < 48 ? pw - 2 : 48 )) l=$(( pw * 3 / 10 )) sw=$(( pw * 45 / 100 ))
|
|
1553
|
-
(( l < 38 )) && l=38
|
|
1554
|
-
(( l > 56 )) && l=56
|
|
1555
|
-
(( sw > 64 )) && sw=64
|
|
1556
|
-
(( sw > pw - l - 6 )) && sw=$(( pw - l - 6 ))
|
|
1557
|
-
if (( color && sw >= 32 )); then
|
|
1558
|
-
lw=$l
|
|
1559
|
-
else
|
|
1560
|
-
sw=0
|
|
1561
|
-
fi
|
|
1562
|
-
reply=($lw $sw)
|
|
1563
|
-
}
|
|
1564
|
-
|
|
1565
|
-
__tt_pv_hl() {
|
|
1566
|
-
local t=$1 lt=${(L)1} pre
|
|
1567
|
-
REPLY=$t
|
|
1568
|
-
(( color )) && [[ -n $flt && $lt == *$flt* ]] || return 0
|
|
1569
|
-
pre=${lt%%$flt*}
|
|
1570
|
-
REPLY=${t[1,${#pre}]}$'\e[1;4m'$ac${t[${#pre}+1,${#pre}+${#flt}]}$'\e[22;24;39m'$2${t[${#pre}+${#flt}+1,-1]}
|
|
1571
|
-
}
|
|
1572
|
-
|
|
1573
|
-
__tt_pv_fit() {
|
|
1574
|
-
local extra=$1
|
|
1575
|
-
REPLY=""
|
|
1576
|
-
[[ -n $extra ]] || return 0
|
|
1577
|
-
while [[ -n $extra ]] && (( ${(m)#extra} + 3 > w )); do
|
|
1578
|
-
extra=${extra[1,-2]}
|
|
1579
|
-
done
|
|
1580
|
-
[[ -n $extra ]] || return 0
|
|
1581
|
-
(( w -= ${(m)#extra} + 2 ))
|
|
1582
|
-
REPLY=" "$d$extra$r
|
|
1583
|
-
}
|
|
1584
|
-
|
|
1585
|
-
__tt_pv_row() {
|
|
1586
|
-
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=" " hl extra part
|
|
1587
|
-
local -i w
|
|
1588
|
-
(( color )) || b= d= r= z= lead=
|
|
1589
|
-
if (( $1 == cur )); then
|
|
1590
|
-
gut=$ac"▌"$r" "
|
|
1591
|
-
(( color )) && on=$sb
|
|
1592
|
-
fi
|
|
1593
|
-
if [[ ${rtype[$1]} == rule ]]; then
|
|
1594
|
-
name='── Markets '
|
|
1595
|
-
REPLY=" "$d$name${(l:lw - 4 - ${#name}::─:)}$z
|
|
1596
|
-
return 0
|
|
1597
|
-
fi
|
|
1598
|
-
if [[ ${rtype[$1]} == hdr ]]; then
|
|
1599
|
-
[[ -n $flt || -n ${exp[$t]} ]] && arrow=▾
|
|
1600
|
-
name=$t
|
|
1601
|
-
(( ${(m)#name} > lw - 10 )) && name="${name[1,lw-11]}…"
|
|
1602
|
-
base=$b
|
|
1603
|
-
if (( color )) && [[ $t == "$ag" ]]; then
|
|
1604
|
-
base+=$ac lead=$ac
|
|
1605
|
-
elif (( $1 == cur )); then
|
|
1606
|
-
lead=""
|
|
1607
|
-
fi
|
|
1608
|
-
__tt_pv_hl "$name" "$base"
|
|
1609
|
-
hl=$REPLY
|
|
1610
|
-
w=$(( lw - 6 - ${(m)#name} - ${#rcnt[$1]} ))
|
|
1611
|
-
__tt_pv_alias "$t" "${TTHEME_NATIVE[${${=gthemes[$t]}[1]}]}"
|
|
1612
|
-
__tt_pv_fit "$REPLY"
|
|
1613
|
-
extra=$REPLY
|
|
1614
|
-
(( w < 1 )) && w=1
|
|
1615
|
-
REPLY=$gut$on" "$lead$arrow$r" "$base$hl$r$extra${(l:w:: :)}$d${rcnt[$1]}$r" "$z
|
|
1616
|
-
return 0
|
|
1617
|
-
fi
|
|
1618
|
-
if [[ ${rtype[$1]} == cat ]]; then
|
|
1619
|
-
[[ -n $flt || -n ${exp[$t]} ]] && arrow=▾
|
|
1620
|
-
name=${t#*/}
|
|
1621
|
-
(( ${(m)#name} > lw - 12 )) && name="${name[1,lw-13]}…"
|
|
1622
|
-
base=$b
|
|
1623
|
-
if (( color )) && [[ $t == "$acat" ]]; then
|
|
1624
|
-
base+=$ac lead=$ac
|
|
1625
|
-
elif (( $1 == cur )); then
|
|
1626
|
-
lead=""
|
|
1627
|
-
fi
|
|
1628
|
-
__tt_pv_hl "$name" "$base"
|
|
1629
|
-
w=$(( lw - 8 - ${(m)#name} - ${#rcnt[$1]} ))
|
|
1630
|
-
(( w < 1 )) && w=1
|
|
1631
|
-
REPLY=$gut$on" "$lead$arrow$r" "$base$REPLY$r${(l:w:: :)}$d${rcnt[$1]}$r" "$z
|
|
1632
|
-
return 0
|
|
1633
|
-
fi
|
|
1634
|
-
if (( $1 == cur )); then
|
|
1635
|
-
mark=$ac"■"$r base=$b
|
|
1636
|
-
elif [[ -n $cdot && $t == "$cn" ]]; then
|
|
1637
|
-
mark=$cdot
|
|
1638
|
-
fi
|
|
1639
|
-
name=${t##*/}
|
|
1640
|
-
[[ -n ${TTHEME_CATALOG[$t]} && ${TTHEME_GROUP[$t]} == *@* ]] && ind=" "
|
|
1641
|
-
__tt_pv_hl "$name" "$base"
|
|
1642
|
-
hl=$REPLY
|
|
1643
|
-
extra=""
|
|
1644
|
-
for part in "${(@s:|:)TTHEME_NATIVE_NAMES[$t]}" "${TTHEME_CHARACTER[$t]}"; do
|
|
1645
|
-
__tt_pv_alias "$name" "$part"
|
|
1646
|
-
[[ -n $REPLY ]] && { extra=$REPLY; break }
|
|
1647
|
-
done
|
|
1648
|
-
if (( color )); then
|
|
1649
|
-
[[ -n ${tstrip[$t]} ]] || __tt_pv_strip $t
|
|
1650
|
-
w=$(( lw - 16 - ${#ind} - ${#name} ))
|
|
1651
|
-
__tt_pv_fit "$extra"
|
|
1652
|
-
(( w < 1 )) && w=1
|
|
1653
|
-
REPLY=$gut$on"$ind$mark $base$hl$r$REPLY${(l:w:: :)}${tstrip[$t]} "$z
|
|
1654
|
-
else
|
|
1655
|
-
REPLY="$gut$ind$mark $hl${extra:+ $extra}"
|
|
1656
|
-
fi
|
|
1657
|
-
}
|
|
1658
|
-
|
|
1659
|
-
__tt_pv_bg_title() {
|
|
1660
|
-
local by=${bgby[$tpick]} ref=${bgfrom[$tpick]} url=${bgurl[$tpick]} mark="" sgr=""
|
|
1661
|
-
local -i room=$1
|
|
1662
|
-
[[ -n $ref && $url == http(s|)://* ]] && (( ${TTHEME_LINKS[(Ie)$TTHEME_ADAPTER]} )) && mark="⧉ "
|
|
1663
|
-
REPLY=Background${by:+ · $by}${ref:+ · $mark$ref}$2
|
|
1664
|
-
(( ${#REPLY} > room )) && REPLY=Background${by:+ · $by}
|
|
1665
|
-
(( ${#REPLY} > room )) && REPLY=Background
|
|
1666
|
-
[[ -n $mark && $REPLY == *"$mark$ref"* ]] || return 0
|
|
1667
|
-
(( color )) && [[ -n ${TTHEME_SITE_ANSI[${ref%% *}]} ]] && sgr=$'\e[3'${TTHEME_SITE_ANSI[${ref%% *}]}m
|
|
1668
|
-
REPLY=${REPLY/"$mark$ref"/$sgr⧉${sgr:+$'\e[39m'} $'\e]8;;'$url$'\e\\'$ref$'\e]8;;\e\\'}
|
|
1669
|
-
return 0
|
|
1670
|
-
}
|
|
1671
|
-
|
|
1672
|
-
__tt_pv_head() {
|
|
1673
|
-
local b=$'\e[1m' d=$'\e[2m' z=$'\e[0m' right=$6
|
|
1674
|
-
(( color )) || b= d= z=
|
|
1675
|
-
out+=$'\e['$1';'$2'H'$b$ac$4$z
|
|
1676
|
-
[[ -n $5 ]] && out+=" "$d$5$z
|
|
1677
|
-
[[ -n $right ]] && out+=$'\e['$(( $3 - ${(m)#right} + 1 ))'G'$d$right$z
|
|
1678
|
-
return 0
|
|
1679
|
-
}
|
|
1680
|
-
|
|
1681
|
-
__tt_pv_foot() {
|
|
1682
|
-
setopt localoptions extendedglob
|
|
1683
|
-
local b=$'\e[1m' d=$'\e[2m' z=$'\e[0m' y=$'\e[33m' on=$'\e[7;1m'$ac badge="" lead="" note="" right="" text line plain hex
|
|
1684
|
-
local -a kk=() kl=() seg=()
|
|
1685
|
-
local -i end=$1 i lwid rwid room
|
|
1686
|
-
(( color )) || b= d= z= y= on=
|
|
1687
|
-
if (( color )) && [[ -n $applied && $applied != "$painted" ]]; then
|
|
1688
|
-
hex=${${=applied}[8]#\#}
|
|
1689
|
-
printf -v y '\e[38;2;%d;%d;%dm' $((16#${hex:0:2})) $((16#${hex:2:2})) $((16#${hex:4:2}))
|
|
1690
|
-
fi
|
|
1691
|
-
if (( help )); then
|
|
1692
|
-
badge=HELP right=$b"? esc"$z$d" close"$z
|
|
1693
|
-
elif [[ -n $pick ]]; then
|
|
1694
|
-
badge='PREVIEW (APPLY)' lead="$pick →"
|
|
1695
|
-
for (( i = 1; i <= ${#plabel}; i++ )); do
|
|
1696
|
-
if (( i != pk )); then
|
|
1697
|
-
lead+=" "$d${plabel[i]}$z
|
|
1698
|
-
elif (( color )); then
|
|
1699
|
-
lead+=" "$on${plabel[i]}$z
|
|
1700
|
-
else
|
|
1701
|
-
lead+=" [${${plabel[i]# }% }]"
|
|
1702
|
-
fi
|
|
1703
|
-
done
|
|
1704
|
-
if [[ $mode == pin ]]; then
|
|
1705
|
-
badge='PREVIEW (PIN)'
|
|
1706
|
-
__tt_pin_base "${pkeys[pk]}"
|
|
1707
|
-
__tt_dir_label "$REPLY"
|
|
1708
|
-
note=$REPLY
|
|
1709
|
-
elif (( pk == 1 )); then
|
|
1710
|
-
note="Until this tab closes"
|
|
1711
|
-
else
|
|
1712
|
-
note="New tabs · the default palette"
|
|
1713
|
-
fi
|
|
1714
|
-
kk=(enter) kl=(confirm)
|
|
1715
|
-
right=$b"esc"$z$d" back"$z
|
|
1716
|
-
elif [[ -n $tune ]]; then
|
|
1717
|
-
badge='IMAGE EDIT' kk=(↑↓ ←→ '=' +) kl=(field step reset "reset all")
|
|
1718
|
-
if (( tf == 2 )); then
|
|
1719
|
-
kl[2]=move kk+=(1-9) kl+=(place)
|
|
1720
|
-
elif (( tf == 4 )); then
|
|
1721
|
-
kl[2]=switch kk=(${kk:#'='}) kl=("${(@)kl[1,2]}" "reset all")
|
|
1722
|
-
else
|
|
1723
|
-
kk+=(⇧←→) kl+=(×10)
|
|
1724
|
-
fi
|
|
1725
|
-
if (( bgoff[$tpick] )); then
|
|
1726
|
-
kk+=(space enter) kl+=(show keep)
|
|
1727
|
-
else
|
|
1728
|
-
kk+=(c space enter) kl+=(colors hide keep)
|
|
1729
|
-
fi
|
|
1730
|
-
__tt_pv_bg_images $tune
|
|
1731
|
-
(( REPLY > 1 )) && { kk+=(', .' D); kl+=("image ×$REPLY" remove) }
|
|
1732
|
-
__tt_pv_bg_findable $tune && { kk+=(f); kl+=(find) }
|
|
1733
|
-
right=$b"esc"$z$d" undo"$z
|
|
1734
|
-
elif (( conf )); then
|
|
1735
|
-
badge=CONFIG kk=(↑↓ ←→ enter) kl=(setting value save)
|
|
1736
|
-
right=$b"esc"$z$d" undo"$z
|
|
1737
|
-
else
|
|
1738
|
-
badge=PREVIEW
|
|
1739
|
-
[[ -n $flt ]] && badge='PREVIEW (FILTER)'
|
|
1740
|
-
if (( ! ${#rval} )); then
|
|
1741
|
-
kk=(bksp) kl=(edit)
|
|
1742
|
-
elif [[ ${rtype[cur]} == (hdr|cat) ]]; then
|
|
1743
|
-
if [[ -z $flt && -n ${exp[${rval[cur]}]} ]]; then
|
|
1744
|
-
kk=(←) kl=(close)
|
|
1745
|
-
elif [[ -z $flt ]]; then
|
|
1746
|
-
kk=(→) kl=(open)
|
|
1747
|
-
fi
|
|
1748
|
-
else
|
|
1749
|
-
kk=(enter) kl=(apply)
|
|
1750
|
-
[[ $mode == pin ]] && kl[1]=pin
|
|
1751
|
-
if __tt_pv_bg_state ${rval[cur]}; then
|
|
1752
|
-
kk+=(tab) kl+=("tune bg")
|
|
1753
|
-
elif __tt_pv_bg_findable ${rval[cur]}; then
|
|
1754
|
-
kk+=(tab) kl+=("find bg")
|
|
1755
|
-
fi
|
|
1756
|
-
(( split )) && { kk+=(⇧←→); kl+=(example) }
|
|
1757
|
-
[[ -n $flt ]] && { kk+=(bksp); kl+=(edit) }
|
|
1758
|
-
fi
|
|
1759
|
-
kk+=('?') kl+=(keys)
|
|
1760
|
-
if [[ -n $flt ]]; then
|
|
1761
|
-
right=$b"esc"$z$d" clear filter"$z
|
|
1762
|
-
else
|
|
1763
|
-
right=$b"esc"$z$d" restore"$z
|
|
1764
|
-
[[ -n $cdot ]] && right+=" $cdot$z $cn"
|
|
1765
|
-
fi
|
|
1766
|
-
fi
|
|
1767
|
-
if (( msgt > 0 )) && [[ -z $pick ]]; then
|
|
1768
|
-
text=$msg
|
|
1769
|
-
room=$(( end - (${#badge} ? ${#badge} + 4 : 0) ))
|
|
1770
|
-
if (( ${(m)#text} > room )); then
|
|
1771
|
-
while [[ -n $text ]] && (( ${(m)#text} > room - 1 )); do text=${text[1,-2]}; done
|
|
1772
|
-
text+=…
|
|
1773
|
-
fi
|
|
1774
|
-
lead=$y$text$z note="" kk=() kl=()
|
|
1775
|
-
fi
|
|
1776
|
-
while :; do
|
|
1777
|
-
seg=()
|
|
1778
|
-
[[ -n $lead ]] && seg+=("$lead")
|
|
1779
|
-
[[ -n $note ]] && seg+=("$d$note$z")
|
|
1780
|
-
for (( i = 1; i <= ${#kk}; i++ )); do
|
|
1781
|
-
seg+=("$b${kk[i]}$z$d ${kl[i]}$z")
|
|
1782
|
-
done
|
|
1783
|
-
line=${(j: :)seg}
|
|
1784
|
-
if [[ -n $badge ]]; then
|
|
1785
|
-
if (( color )); then
|
|
1786
|
-
line=$'\e[7;1m'$ac" $badge "$z" "$line
|
|
1787
|
-
else
|
|
1788
|
-
line="[$badge] $line"
|
|
1789
|
-
fi
|
|
1790
|
-
fi
|
|
1791
|
-
plain=${line//$'\e'\[[0-9;]##m/}
|
|
1792
|
-
lwid=${(m)#plain}
|
|
1793
|
-
plain=${right//$'\e'\[[0-9;]##m/}
|
|
1794
|
-
rwid=${(m)#plain}
|
|
1795
|
-
(( lwid <= end && (! rwid || lwid + 3 + rwid <= end) )) && break
|
|
1796
|
-
if [[ -n $note ]]; then
|
|
1797
|
-
note=""
|
|
1798
|
-
elif (( ${#kk} > 2 )); then
|
|
1799
|
-
kk[-2]=() kl[-2]=()
|
|
1800
|
-
elif [[ -n $right ]]; then
|
|
1801
|
-
right=""
|
|
1802
|
-
elif (( ${#kk} > 1 )); then
|
|
1803
|
-
kk[-2]=() kl[-2]=()
|
|
1804
|
-
else
|
|
1805
|
-
break
|
|
1806
|
-
fi
|
|
1807
|
-
done
|
|
1808
|
-
out+=$line$'\e[K'
|
|
1809
|
-
[[ -n $right ]] && out+=$'\e['$(( end - rwid + 1 ))'G'$right
|
|
1810
|
-
return 0
|
|
1811
|
-
}
|
|
1812
|
-
|
|
1813
|
-
__tt_pv_help() {
|
|
1814
|
-
local back="the tab" z=$'\e[0m' b=$'\e[1m' blank
|
|
1815
|
-
[[ -n ${TTHEME_PALETTE[$cn]} ]] && back=$cn
|
|
1816
|
-
local -a hk=(Move Series Filter "" Example Apply) hv=(
|
|
1817
|
-
"↑↓ home end pgup pgdn"
|
|
1818
|
-
"←→ · enter or space on a series"
|
|
1819
|
-
"Any text · bksp · ctrl-u clears"
|
|
1820
|
-
"Names and titles, in Japanese too"
|
|
1821
|
-
"⇧←→ ${(Lj:, :)TTHEME_SCENES}"
|
|
1822
|
-
"enter · esc restores $back"
|
|
1823
|
-
)
|
|
1824
|
-
if (( bgcw )); then
|
|
1825
|
-
hk+=("Tune bg" "" "" "" "" "" "")
|
|
1826
|
-
hv+=("tab · finds one on the boorus, or takes your own, if none" "↑↓ field ←→ step ⇧←→ ×10 1-9 place" "= resets a field · + resets all" "space hides · enter keeps · esc undoes" "c tone ↔ the picture's own colors" ", . other pictures · D removes one" "f adds one from the boorus or your own")
|
|
1827
|
-
fi
|
|
1828
|
-
hk+=(Config "")
|
|
1829
|
-
hv+=("alt-c · ↑↓ setting ←→ value" "enter saves · esc undoes")
|
|
1830
|
-
hk+=(Close)
|
|
1831
|
-
hv+=("? esc")
|
|
1832
|
-
(( color )) || z= b=
|
|
1833
|
-
local -i i r x y w hh
|
|
1834
|
-
if (( split && sw >= 48 )); then
|
|
1835
|
-
for (( i = 1; i <= ${#hk}; i++ )); do
|
|
1836
|
-
r=$(( i + 3 ))
|
|
1837
|
-
(( r < ph )) || break
|
|
1838
|
-
out+=$'\e['$r';'$sc'H'$b${hk[i]}$z$'\e['$r';'$(( sc + 10 ))'H'${hv[i][1,se-sc-9]}
|
|
1839
|
-
done
|
|
1840
|
-
return 0
|
|
1841
|
-
fi
|
|
1842
|
-
w=$(( pw - 2 < 58 ? pw - 2 : 58 )) hh=$(( ${#hk} + 4 ))
|
|
1843
|
-
x=$(( (pw - w) / 2 + 1 )) y=$(( (ph - hh) / 2 ))
|
|
1844
|
-
(( y < 4 )) && y=4
|
|
1845
|
-
blank=${(l:w:: :)}
|
|
1846
|
-
out+=$'\e['$y';'$x'H'"╭─ Help ${(l:$(( w - 9 ))::─:)}╮"
|
|
1847
|
-
for (( r = y + 1; r < y + hh - 1; r++ )); do
|
|
1848
|
-
out+=$'\e['$r';'$x'H'$blank$'\e['$r';'$x'H│'$'\e['$r';'$(( x + w - 1 ))'H│'
|
|
1849
|
-
done
|
|
1850
|
-
for (( i = 1; i <= ${#hk}; i++ )); do
|
|
1851
|
-
r=$(( y + 1 + i ))
|
|
1852
|
-
out+=$'\e['$r';'$(( x + 3 ))'H'$b${hk[i]}$z$'\e['$r';'$(( x + 13 ))'H'${hv[i][1,w-16]}
|
|
1853
|
-
done
|
|
1854
|
-
out+=$'\e['$(( y + hh - 1 ))';'$x'H'"╰${(l:$(( w - 2 ))::─:)}╯"
|
|
1855
|
-
}
|
|
1856
|
-
|
|
1857
|
-
__tt_pv_specimen() {
|
|
1858
|
-
local -a sp=(${=applied}) lines parts
|
|
1859
|
-
(( ${#sp} >= 20 )) || return 0
|
|
1860
|
-
local z=$'\e[0m' d=$'\e[2m' cell hex fore line text piece role tabs="" built="" key="$applied|$painted|$scene|$sw|$sc|$ph"
|
|
1861
|
-
local -A rs=(p "" d $'\e[2m' b $'\e[1m')
|
|
1862
|
-
local -i i r=6 cw=4 k n=${#TTHEME_SCENES} at
|
|
1863
|
-
(( n )) || return 0
|
|
1864
|
-
if [[ $key == "$pvscene" ]]; then
|
|
1865
|
-
out+=$pvscenes
|
|
1866
|
-
return 0
|
|
1867
|
-
fi
|
|
1868
|
-
at=$(( (scene % n + n) % n + 1 ))
|
|
1869
|
-
if [[ $applied == "$painted" ]]; then
|
|
1870
|
-
for (( i = 0; i < 16; i++ )); do
|
|
1871
|
-
k=$(( i < 8 ? 30 + i : 82 + i ))
|
|
1872
|
-
rs[$i]=$'\e['$k'm' rs[B$i]=$'\e[1;'$k'm' rs[K$i]=$'\e[30;'$(( k + 10 ))'m'
|
|
1873
|
-
done
|
|
1874
|
-
else
|
|
1875
|
-
fore=${sp[5]#\#}
|
|
1876
|
-
for (( i = 0; i < 16; i++ )); do
|
|
1877
|
-
hex=${sp[i+5]#\#}
|
|
1878
|
-
printf -v cell '\e[38;2;%d;%d;%dm' $((16#${hex:0:2})) $((16#${hex:2:2})) $((16#${hex:4:2}))
|
|
1879
|
-
rs[$i]=$cell
|
|
1880
|
-
printf -v cell '\e[38;2;%d;%d;%d;48;2;%d;%d;%dm' $((16#${fore:0:2})) $((16#${fore:2:2})) $((16#${fore:4:2})) \
|
|
1881
|
-
$((16#${hex:0:2})) $((16#${hex:2:2})) $((16#${hex:4:2}))
|
|
1882
|
-
rs[K$i]=$cell
|
|
1883
|
-
hex=${sp[(i < 8 ? i + 13 : i + 5)]#\#}
|
|
1884
|
-
printf -v cell '\e[1;38;2;%d;%d;%dm' $((16#${hex:0:2})) $((16#${hex:2:2})) $((16#${hex:4:2}))
|
|
1885
|
-
rs[B$i]=$cell
|
|
1886
|
-
done
|
|
1887
|
-
fi
|
|
1888
|
-
printf -v cell '\e[48;2;%d;%d;%dm' $((16#${sp[4]:1:2})) $((16#${sp[4]:3:2})) $((16#${sp[4]:5:2}))
|
|
1889
|
-
rs[s]=$cell
|
|
1890
|
-
printf -v cell '\e[48;2;%d;%d;%dm' $((16#${sp[3]:1:2})) $((16#${sp[3]:3:2})) $((16#${sp[3]:5:2}))
|
|
1891
|
-
rs[c]=$cell
|
|
1892
|
-
if (( ${#${(j: :)TTHEME_SCENES}} <= sw )); then
|
|
1893
|
-
for (( k = 1; k <= n; k++ )); do
|
|
1894
|
-
(( k > 1 )) && tabs+=" "
|
|
1895
|
-
if (( k == at )); then
|
|
1896
|
-
tabs+=$'\e[1m'$ac$TTHEME_SCENES[k]$z
|
|
1897
|
-
else
|
|
1898
|
-
tabs+=$d$TTHEME_SCENES[k]$z
|
|
1899
|
-
fi
|
|
1900
|
-
done
|
|
1901
|
-
else
|
|
1902
|
-
tabs=$'\e[1m'$ac$TTHEME_SCENES[at]$z" "$d"$at/$n"$z
|
|
1903
|
-
fi
|
|
1904
|
-
built+=$'\e[2;'$sc'H'$tabs
|
|
1905
|
-
(( sw < 44 )) && cw=3
|
|
1906
|
-
(( sw >= 56 )) && cw=$(( (sw + 1) / 8 - 1 ))
|
|
1907
|
-
(( cw > 7 )) && cw=7
|
|
1908
|
-
line=""
|
|
1909
|
-
for (( i = 0; i < 8; i++ )); do
|
|
1910
|
-
fore=${sp[i+5]#\#} hex=${sp[i+13]#\#}
|
|
1911
|
-
printf -v cell '\e[38;2;%d;%d;%d;48;2;%d;%d;%dm%s\e[0m ' \
|
|
1912
|
-
$((16#${fore:0:2})) $((16#${fore:2:2})) $((16#${fore:4:2})) \
|
|
1913
|
-
$((16#${hex:0:2})) $((16#${hex:2:2})) $((16#${hex:4:2})) "${(l:cw::▀:)}"
|
|
1914
|
-
line+=$cell
|
|
1915
|
-
done
|
|
1916
|
-
built+=$'\e[4;'$sc'H'$line
|
|
1917
|
-
lines=("${(@P)${:-TTHEME_SCENE_$at}}")
|
|
1918
|
-
for line in "${lines[@]}"; do
|
|
1919
|
-
[[ $line == «w»* ]] && (( sw < 44 )) && continue
|
|
1920
|
-
[[ $line == «n»* ]] && (( sw >= 44 )) && continue
|
|
1921
|
-
(( r < ph )) || break
|
|
1922
|
-
parts=("${(@s:«:)line}")
|
|
1923
|
-
text=$parts[1]
|
|
1924
|
-
for piece in "${(@)parts[2,-1]}"; do
|
|
1925
|
-
role=${piece%%»*}
|
|
1926
|
-
[[ $role == [wn] ]] && role=p
|
|
1927
|
-
text+=$z${rs[${role:-p}]}${piece#*»}
|
|
1928
|
-
done
|
|
1929
|
-
built+=$'\e['$r';'$sc'H'$text$z
|
|
1930
|
-
(( ++r ))
|
|
1931
|
-
done
|
|
1932
|
-
pvscene=$key pvscenes=$built
|
|
1933
|
-
out+=$built
|
|
1934
|
-
}
|
|
1935
|
-
|
|
1936
|
-
__tt_pv_tune() {
|
|
1937
|
-
local -a fields=(size pos op)
|
|
1938
|
-
local -i n=1
|
|
1939
|
-
local name
|
|
1940
|
-
case $key in
|
|
1941
|
-
$'\x03') return 1 ;;
|
|
1942
|
-
up) tf=$(( tf > 1 ? tf - 1 : 4 )) ;;
|
|
1943
|
-
down) tf=$(( tf < 4 ? tf + 1 : 1 )) ;;
|
|
1944
|
-
c) (( bgoff[$tpick] )) || __tt_pv_bg_recolor ;;
|
|
1945
|
-
left|right|sleft|sright)
|
|
1946
|
-
if (( tf == 4 )); then
|
|
1947
|
-
(( bgoff[$tpick] )) || __tt_pv_bg_recolor
|
|
1948
|
-
return 0
|
|
1949
|
-
fi
|
|
1950
|
-
[[ $key == *left ]] && n=-1
|
|
1951
|
-
[[ $key == s* ]] && (( tf != 2 )) && n=$(( n * 10 ))
|
|
1952
|
-
__tt_pv_bg_adjust ${fields[tf]} $n
|
|
1953
|
-
;;
|
|
1954
|
-
[1-9])
|
|
1955
|
-
tf=2
|
|
1956
|
-
__tt_pv_bg_adjust at $key
|
|
1957
|
-
;;
|
|
1958
|
-
' ') __tt_pv_bg_adjust on ;;
|
|
1959
|
-
'=') (( tf == 4 )) || __tt_pv_bg_adjust def $tf ;;
|
|
1960
|
-
'+') __tt_pv_bg_adjust def ;;
|
|
1961
|
-
',') __tt_pv_bg_pick -1 ;;
|
|
1962
|
-
'.') __tt_pv_bg_pick 1 ;;
|
|
1963
|
-
D) __tt_pv_bg_drop ;;
|
|
1964
|
-
f)
|
|
1965
|
-
__tt_pv_bg_findable $tune || return 0
|
|
1966
|
-
name=$tune
|
|
1967
|
-
__tt_pv_untune
|
|
1968
|
-
__tt_pv_bg_find $name
|
|
1969
|
-
__tt_pv_tune_open $name
|
|
1970
|
-
;;
|
|
1971
|
-
$'\r'|$'\n') __tt_pv_tune_keep ;;
|
|
1972
|
-
esc) __tt_pv_untune ;;
|
|
1973
|
-
'?') help=1 ;;
|
|
1974
|
-
esac
|
|
1975
|
-
return 0
|
|
1976
|
-
}
|
|
1977
|
-
|
|
1978
|
-
__tt_pv_tune_keep() {
|
|
1979
|
-
local img was=${bgview[$tune]:-$tune}
|
|
1980
|
-
local -i changed=0
|
|
1981
|
-
for img in ${(k)tsnaps}; do
|
|
1982
|
-
[[ "${bgsize[$img]} ${bgpos[$img]} ${bgop[$img]} ${bgoff[$img]}" == "${tsnaps[$img]}" ]] && continue
|
|
1983
|
-
bgedit[$img]=1 changed=1
|
|
1984
|
-
done
|
|
1985
|
-
if [[ $tpick != "$was" ]]; then
|
|
1986
|
-
changed=1
|
|
1987
|
-
if [[ $tpick == "$tune" ]]; then
|
|
1988
|
-
unset "bgview[$tune]" "bgswap[$tune]"
|
|
1989
|
-
else
|
|
1990
|
-
bgview[$tune]=$tpick bgswap[$tune]=${tpick##*:}
|
|
1991
|
-
fi
|
|
1992
|
-
fi
|
|
1993
|
-
(( changed )) && msg="Kept · saved when preview closes" msgt=200
|
|
1994
|
-
__tt_pv_bg_strip_off
|
|
1995
|
-
tune="" tpick="" tsnaps=() bgname=""
|
|
1996
|
-
}
|
|
1997
|
-
|
|
1998
|
-
__tt_pv_untune() {
|
|
1999
|
-
local img
|
|
2000
|
-
local -a s
|
|
2001
|
-
for img in ${(k)tsnaps}; do
|
|
2002
|
-
s=(${=tsnaps[$img]})
|
|
2003
|
-
bgsize[$img]=$s[1] bgpos[$img]=$s[2] bgop[$img]=$s[3] bgoff[$img]=$s[4]
|
|
2004
|
-
done
|
|
2005
|
-
__tt_pv_bg_strip_off
|
|
2006
|
-
tune="" tpick="" tsnaps=() bgname=""
|
|
2007
|
-
}
|
|
2008
|
-
|
|
2009
|
-
__tt_pv_regroup() {
|
|
2010
|
-
local ty=${rtype[cur]} v=${rval[cur]} i
|
|
2011
|
-
__tt_pv_group
|
|
2012
|
-
__tt_pv_rows
|
|
2013
|
-
for (( i = 1; i <= ${#rval}; i++ )); do
|
|
2014
|
-
[[ ${rtype[i]} == "$ty" && ${rval[i]} == "$v" ]] && { cur=$i; return 0 }
|
|
2015
|
-
done
|
|
2016
|
-
cur=1
|
|
2017
|
-
}
|
|
2018
|
-
|
|
2019
|
-
__tt_pv_conf() {
|
|
2020
|
-
case $key in
|
|
2021
|
-
$'\x03') return 1 ;;
|
|
2022
|
-
up) cf=$(( cf > 1 ? cf - 1 : ${#cvars} )) ;;
|
|
2023
|
-
down) cf=$(( cf < ${#cvars} ? cf + 1 : 1 )) ;;
|
|
2024
|
-
left|sleft) __tt_pv_conf_step -1 ;;
|
|
2025
|
-
right|sright) __tt_pv_conf_step 1 ;;
|
|
2026
|
-
$'\r'|$'\n') __tt_pv_conf_save ;;
|
|
2027
|
-
esc) __tt_pv_unconf ;;
|
|
2028
|
-
'?') help=1 ;;
|
|
2029
|
-
esac
|
|
2030
|
-
return 0
|
|
2031
|
-
}
|
|
2032
|
-
|
|
2033
|
-
__tt_pv_conf_step() {
|
|
2034
|
-
local var=${cvars[cf]}
|
|
2035
|
-
local -a ch=(${=cchoice[cf]})
|
|
2036
|
-
local -i i=${ch[(Ie)${(P)var}]}
|
|
2037
|
-
(( i += $1 ))
|
|
2038
|
-
(( i >= 1 && i <= ${#ch} )) || return 0
|
|
2039
|
-
__tt_pv_conf_put $var ${ch[i]}
|
|
2040
|
-
}
|
|
2041
|
-
|
|
2042
|
-
__tt_pv_conf_put() {
|
|
2043
|
-
[[ ${(P)1} == "$2" ]] && return 0
|
|
2044
|
-
typeset -g "$1=$2"
|
|
2045
|
-
case $1 in
|
|
2046
|
-
TTHEME_SORT) __tt_pv_regroup ;;
|
|
2047
|
-
TTHEME_FX) [[ -n $flt ]] || { __tt_pv_roll; gstep=8 } ;;
|
|
2048
|
-
TTHEME_TAB_PALETTE) __tt_pv_canpick ;;
|
|
2049
|
-
esac
|
|
2050
|
-
}
|
|
2051
|
-
|
|
2052
|
-
__tt_pv_unconf() {
|
|
2053
|
-
local -i i
|
|
2054
|
-
for (( i = 1; i <= ${#cvars}; i++ )); do
|
|
2055
|
-
__tt_pv_conf_put ${cvars[i]} "${csnap[i]}"
|
|
2056
|
-
done
|
|
2057
|
-
conf=0
|
|
2058
|
-
}
|
|
2059
|
-
|
|
2060
|
-
__tt_pv_conf_save() {
|
|
2061
|
-
local var REPLY
|
|
2062
|
-
local -a pairs=()
|
|
2063
|
-
local -i i
|
|
2064
|
-
for (( i = 1; i <= ${#cvars}; i++ )); do
|
|
2065
|
-
var=${cvars[i]}
|
|
2066
|
-
[[ ${(P)var} == "${csnap[i]}" ]] || pairs+=($var "${(P)var}")
|
|
2067
|
-
done
|
|
2068
|
-
if (( ! ${#pairs} )); then
|
|
2069
|
-
conf=0
|
|
2070
|
-
return 0
|
|
2071
|
-
fi
|
|
2072
|
-
__tt_tilde "$TTHEME_CONFIG"
|
|
2073
|
-
if __tt_config_write "${pairs[@]}"; then
|
|
2074
|
-
conf=0 msg="Saved · $REPLY" msgt=200
|
|
2075
|
-
(( ${pairs[(Ie)TTHEME_BG_BLUR]} )) && __tt_pv_redraw
|
|
2076
|
-
else
|
|
2077
|
-
__tt_pv_unconf
|
|
2078
|
-
msg="Could not write $REPLY" msgt=200
|
|
2079
|
-
fi
|
|
2080
|
-
}
|
|
2081
|
-
|
|
2082
|
-
__tt_pv_redraw() {
|
|
2083
|
-
local name out
|
|
2084
|
-
if (( $+functions[__tt_bg_write] )); then
|
|
2085
|
-
for name in ${(k)bgedit}; do
|
|
2086
|
-
__tt_bg_write $name
|
|
2087
|
-
done
|
|
2088
|
-
fi
|
|
2089
|
-
bgedit=()
|
|
2090
|
-
msg="Drawing the background pictures again" msgt=300
|
|
2091
|
-
printf '\e[?2026h'
|
|
2092
|
-
__tt_pv_draw
|
|
2093
|
-
__tt_pv_bg_close
|
|
2094
|
-
out=$(__tt_cli redraw 2>&1)
|
|
2095
|
-
bgsrc=() resized=1 bgname="" bgshown="" bgdim=()
|
|
2096
|
-
__tt_reload
|
|
2097
|
-
(( $+functions[__tt_bg_refresh] )) && __tt_bg_refresh $TTHEME_ORDER
|
|
2098
|
-
msg=${${out//$'\n'/ }:-"Saved · no background pictures to draw"} msgt=300
|
|
2099
|
-
}
|
|
2100
|
-
|
|
2101
|
-
__tt_pv_conf_panel() {
|
|
2102
|
-
local z=$'\e[0m' b=$'\e[1m' d=$'\e[2m' c=$ac on=$'\e[7;1m'$ac var v note
|
|
2103
|
-
local -a ch sh
|
|
2104
|
-
local -i r0=$1 col=$2 end=$3 k i j fit=1
|
|
2105
|
-
(( color )) || z= b= d= c= on=
|
|
2106
|
-
for (( k = 1; k <= ${#cvars}; k++ )); do
|
|
2107
|
-
sh=(${=cshow[k]})
|
|
2108
|
-
(( 13 + ${#${(j: :)sh}} + 2 * ${#sh} > end - col + 1 )) && fit=0
|
|
2109
|
-
done
|
|
2110
|
-
for (( k = 1; k <= ${#cvars}; k++ )); do
|
|
2111
|
-
var=${cvars[k]} ch=(${=cchoice[k]}) sh=(${=cshow[k]})
|
|
2112
|
-
i=${ch[(Ie)${(P)var}]}
|
|
2113
|
-
out+=$'\e['$(( r0 + k - 1 ))';'$col'H'
|
|
2114
|
-
if (( k == cf )); then
|
|
2115
|
-
out+=$c"▶"$z" "$b
|
|
2116
|
-
else
|
|
2117
|
-
out+=" "$d
|
|
2118
|
-
fi
|
|
2119
|
-
out+=${(r:11:)clabel[k]}$z
|
|
2120
|
-
if (( ! fit )); then
|
|
2121
|
-
v=${(P)var}
|
|
2122
|
-
(( i )) && v=${sh[i]}
|
|
2123
|
-
if (( k == cf )); then
|
|
2124
|
-
out+=$c"‹ "$z$b$v$z$c" ›"$z
|
|
2125
|
-
else
|
|
2126
|
-
out+=" "$v
|
|
2127
|
-
fi
|
|
2128
|
-
continue
|
|
2129
|
-
fi
|
|
2130
|
-
for (( j = 1; j <= ${#sh}; j++ )); do
|
|
2131
|
-
(( j > 1 )) && out+=" "
|
|
2132
|
-
if (( j != i )); then
|
|
2133
|
-
out+=$d" ${sh[j]} "$z
|
|
2134
|
-
elif (( ! color )); then
|
|
2135
|
-
out+="[${sh[j]}]"
|
|
2136
|
-
elif (( k == cf )); then
|
|
2137
|
-
out+=$on" ${sh[j]} "$z
|
|
2138
|
-
else
|
|
2139
|
-
out+=" ${sh[j]} "
|
|
2140
|
-
fi
|
|
2141
|
-
done
|
|
2142
|
-
done
|
|
2143
|
-
var=${cvars[cf]}
|
|
2144
|
-
note=${cnote[$var:${(P)var}]}
|
|
2145
|
-
[[ -n $note ]] && out+=$'\e['$(( r0 + ${#cvars} + 1 ))';'$col'H'$d${note[1,end-col+1]}$z
|
|
2146
|
-
return 0
|
|
2147
|
-
}
|
|
2148
|
-
|
|
2149
|
-
__tt_pv_flush() {
|
|
2150
|
-
local REPLY
|
|
2151
|
-
print -rn -- "$out"
|
|
2152
|
-
if (( wiped )); then
|
|
2153
|
-
local bn=$bgname
|
|
2154
|
-
if [[ ${rtype[cur]} == thm ]]; then
|
|
2155
|
-
__tt_pv_shows ${rval[cur]}
|
|
2156
|
-
bn=$REPLY
|
|
2157
|
-
fi
|
|
2158
|
-
[[ -n $bn ]] && __tt_pv_bg_show "$bn" 1
|
|
2159
|
-
fi
|
|
2160
|
-
if [[ -n $bgstrip ]]; then
|
|
2161
|
-
__tt_pv_bg_strip ${=bgstrip}
|
|
2162
|
-
elif (( ${#bgthumb} )); then
|
|
2163
|
-
__tt_pv_bg_strip_off
|
|
2164
|
-
fi
|
|
2165
|
-
printf '\e[1;%dH\e[?2026l' $(( 4 + ${(m)#flt} ))
|
|
2166
|
-
}
|
|
2167
|
-
|
|
2168
|
-
__tt_pv_reach() {
|
|
2169
|
-
local key=${pkeys[pk]} base top k home=${HOME:a} here=${PWD:a} htip="" d=$'\e[2m' z=$'\e[0m' REPLY
|
|
2170
|
-
local -A own=() below=() parent=() mark=() tstrip=()
|
|
2171
|
-
local -a roots=() lp=() lpw=() ll=() lat=() lpal=() lnote=() lflag=() reply was=()
|
|
2172
|
-
local -A TTHEME_PINS=("${(@kv)TTHEME_PINS}")
|
|
2173
|
-
local -i room=$2
|
|
2174
|
-
(( color )) || d= z=
|
|
2175
|
-
(( room < 2 )) && room=2
|
|
2176
|
-
__tt_pin_base "$key"
|
|
2177
|
-
base=$REPLY
|
|
2178
|
-
for k in ${(k)TTHEME_PINS}; do
|
|
2179
|
-
[[ $k == /* ]] || continue
|
|
2180
|
-
__tt_pin_base "$k"
|
|
2181
|
-
[[ $REPLY == "$base" ]] || continue
|
|
2182
|
-
if [[ $k != "$key" || $TTHEME_PINS[$k] != "$pick" ]]; then
|
|
2183
|
-
__tt_pin_scope "$k"
|
|
2184
|
-
was+=("${TTHEME_PINS[$k]} · $REPLY")
|
|
2185
|
-
fi
|
|
2186
|
-
unset "TTHEME_PINS[$k]"
|
|
2187
|
-
done
|
|
2188
|
-
TTHEME_PINS[$key]=$pick
|
|
2189
|
-
top=$base
|
|
2190
|
-
[[ $base != / ]] && __tt_pin_cover "${base:h}" && __tt_pin_base "$REPLY" && top=$REPLY
|
|
2191
|
-
mark[$base]=new
|
|
2192
|
-
__tt_map_build "$top"
|
|
2193
|
-
__tt_map_fit $1
|
|
2194
|
-
(( ${#reply} > room )) && reply=("${(@)reply[1,room-1]}" " …")
|
|
2195
|
-
reach=("${reply[@]}" "")
|
|
2196
|
-
__tt_dir_label "$base"
|
|
2197
|
-
base=$REPLY
|
|
2198
|
-
for k in $was; do
|
|
2199
|
-
__tt_clip "${d}Replaces ${k% · *} on $base · ${k##* · }$z" $1
|
|
2200
|
-
reach+=("$REPLY")
|
|
2201
|
-
done
|
|
2202
|
-
__tt_pin_scope "$key"
|
|
2203
|
-
__tt_clip "→ $base · $REPLY" $(( $1 - ${(m)#pick} - 2 ))
|
|
2204
|
-
rsub=$REPLY
|
|
2205
|
-
__tt_here_fit "Then here" $1
|
|
2206
|
-
reach+=("${reply[@]}")
|
|
2207
|
-
}
|
|
2208
|
-
|
|
2209
|
-
__tt_pv_draw() {
|
|
2210
|
-
local out line cnt ex ag="" acat="" ac="" sb="" dd="" zz="" state=on src="" nflt="" rsub="" REPLY
|
|
2211
|
-
local -i lw sw split sc se=$(( pw - 2 )) h k i N=${#rval} mt=${#TTHEME_ORDER} wiped=0
|
|
2212
|
-
local -a held
|
|
2213
|
-
bgstrip=""
|
|
2214
|
-
if [[ -n $flt ]]; then
|
|
2215
|
-
__tt_pv_norm "$flt"
|
|
2216
|
-
nflt=$REPLY
|
|
2217
|
-
fi
|
|
2218
|
-
__tt_pv_lw
|
|
2219
|
-
lw=$reply[1] sw=$reply[2]
|
|
2220
|
-
split=$(( sw > 0 )) sc=$(( pw - 1 - sw ))
|
|
2221
|
-
h=$(( ph - 5 ))
|
|
2222
|
-
[[ -n $tune ]] && (( ! split )) && h=$(( ph - 14 ))
|
|
2223
|
-
(( conf && ! split )) && h=$(( ph - 6 - ${#cvars} ))
|
|
2224
|
-
reach=()
|
|
2225
|
-
if [[ -n $pick && $mode == pin ]]; then
|
|
2226
|
-
if (( split )); then
|
|
2227
|
-
__tt_pv_reach $sw $(( ph - 6 ))
|
|
2228
|
-
else
|
|
2229
|
-
__tt_pv_reach $se $(( ph - 13 ))
|
|
2230
|
-
h=$(( ph - 6 - ${#reach} ))
|
|
2231
|
-
fi
|
|
2232
|
-
fi
|
|
2233
|
-
(( h < 1 )) && h=1
|
|
2234
|
-
(( cur < top )) && top=$cur
|
|
2235
|
-
(( cur >= top + h )) && top=$(( cur - h + 1 ))
|
|
2236
|
-
(( top < 1 )) && top=1
|
|
2237
|
-
(( N > h && top > N - h + 1 )) && top=$(( N - h + 1 ))
|
|
2238
|
-
if (( color )); then
|
|
2239
|
-
dd=$'\e[2m' zz=$'\e[0m'
|
|
2240
|
-
if [[ -n $applied ]]; then
|
|
2241
|
-
local -a ap=(${=applied})
|
|
2242
|
-
local acx=${ap[3]#\#} sbx=${ap[4]#\#}
|
|
2243
|
-
printf -v ac '\e[38;2;%d;%d;%dm' $((16#${acx:0:2})) $((16#${acx:2:2})) $((16#${acx:4:2}))
|
|
2244
|
-
printf -v sb '\e[48;2;%d;%d;%dm' $((16#${sbx:0:2})) $((16#${sbx:2:2})) $((16#${sbx:4:2}))
|
|
2245
|
-
fi
|
|
2246
|
-
if [[ ${rtype[cur]} == thm ]]; then
|
|
2247
|
-
ag=${TTHEME_GROUP[${rval[cur]}]:-Other}
|
|
2248
|
-
[[ -n ${TTHEME_CATALOG[${rval[cur]}]} ]] && acat=$ag/${TTHEME_CATALOG[${rval[cur]}]}
|
|
2249
|
-
fi
|
|
2250
|
-
fi
|
|
2251
|
-
if [[ -n $flt ]]; then
|
|
2252
|
-
local -a mm=(${(M)rtype:#thm})
|
|
2253
|
-
mt=${#mm}
|
|
2254
|
-
fi
|
|
2255
|
-
cnt="$mt/${#TTHEME_ORDER}"
|
|
2256
|
-
out=$'\e[H'
|
|
2257
|
-
if (( resized )); then
|
|
2258
|
-
out+=$'\e[K\e[2H\e[J\e[H'
|
|
2259
|
-
(( bgcw )) && out+=$'\e_Ga=d,d=A,q=2\e\\'
|
|
2260
|
-
resized=0 wiped=1
|
|
2261
|
-
fi
|
|
2262
|
-
if (( pw < 40 || ph < 12 )); then
|
|
2263
|
-
line="ttheme preview"
|
|
2264
|
-
(( color )) && line=$'\e[1m'$ac$line$'\e[0m'
|
|
2265
|
-
out+=$line$'\e[K\n'"Needs 40×12 — now ${pw}×${ph}"$'\e[K\n'
|
|
2266
|
-
line="esc quits"
|
|
2267
|
-
(( color )) && line=$'\e[2m'$line$'\e[0m'
|
|
2268
|
-
out+=$line$'\e[K\e[J'
|
|
2269
|
-
__tt_pv_flush
|
|
2270
|
-
return 0
|
|
2271
|
-
fi
|
|
2272
|
-
if [[ -n $flt ]]; then
|
|
2273
|
-
if (( color )); then
|
|
2274
|
-
line=" "$'\e[1m'$flt$zz$ac$'\e[7m \e[0m'
|
|
2275
|
-
else
|
|
2276
|
-
line=" ${flt}_"
|
|
2277
|
-
fi
|
|
2278
|
-
else
|
|
2279
|
-
ex="$expal | $exgrp"
|
|
2280
|
-
(( ${#ex} > lw - 19 - ${#cnt} )) && ex="${ex[1,lw-20-${#cnt}]}…"
|
|
2281
|
-
if (( gstep > 0 )); then
|
|
2282
|
-
local gkeep=$(( ${#ex} * (8 - gstep) / 8 ))
|
|
2283
|
-
if [[ $TTHEME_FX == (decode|glitch) ]]; then
|
|
2284
|
-
local gpool='▓▒░#*+=<>?/-_' gstill=' ' gout="" gi
|
|
2285
|
-
[[ $TTHEME_FX == decode ]] && gpool='abcdefghijklmnopqrstuvwxyz' gstill='[^[:alnum:]]'
|
|
2286
|
-
for (( gi = 1; gi <= ${#ex}; gi++ )); do
|
|
2287
|
-
if (( gi + (gi * 7 + gseed) % 3 <= gkeep )) || [[ ${ex[gi]} == $~gstill ]]; then
|
|
2288
|
-
gout+=${ex[gi]}
|
|
2289
|
-
else
|
|
2290
|
-
gout+=${gpool[RANDOM % ${#gpool} + 1]}
|
|
2291
|
-
fi
|
|
2292
|
-
done
|
|
2293
|
-
ex=$gout
|
|
2294
|
-
else
|
|
2295
|
-
ex="${ex[1,gkeep]}▏"
|
|
2296
|
-
fi
|
|
2297
|
-
fi
|
|
2298
|
-
line=" "$dd"Search… e.g. $ex"$zz
|
|
2299
|
-
fi
|
|
2300
|
-
local tail=$'\e['$(( lw - ${#cnt} ))'G'$dd$cnt$zz
|
|
2301
|
-
[[ -n $flt ]] && tail=$'\e['$(( lw - ${#cnt} ))'G'$cnt
|
|
2302
|
-
if [[ $1 == hint ]] && (( ! wiped )); then
|
|
2303
|
-
print -rn -- $'\e[H\e[0m\e['$lw'X'$line$tail
|
|
2304
|
-
printf '\e[1;%dH\e[?2026l' $(( 4 + ${(m)#flt} ))
|
|
2305
|
-
return 0
|
|
2306
|
-
fi
|
|
2307
|
-
out+=$line$'\e[K'$tail$'\n\e[K\n'
|
|
2308
|
-
(( N > h && top > 1 )) && out+=" "$dd"…"$zz
|
|
2309
|
-
out+=$'\e[K\n'
|
|
2310
|
-
for (( k = 0; k < ph - 4; k++ )); do
|
|
2311
|
-
i=$(( top + k ))
|
|
2312
|
-
line=""
|
|
2313
|
-
if (( k < h )); then
|
|
2314
|
-
if (( ! N )); then
|
|
2315
|
-
(( k == 0 )) && line=" ${dd}No palettes match '$flt'$zz"
|
|
2316
|
-
elif (( i <= N )); then
|
|
2317
|
-
__tt_pv_row $i
|
|
2318
|
-
line=$REPLY
|
|
2319
|
-
fi
|
|
2320
|
-
elif (( k == h && N > h && top + h <= N )); then
|
|
2321
|
-
line=" "$dd"…"$zz
|
|
2322
|
-
fi
|
|
2323
|
-
out+=$line$'\e[K\n'
|
|
2324
|
-
done
|
|
2325
|
-
__tt_pv_foot $(( split ? se : pw ))
|
|
2326
|
-
if (( split )); then
|
|
2327
|
-
if (( help && sw >= 48 )); then
|
|
2328
|
-
__tt_pv_head 1 $sc $se Help
|
|
2329
|
-
__tt_pv_help
|
|
2330
|
-
elif (( ${#reach} )); then
|
|
2331
|
-
__tt_pv_head 1 $sc $se "$pick" "$rsub"
|
|
2332
|
-
for (( k = 1; k <= ${#reach} && k + 2 < ph; k++ )); do
|
|
2333
|
-
out+=$'\e['$(( k + 2 ))';'$sc'H'${reach[k]}
|
|
2334
|
-
done
|
|
2335
|
-
elif [[ -n $tune ]]; then
|
|
2336
|
-
(( bgoff[$tpick] )) && state=off
|
|
2337
|
-
__tt_pv_bg_title $(( sw - ${#tune} - 6 ))
|
|
2338
|
-
__tt_pv_head 1 $sc $se $tune "$REPLY" $state
|
|
2339
|
-
__tt_pv_bg_panel $tpick 4 $sc $se
|
|
2340
|
-
elif (( conf )); then
|
|
2341
|
-
__tt_tilde "$TTHEME_CONFIG"
|
|
2342
|
-
src=$REPLY
|
|
2343
|
-
(( 8 + ${#src} > sw )) && src=""
|
|
2344
|
-
__tt_pv_head 1 $sc $se Config "" "$src"
|
|
2345
|
-
__tt_pv_conf_panel 4 $sc $se
|
|
2346
|
-
else
|
|
2347
|
-
[[ -n $an ]] && src=${TTHEME_SRC[$an]}
|
|
2348
|
-
(( ${#an} + 2 + ${#src} > sw )) && src=""
|
|
2349
|
-
__tt_pv_head 1 $sc $se ${an:-custom} "" "$src"
|
|
2350
|
-
__tt_pv_specimen
|
|
2351
|
-
fi
|
|
2352
|
-
(( help && sw < 48 )) && __tt_pv_help
|
|
2353
|
-
else
|
|
2354
|
-
if (( ${#reach} )); then
|
|
2355
|
-
__tt_pv_head $(( ph - 1 - ${#reach} )) 1 $se "$pick" "$rsub"
|
|
2356
|
-
for (( k = 1; k <= ${#reach}; k++ )); do
|
|
2357
|
-
out+=$'\e['$(( ph - 1 - ${#reach} + k ))';1H'${reach[k]}
|
|
2358
|
-
done
|
|
2359
|
-
elif [[ -n $tune ]]; then
|
|
2360
|
-
(( bgoff[$tpick] )) && state=off
|
|
2361
|
-
held=(${=bgpics[$tune]})
|
|
2362
|
-
src=""
|
|
2363
|
-
if (( ${#held} > 1 )); then
|
|
2364
|
-
k=${held[(Ie)${${tpick#$tune}#:}]}
|
|
2365
|
-
(( k )) || k=${held[(Ie)${bgact[$tune]}]}
|
|
2366
|
-
src=" · $k/${#held}"
|
|
2367
|
-
fi
|
|
2368
|
-
__tt_pv_bg_title $(( lw - ${#tune} - 6 )) "$src"
|
|
2369
|
-
__tt_pv_head $(( ph - 10 )) 1 $lw $tune "$REPLY" $state
|
|
2370
|
-
__tt_pv_bg_panel $tpick $(( ph - 9 )) 1 $lw
|
|
2371
|
-
elif (( conf )); then
|
|
2372
|
-
__tt_pv_head $(( ph - 2 - ${#cvars} )) 1 $lw Config
|
|
2373
|
-
__tt_pv_conf_panel $(( ph - 1 - ${#cvars} )) 1 $lw
|
|
2374
|
-
fi
|
|
2375
|
-
(( help )) && __tt_pv_help
|
|
2376
|
-
fi
|
|
2377
|
-
(( osdt > 0 )) && __tt_pv_osd
|
|
2378
|
-
__tt_pv_flush
|
|
2379
|
-
}
|
|
2380
|
-
|
|
2381
|
-
__tt_pv_group() {
|
|
2382
|
-
local k g
|
|
2383
|
-
groups=() gthemes=()
|
|
2384
|
-
__tt_order
|
|
2385
|
-
for k in $reply; do
|
|
2386
|
-
g=${TTHEME_GROUP[$k]:-Other}
|
|
2387
|
-
[[ -n ${gthemes[$g]} ]] || groups+=($g)
|
|
2388
|
-
gthemes[$g]+=" $k"
|
|
2389
|
-
done
|
|
2390
|
-
}
|
|
2391
|
-
|
|
2392
|
-
__tt_pv_canpick() {
|
|
2393
|
-
canpick=0
|
|
2394
|
-
if [[ $mode == pin ]]; then
|
|
2395
|
-
canpick=1
|
|
2396
|
-
elif __tt_keepable && [[ $TTHEME_TAB_PALETTE == off ]]; then
|
|
2397
|
-
canpick=1
|
|
2398
|
-
fi
|
|
2399
|
-
}
|
|
2400
|
-
|
|
2401
|
-
__tt_pv_strip() {
|
|
2402
|
-
local hex cell=""
|
|
2403
|
-
local -a sw=(${=TTHEME_SWATCH[$1]})
|
|
2404
|
-
local -i j
|
|
2405
|
-
for (( j = 1; j <= 6; j++ )); do
|
|
2406
|
-
hex=${sw[j]#\#}
|
|
2407
|
-
(( j > 1 )) && cell+=" "
|
|
2408
|
-
if [[ -n $hex ]]; then
|
|
2409
|
-
cell+=$'\e[38;2;'$((16#${hex:0:2}))';'$((16#${hex:2:2}))';'$((16#${hex:4:2}))'m■'
|
|
2410
|
-
else
|
|
2411
|
-
cell+=" "
|
|
2412
|
-
fi
|
|
2413
|
-
done
|
|
2414
|
-
tstrip[$1]=$cell$'\e[39m'
|
|
2415
|
-
}
|
|
2416
|
-
|
|
2417
|
-
__tt_pv_init() {
|
|
2418
|
-
local lo
|
|
2419
|
-
local -a tp
|
|
2420
|
-
__tt_pv_group
|
|
2421
|
-
[[ -n $orig ]] && __tt_name_of "$orig" && cn=$REPLY
|
|
2422
|
-
[[ -n ${TTHEME_PALETTE[$cn]} ]] || return 0
|
|
2423
|
-
cdot="◆"
|
|
2424
|
-
(( color )) || return 0
|
|
2425
|
-
tp=(${=TTHEME_PALETTE[$cn]})
|
|
2426
|
-
lo=${tp[3]#\#}
|
|
2427
|
-
printf -v cdot '\e[38;2;%d;%d;%dm◆\e[39m' $((16#${lo:0:2})) $((16#${lo:2:2})) $((16#${lo:4:2}))
|
|
2428
|
-
}
|
|
2429
|
-
|
|
2430
|
-
__tt_pv_roll() {
|
|
2431
|
-
expal=${TTHEME_ORDER[RANDOM % ${#TTHEME_ORDER} + 1]}
|
|
2432
|
-
exgrp=${groups[RANDOM % ${#groups} + 1]}
|
|
2433
|
-
gseed=$RANDOM
|
|
2434
|
-
exnext=$(( SECONDS + 3 ))
|
|
2435
|
-
}
|
|
2436
|
-
|
|
2437
|
-
__tt_pv_size() {
|
|
2438
|
-
local sz=$(stty size 2>/dev/null)
|
|
2439
|
-
[[ $sz == <1->" "<1-> ]] || return 1
|
|
2440
|
-
[[ $sz == "$ph $pw" ]] && return 1
|
|
2441
|
-
ph=${sz%% *} pw=${sz##* } resized=1
|
|
2442
|
-
return 0
|
|
2443
|
-
}
|
|
2444
|
-
|
|
2445
|
-
__tt_pv_getch() {
|
|
2446
|
-
if (( $# )); then
|
|
2447
|
-
read -sk 1 -t $1 2>/dev/null
|
|
2448
|
-
return
|
|
2449
|
-
fi
|
|
2450
|
-
local t=0.2
|
|
2451
|
-
(( gstep )) && t=0.06
|
|
2452
|
-
while ! read -sk 1 -t $t 2>/dev/null; do
|
|
2453
|
-
[[ -t 0 ]] || return 1
|
|
2454
|
-
__tt_pv_size && return 1
|
|
2455
|
-
if (( osdt > 0 )); then
|
|
2456
|
-
(( osdt -= gstep ? 6 : 20 ))
|
|
2457
|
-
(( osdt > 0 )) || return 1
|
|
2458
|
-
fi
|
|
2459
|
-
if (( msgt > 0 )); then
|
|
2460
|
-
(( msgt -= gstep ? 6 : 20 ))
|
|
2461
|
-
(( msgt > 0 )) || return 1
|
|
2462
|
-
fi
|
|
2463
|
-
(( gstep )) && { gstep=$(( gstep - 1 )); tick=1; return 1 }
|
|
2464
|
-
(( SECONDS >= exnext )) && { __tt_pv_roll; gstep=8; tick=1; return 1 }
|
|
2465
|
-
done
|
|
2466
|
-
return 0
|
|
2467
|
-
}
|
|
2468
|
-
|
|
2469
|
-
__tt_pv_read() {
|
|
2470
|
-
key=""
|
|
2471
|
-
if (( $# )); then
|
|
2472
|
-
__tt_pv_getch 0 || return 1
|
|
2473
|
-
else
|
|
2474
|
-
__tt_pv_getch || return 1
|
|
2475
|
-
fi
|
|
2476
|
-
key=$REPLY
|
|
2477
|
-
[[ $key == ç ]] && key=altc
|
|
2478
|
-
[[ $key == $'\e' ]] || return 0
|
|
2479
|
-
local seq=""
|
|
2480
|
-
if ! __tt_pv_getch 0.05; then
|
|
2481
|
-
key=esc
|
|
2482
|
-
return 0
|
|
2483
|
-
fi
|
|
2484
|
-
if [[ $REPLY != '[' && $REPLY != O ]]; then
|
|
2485
|
-
key=nop
|
|
2486
|
-
[[ $REPLY == c ]] && key=altc
|
|
2487
|
-
return 0
|
|
2488
|
-
fi
|
|
2489
|
-
while __tt_pv_getch 0.05; do
|
|
2490
|
-
seq+=$REPLY
|
|
2491
|
-
[[ $REPLY == [A-Za-z~] ]] && break
|
|
2492
|
-
done
|
|
2493
|
-
case $seq in
|
|
2494
|
-
A) key=up ;;
|
|
2495
|
-
B) key=down ;;
|
|
2496
|
-
C) key=right ;;
|
|
2497
|
-
D) key=left ;;
|
|
2498
|
-
H|"1~"|"7~") key=home ;;
|
|
2499
|
-
F|"4~"|"8~") key=end ;;
|
|
2500
|
-
"5~") key=pgup ;;
|
|
2501
|
-
"6~") key=pgdn ;;
|
|
2502
|
-
"1;2C") key=sright ;;
|
|
2503
|
-
"1;2D") key=sleft ;;
|
|
2504
|
-
Z) key=stab ;;
|
|
2505
|
-
*) key=nop ;;
|
|
2506
|
-
esac
|
|
2507
|
-
}
|
|
2508
|
-
|
|
2509
|
-
__tt_pv_pick() {
|
|
2510
|
-
case $key in
|
|
2511
|
-
$'\x03') return 1 ;;
|
|
2512
|
-
esc) pick="" ;;
|
|
2513
|
-
left|stab) pk=$(( (pk + ${#plabel} - 2) % ${#plabel} + 1 )) ;;
|
|
2514
|
-
right|$'\t') pk=$(( pk % ${#plabel} + 1 )) ;;
|
|
2515
|
-
$'\r'|$'\n')
|
|
2516
|
-
sel=$pick picked=$pk
|
|
2517
|
-
return 1
|
|
2518
|
-
;;
|
|
2519
|
-
esac
|
|
2520
|
-
return 0
|
|
2521
|
-
}
|
|
2522
|
-
|
|
2523
|
-
__tt_pv_handle() {
|
|
2524
|
-
local name
|
|
2525
|
-
if (( help )); then
|
|
2526
|
-
case $key in
|
|
2527
|
-
$'\x03') return 1 ;;
|
|
2528
|
-
'?'|esc) help=0 ;;
|
|
2529
|
-
esac
|
|
2530
|
-
return 0
|
|
2531
|
-
fi
|
|
2532
|
-
if [[ -n $pick ]]; then
|
|
2533
|
-
__tt_pv_pick
|
|
2534
|
-
return
|
|
2535
|
-
fi
|
|
2536
|
-
if [[ -n $tune ]]; then
|
|
2537
|
-
__tt_pv_tune
|
|
2538
|
-
return
|
|
2539
|
-
fi
|
|
2540
|
-
if (( conf )); then
|
|
2541
|
-
__tt_pv_conf
|
|
2542
|
-
return
|
|
2543
|
-
fi
|
|
2544
|
-
case $key in
|
|
2545
|
-
$'\x03') return 1 ;;
|
|
2546
|
-
esc|$'\x15')
|
|
2547
|
-
if [[ -z $flt ]]; then
|
|
2548
|
-
[[ $key == esc ]] && return 1
|
|
2549
|
-
else
|
|
2550
|
-
name=""
|
|
2551
|
-
[[ ${rtype[cur]} == thm ]] && name=${rval[cur]}
|
|
2552
|
-
flt=""
|
|
2553
|
-
if [[ -n $name ]]; then
|
|
2554
|
-
__tt_pv_goto "$name"
|
|
2555
|
-
else
|
|
2556
|
-
__tt_pv_rows
|
|
2557
|
-
(( cur > ${#rval} )) && cur=${#rval}
|
|
2558
|
-
(( cur < 1 )) && cur=1
|
|
2559
|
-
fi
|
|
2560
|
-
fi
|
|
2561
|
-
;;
|
|
2562
|
-
$'\r'|$'\n')
|
|
2563
|
-
if [[ ${rtype[cur]} == thm ]]; then
|
|
2564
|
-
if (( canpick )); then
|
|
2565
|
-
pick=${rval[cur]} pk=$pkdef
|
|
2566
|
-
else
|
|
2567
|
-
sel=${rval[cur]}
|
|
2568
|
-
return 1
|
|
2569
|
-
fi
|
|
2570
|
-
elif [[ ${rtype[cur]} == (hdr|cat) ]]; then
|
|
2571
|
-
__tt_pv_toggle
|
|
2572
|
-
fi
|
|
2573
|
-
;;
|
|
2574
|
-
up)
|
|
2575
|
-
if (( cur > 1 )); then
|
|
2576
|
-
cur=$(( cur - 1 ))
|
|
2577
|
-
[[ ${rtype[cur]} == rule ]] && cur=$(( cur - 1 ))
|
|
2578
|
-
elif (( ${#rval} )); then
|
|
2579
|
-
cur=${#rval}
|
|
2580
|
-
fi
|
|
2581
|
-
;;
|
|
2582
|
-
down)
|
|
2583
|
-
if (( cur < ${#rval} )); then
|
|
2584
|
-
cur=$(( cur + 1 ))
|
|
2585
|
-
[[ ${rtype[cur]} == rule ]] && cur=$(( cur + 1 ))
|
|
2586
|
-
elif (( ${#rval} )); then
|
|
2587
|
-
cur=1
|
|
2588
|
-
fi
|
|
2589
|
-
;;
|
|
2590
|
-
right) [[ ${rtype[cur]} == (hdr|cat) && -z ${exp[${rval[cur]}]} ]] && __tt_pv_toggle ;;
|
|
2591
|
-
left) __tt_pv_left ;;
|
|
2592
|
-
home) cur=1 ;;
|
|
2593
|
-
end) (( ${#rval} )) && cur=${#rval} ;;
|
|
2594
|
-
pgup)
|
|
2595
|
-
if (( cur <= 1 )); then
|
|
2596
|
-
(( ${#rval} )) && cur=${#rval}
|
|
2597
|
-
else
|
|
2598
|
-
cur=$(( cur - ph + 5 ))
|
|
2599
|
-
(( cur < 1 )) && cur=1
|
|
2600
|
-
[[ ${rtype[cur]} == rule ]] && cur=$(( cur - 1 ))
|
|
2601
|
-
fi
|
|
2602
|
-
;;
|
|
2603
|
-
pgdn)
|
|
2604
|
-
if (( cur >= ${#rval} )); then
|
|
2605
|
-
cur=1
|
|
2606
|
-
else
|
|
2607
|
-
cur=$(( cur + ph - 5 ))
|
|
2608
|
-
(( cur > ${#rval} )) && cur=${#rval}
|
|
2609
|
-
[[ ${rtype[cur]} == rule ]] && cur=$(( cur + 1 ))
|
|
2610
|
-
fi
|
|
2611
|
-
;;
|
|
2612
|
-
' ') [[ ${rtype[cur]} == (hdr|cat) ]] && __tt_pv_toggle ;;
|
|
2613
|
-
$'\t')
|
|
2614
|
-
[[ ${rtype[cur]} == thm ]] || return 0
|
|
2615
|
-
name=${rval[cur]}
|
|
2616
|
-
if __tt_pv_bg_state $name || { __tt_pv_bg_findable $name && __tt_pv_bg_find $name }; then
|
|
2617
|
-
__tt_pv_tune_open $name
|
|
2618
|
-
elif __tt_pv_bg_findable $name; then
|
|
2619
|
-
:
|
|
2620
|
-
elif (( bgcw )); then
|
|
2621
|
-
msg="No background image for $name" msgt=200
|
|
2622
|
-
fi
|
|
2623
|
-
;;
|
|
2624
|
-
altc)
|
|
2625
|
-
conf=1 cf=1 csnap=()
|
|
2626
|
-
for name in $cvars; do
|
|
2627
|
-
csnap+=("${(P)name}")
|
|
2628
|
-
done
|
|
2629
|
-
;;
|
|
2630
|
-
'?') help=1 ;;
|
|
2631
|
-
sleft) (( --scene )) ;;
|
|
2632
|
-
sright) (( ++scene )) ;;
|
|
2633
|
-
$'\x7f'|$'\x08')
|
|
2634
|
-
if [[ -n $flt ]]; then
|
|
2635
|
-
name=""
|
|
2636
|
-
[[ ${rtype[cur]} == thm ]] && name=${rval[cur]}
|
|
2637
|
-
flt=${flt%?}
|
|
2638
|
-
__tt_pv_rows
|
|
2639
|
-
__tt_pv_first "$name"
|
|
2640
|
-
fi
|
|
2641
|
-
;;
|
|
2642
|
-
[[:print:]])
|
|
2643
|
-
__tt_pv_lw
|
|
2644
|
-
(( ${(m)#flt} + ${(m)#key} > reply[1] - 12 )) && return 0
|
|
2645
|
-
name=""
|
|
2646
|
-
[[ ${rtype[cur]} == thm ]] && name=${rval[cur]}
|
|
2647
|
-
flt+=${(L)key}
|
|
2648
|
-
__tt_pv_rows
|
|
2649
|
-
__tt_pv_first "$name"
|
|
2650
|
-
;;
|
|
2651
|
-
esac
|
|
2652
|
-
return 0
|
|
2653
|
-
}
|
|
2654
|
-
|
|
2655
|
-
__tt_preview() {
|
|
2656
|
-
emulate -L zsh ${=${options[xtrace]:#off}:+-o xtrace}
|
|
2657
|
-
local mode=$1 pdir=${2:-$PWD}
|
|
2658
|
-
if [[ ! -t 0 || ! -t 1 ]]; then
|
|
2659
|
-
print -u2 "ttheme ${mode:-preview}: needs a terminal"
|
|
2660
|
-
return 1
|
|
2661
|
-
fi
|
|
2662
|
-
local orig=$TTHEME_SPEC applied=$TTHEME_SPEC painted=$TTHEME_SPEC flt="" sel="" cn="" cdot="" key="" REPLY="" cur=1 top=1 color=0 pw=80 ph=24 resized=1 expal="" exgrp="" exnext=0 gstep=0 gseed=0 tick=0
|
|
2663
|
-
local pick="" pk=1 pkdef=1 picked=0 canpick=0 bgcw=0 bgch=0 bgname="" bgshown="" bginc="" osd="" osdt=0
|
|
2664
|
-
local tune="" tpick="" tf=1 help=0 msg="" msgt=0 an="" bgrel=0 bgmx=0 bgmy=0 bganchor=0 bgcut="" bgnext=0 bgbytes=0 bgstrip="" pvscene="" pvscenes=""
|
|
2665
|
-
local -i scene=0
|
|
2666
|
-
local -a bgorder=()
|
|
2667
|
-
local -A bgfrom=() bgurl=() bgby=() bgsent=() bgcost=() bgdim=() bgsrc=() bgfill=() bgfocus=() bgsize=() bgpos=() bgop=() bgdef=() bgoff=() bgbase=() bgload=() bgshot=() bgshotkey=() bgedit=() bgtunef=() bgofff=() bgimages=()
|
|
2668
|
-
local -A bgpic=() bgpics=() bgact=() bgview=() bgswap=() bgthumb=() tsnaps=() pvseek=() bgcolors=()
|
|
2669
|
-
local conf=0 cf=1
|
|
2670
|
-
local -a plabel=(" This tab " " Default ") pkeys=() reach=() csnap=()
|
|
2671
|
-
local -a cvars=(TTHEME_TAB_PALETTE TTHEME_ANNOUNCE TTHEME_FX TTHEME_SORT TTHEME_BG_BLUR TTHEME_BG_COLORS) clabel=("New tabs" Announce "Search fx" Sort Blur Colors)
|
|
2672
|
-
local -a cchoice=("off seq" "1 0" "typewriter decode glitch" "abc series" "0 1 2 3 4" "tone original") cshow=("off seq" "on off" "typewriter decode glitch" "abc series" "off 1px 2px 3px 4px" "tone original")
|
|
2673
|
-
local -A cnote=(
|
|
2674
|
-
TTHEME_TAB_PALETTE:seq "New tabs rotate through palettes" TTHEME_TAB_PALETTE:off "New tabs keep the terminal theme"
|
|
2675
|
-
TTHEME_ANNOUNCE:1 "Shows the palette notice" TTHEME_ANNOUNCE:0 "Silences the palette notice"
|
|
2676
|
-
TTHEME_FX:typewriter "The search hint types itself" TTHEME_FX:decode "The search hint decodes" TTHEME_FX:glitch "The search hint glitches in"
|
|
2677
|
-
TTHEME_SORT:abc "Series and palettes by name" TTHEME_SORT:series "Series in the order added"
|
|
2678
|
-
TTHEME_BG_BLUR:0 "Pictures stay sharp" TTHEME_BG_BLUR:1 "Pictures soften a little behind the text"
|
|
2679
|
-
TTHEME_BG_BLUR:2 "Pictures soften behind the text" TTHEME_BG_BLUR:3 "Pictures blur behind the text"
|
|
2680
|
-
TTHEME_BG_BLUR:4 "Pictures blur well behind the text"
|
|
2681
|
-
TTHEME_BG_COLORS:tone "New pictures are tinted in one color of the palette"
|
|
2682
|
-
TTHEME_BG_COLORS:original "New pictures keep their own colors"
|
|
2683
|
-
)
|
|
2684
|
-
__tt_pv_conf_rows
|
|
2685
|
-
[[ $mode == pin ]] && __tt_pin_scopes "$pdir"
|
|
2686
|
-
[[ $mode == init ]] && pkdef=2
|
|
2687
|
-
__tt_pv_canpick
|
|
2688
|
-
__tt_pv_size
|
|
2689
|
-
local -a groups=() rtype=() rval=() rcnt=() reply=()
|
|
2690
|
-
local -A gthemes=() exp=() tstrip=()
|
|
2691
|
-
__tt_color && color=1
|
|
2692
|
-
__tt_pv_init
|
|
2693
|
-
__tt_pv_roll
|
|
2694
|
-
__tt_pv_rows
|
|
2695
|
-
[[ -n ${TTHEME_PALETTE[$cn]} ]] && __tt_pv_goto "$cn"
|
|
2696
|
-
local tty=""
|
|
2697
|
-
local -i TTHEME_RAW=0
|
|
2698
|
-
{
|
|
2699
|
-
tty=$(stty -g 2>/dev/null) && stty -echo -icanon min 1 time 0 2>/dev/null || tty=""
|
|
2700
|
-
TTHEME_RAW=$(( ${#tty} > 0 ))
|
|
2701
|
-
__tt_pv_bg_open
|
|
2702
|
-
printf '\e[?2026h\e[?1049h\e[?7l\e[?25l'
|
|
2703
|
-
while :; do
|
|
2704
|
-
printf '\e[?2026h'
|
|
2705
|
-
if (( tick )); then
|
|
2706
|
-
__tt_pv_draw hint
|
|
2707
|
-
else
|
|
2708
|
-
__tt_pv_focus
|
|
2709
|
-
[[ ${rtype[cur]} == thm ]] && an=${rval[cur]}
|
|
2710
|
-
__tt_pv_draw
|
|
2711
|
-
fi
|
|
2712
|
-
tick=0
|
|
2713
|
-
if ! __tt_pv_read; then
|
|
2714
|
-
[[ -t 0 ]] && continue
|
|
2715
|
-
break
|
|
2716
|
-
fi
|
|
2717
|
-
while :; do
|
|
2718
|
-
__tt_pv_handle || break 2
|
|
2719
|
-
__tt_pv_read drain || break
|
|
2720
|
-
done
|
|
2721
|
-
done
|
|
2722
|
-
} always {
|
|
2723
|
-
local spec=${sel:+${TTHEME_PALETTE[$sel]}}
|
|
2724
|
-
[[ -n $spec && $mode != pin ]] && (( ! ${#bgedit} && ! ${#bgswap} )) && __tt_pv_claim "$sel"
|
|
2725
|
-
printf '\e[?2026h'
|
|
2726
|
-
__tt_pv_bg_close
|
|
2727
|
-
if [[ -n $spec ]]; then
|
|
2728
|
-
[[ $spec == "$painted" ]] || __tt_apply "$spec"
|
|
2729
|
-
elif [[ $painted != "$orig" ]]; then
|
|
2730
|
-
if [[ -z $orig ]]; then
|
|
2731
|
-
__tt_osc_reset
|
|
2732
|
-
else
|
|
2733
|
-
__tt_apply "$orig"
|
|
2734
|
-
fi
|
|
2735
|
-
elif [[ $applied != "$orig" ]]; then
|
|
2736
|
-
__tt_pv_paint "${TTHEME_PAINTED:+$orig}"
|
|
2737
|
-
fi
|
|
2738
|
-
printf '\e[?7h\e[?1049l\e[?25h\e[?2026l'
|
|
2739
|
-
[[ -n $tty ]] && stty "$tty" 2>/dev/null
|
|
2740
|
-
TTHEME_RAW=0
|
|
2741
|
-
[[ -n $tune ]] && __tt_pv_untune
|
|
2742
|
-
(( conf )) && __tt_pv_unconf
|
|
2743
|
-
__tt_pv_bg_save
|
|
2744
|
-
if [[ -n $spec ]]; then
|
|
2745
|
-
TTHEME_SPEC=$spec
|
|
2746
|
-
if [[ $mode == pin ]]; then
|
|
2747
|
-
__tt_pin_save "$sel" "${pkeys[picked]}" "$orig"
|
|
2748
|
-
[[ $TTHEME_SPEC == "$orig" ]] || __tt_announce
|
|
2749
|
-
__tt_sync
|
|
2750
|
-
elif (( picked == 2 )); then
|
|
2751
|
-
__tt_announce
|
|
2752
|
-
__tt_keep "$sel" force
|
|
2753
|
-
else
|
|
2754
|
-
__tt_announce
|
|
2755
|
-
__tt_shown "$sel" force && __tt_reload
|
|
2756
|
-
fi
|
|
2757
|
-
else
|
|
2758
|
-
(( ${#bgedit} + ${#bgswap} )) && [[ -n ${TTHEME_PALETTE[$cn]} ]] && { __tt_shown "$cn" && __tt_reload }
|
|
2759
|
-
fi
|
|
2760
|
-
}
|
|
2761
|
-
return 0
|
|
2762
|
-
}
|
|
1431
|
+
source $TTHEME_HOME/preview.zsh
|
|
2763
1432
|
|
|
2764
1433
|
ttheme() {
|
|
2765
1434
|
emulate -L zsh ${=${options[xtrace]:#off}:+-o xtrace}
|
|
@@ -2785,7 +1454,11 @@ ttheme() {
|
|
|
2785
1454
|
fi
|
|
2786
1455
|
if (( ! $# )); then
|
|
2787
1456
|
(( ${#TTHEME_PALETTE} )) || { __tt_empty; return }
|
|
2788
|
-
|
|
1457
|
+
if [[ -t 0 && -t 1 ]]; then
|
|
1458
|
+
__tt_preview hub
|
|
1459
|
+
else
|
|
1460
|
+
__tt_menu
|
|
1461
|
+
fi
|
|
2789
1462
|
return 0
|
|
2790
1463
|
fi
|
|
2791
1464
|
|
|
@@ -2810,12 +1483,18 @@ ttheme() {
|
|
|
2810
1483
|
__tt_keep "$REPLY" ;;
|
|
2811
1484
|
preview) __tt_preview ;;
|
|
2812
1485
|
pin)
|
|
2813
|
-
if [[
|
|
1486
|
+
if [[ $2 == ssh:* ]]; then
|
|
1487
|
+
REPLY=ssh:${(L)2#ssh:}
|
|
1488
|
+
[[ $REPLY != ssh: ]] || { __tt_misuse pin "missing the host after ssh:"; return }
|
|
1489
|
+
[[ $REPLY != *@* ]] || { print -u2 -r -- "ttheme pin: an ssh pin names the host alone — ssh:${REPLY##*@}"; return 1 }
|
|
1490
|
+
__tt_ssh_ok $REPLY || { print -u2 -r -- "ttheme pin: not a host: ${2#ssh:} — letters, digits, . - : and the wildcards * ?"; return 1 }
|
|
1491
|
+
elif [[ -n $2 ]]; then
|
|
2814
1492
|
REPLY=$2
|
|
2815
1493
|
[[ $REPLY == \~ || $REPLY == \~/* ]] && REPLY=$HOME${REPLY#\~}
|
|
2816
1494
|
[[ -d $REPLY ]] || { print -u2 -r -- "ttheme pin: no such directory: $2"; return 1 }
|
|
1495
|
+
REPLY=${REPLY:a}
|
|
2817
1496
|
fi
|
|
2818
|
-
__tt_preview pin ${REPLY:+$
|
|
1497
|
+
__tt_preview pin ${REPLY:+$REPLY} ;;
|
|
2819
1498
|
unpin) __tt_unpin "${@:2}" ;;
|
|
2820
1499
|
pins) __tt_pins_map ;;
|
|
2821
1500
|
esac
|
|
@@ -2840,7 +1519,17 @@ if (( ${+functions[compdef]} )); then
|
|
|
2840
1519
|
elif [[ $words[2] == market && $words[3] == (add|init) && $CURRENT == 4 ]]; then
|
|
2841
1520
|
_files -/
|
|
2842
1521
|
elif [[ $words[2] == (pin|unpin) && $CURRENT == 3 ]]; then
|
|
2843
|
-
|
|
1522
|
+
reply=(${${(M)${(k)TTHEME_PINS}:#ssh:*}#ssh:})
|
|
1523
|
+
if compset -P 'ssh:'; then
|
|
1524
|
+
if [[ $words[2] == unpin ]]; then
|
|
1525
|
+
compadd -- $reply
|
|
1526
|
+
elif (( $+functions[_ssh_hosts] )); then
|
|
1527
|
+
_ssh_hosts
|
|
1528
|
+
fi
|
|
1529
|
+
else
|
|
1530
|
+
_files -/
|
|
1531
|
+
[[ $words[2] == pin || ${#reply} -gt 0 ]] && compadd -S '' -- ssh:
|
|
1532
|
+
fi
|
|
2844
1533
|
elif [[ $words[2] == add && $words[CURRENT-1] == --market ]]; then
|
|
2845
1534
|
_files -/
|
|
2846
1535
|
elif [[ $words[2] == add ]]; then
|
|
@@ -2892,7 +1581,7 @@ fi
|
|
|
2892
1581
|
() {
|
|
2893
1582
|
emulate -L zsh ${=${options[xtrace]:#off}:+-o xtrace}
|
|
2894
1583
|
local f
|
|
2895
|
-
for f in $TTHEME_HOME/ttheme.zsh $TTHEME_HOME/palettes.zsh $TTHEME_HOME/adapters/_osc.zsh $TTHEME_HOME/adapters/_wired.zsh $TTHEME_HOME/adapters/_bg.zsh $TTHEME_HOME/adapters/$TTHEME_ADAPTER.zsh; do
|
|
1584
|
+
for f in $TTHEME_HOME/ttheme.zsh $TTHEME_HOME/preview.zsh $TTHEME_HOME/palettes.zsh $TTHEME_HOME/adapters/_osc.zsh $TTHEME_HOME/adapters/_wired.zsh $TTHEME_HOME/adapters/_bg.zsh $TTHEME_HOME/adapters/$TTHEME_ADAPTER.zsh; do
|
|
2896
1585
|
[[ -r $f && ! $f.zwc -nt $f ]] || continue
|
|
2897
1586
|
zcompile -UR -- $f.$$.zwc $f 2>/dev/null && command mv -f -- $f.$$.zwc $f.zwc 2>/dev/null
|
|
2898
1587
|
[[ ! -e $f.$$.zwc ]] || command rm -f -- $f.$$.zwc
|