From cb957d3b74393a3cd17ce0b3d50d38394f2333d0 Mon Sep 17 00:00:00 2001 From: Ambrose Chua Date: Fri, 6 Nov 2020 00:48:44 +0800 Subject: [PATCH] Fix terminal rendering and improve performance by default --- .dockerfile | 6 +- .local/bin/runenv | 4 +- .terminfo/78 | 1 + .terminfo/Makefile | 5 + .terminfo/x/xterm-iterm | Bin 0 -> 3340 bytes .terminfo/x/xterm-kitty | Bin 2197 -> 3217 bytes .terminfo/xterm-iterm.info | 3 + .terminfo/xterm-kitty.info | 239 +++++++++++++++++++++++++++++++++++++ .zshrc | 129 ++++++++++++++------ 9 files changed, 344 insertions(+), 43 deletions(-) create mode 120000 .terminfo/78 create mode 100644 .terminfo/Makefile create mode 100644 .terminfo/x/xterm-iterm create mode 100644 .terminfo/xterm-iterm.info create mode 100644 .terminfo/xterm-kitty.info diff --git a/.dockerfile b/.dockerfile index 699f097..8613637 100644 --- a/.dockerfile +++ b/.dockerfile @@ -33,10 +33,12 @@ ENV \ # install common RUN apk add --no-cache --update \ - sudo \ + sudo tzdataa \ unzip zip tar gzip xz upx \ \ - zsh \ + zsh zsh-vcs ncurses \ + zsh-autosuggestions \ + zsh-syntax-highlighting \ exa jq \ neovim \ \ diff --git a/.local/bin/runenv b/.local/bin/runenv index 8d8cb16..ceb78ae 100755 --- a/.local/bin/runenv +++ b/.local/bin/runenv @@ -62,8 +62,8 @@ _canonicalize_file_path() { } -CONTAINER_IMAGE="registry.makerforce.io/ambrose/env" -CONTAINER_IMAGE_PWN="registry.makerforce.io/ambrose/pwn" +CONTAINER_IMAGE="serverwentdown/env" +CONTAINER_IMAGE_PWN="serverwentdown/pwn" CONTAINER_HOME="/home/ambrose" OPTIND=1 diff --git a/.terminfo/78 b/.terminfo/78 new file mode 120000 index 0000000..c1b0730 --- /dev/null +++ b/.terminfo/78 @@ -0,0 +1 @@ +x \ No newline at end of file diff --git a/.terminfo/Makefile b/.terminfo/Makefile new file mode 100644 index 0000000..999341b --- /dev/null +++ b/.terminfo/Makefile @@ -0,0 +1,5 @@ + +all: x/xterm-kitty x/xterm-iterm + +x/%: %.info + tic -xo ~/.terminfo $? diff --git a/.terminfo/x/xterm-iterm b/.terminfo/x/xterm-iterm new file mode 100644 index 0000000000000000000000000000000000000000..1a15441e3a9e60ce4640e1eeb2528021814c7d58 GIT binary patch literal 3340 zcmb_eYlu}<6khx8Gd>~{G0VJ_Q+m=YoqOK*cC4H4nR4#j)JgO9@G;{!&a>;}YaWFb zR8~+1M&*wP!jQ5kE0KO!L6AhC5CuK_QTRjX1tEcP`_^7(?l7p)k1n&nZ|(K%we~*y ztg~lNQ*-Ginn(xK`!zfITFYH?+ZhLpUAw)#Z*#31gtZ%cI(y1nYd7_jYui^rcZrnw zV}fCj4gRb4U>9i|O{L03exxdo5?M3`Bd($Av5Gk~4!f;MeF4Iz;c#QTmuZL;p)UN#D>9W<;g(Tf!+-sfigE)G76y`Z96&N}V;mKY)KFe$pdRWAy|*Sx?h9=-IkXM>?;U z=_b8eKcw4qkKU#S_2YW4-lt#Duj@nlJ$+1ns!!;X`dfWkpV7bSbGo9(S`)3St?AY* zYn~NY^Q}eJ-PTI0WNoxMtgTkRwa0qedfs};8kzOKSO=_w)?3yQ>nP$rxkPMj&4rol zi})@a_3xfrk{oq4-TyT4EH}&bhA7>HoK3ti*WunhXe-cG!s7(+l$^+5)?kj&%>bL~*~0TXLI^?NO)$?EZi9U+~yg19mZ%JHaL&*+&OIU%8Y0Eu)zy39-iA6 ztA-7pyB*DE2ml+w7i>os&g3n(P&(rG+DLZZ?#gw+9>FMo# z_~CMS>(;)$M;_U>ZTt2eJ9h5ewX45>U|?`?i1&9bT0Y{<%13yuO-s>uqr8~k18+Ax zOy<>8o#y>WFQ__st6YBnCD%`adGisB3SdGJFi9OGVNt@_gmc1fCSi;>8IuLMelji& zBzGXW1IZmExsxi3g|i9ggpu3$T_<5LVPDvZL&+UV?oe`vNp4e@P817g6V3@ExA7yl zu$Qne?8Khr_9V9_xxFN}**)YI&L*4_MsC?%BuVx}*iXjAzU1~Lw{LRuk%L0SiPXaV zup5xau5#6K^K!ADLm@rj$EMEXa@&U6xDNZ>AQ-gg*!}qKGlO=W?ap)8)NxH-O7SnQ zr0?fxFa@fEk?V^~-Ld<#gZ6y8&odL-t;Xeq#+Mt`=h`iHtA|%8%QHnkI^4fVxRV(b z?~jg0rFT&Z7o^*08y!q3b1Na7;8)NTx|U|(?&DCF^0bs1X%&@d1GQ5xZKol6f}Wv$ z^fJ9h2k9_}ljtf+Q!UwaGwxg-X1<*kQau$g_gY$qTURHQapxMMJ@h0!OE1uVIzX?} zn^?gSI!4FobNZ4_VGTdh&vcf4r*rf-Rxw^pRFkoe>(q_7P2H+8SW8y%$8G8cr#F{T zQvFGxda<0%!^f>Br>-v)2!%qCkS9lkFBAxcLXnWi$A=U9LV-{y6fwC;Nz0PlUeC!~LP#_cvMNFY&2_;J?SwhJYN|r!|1TrL$A%P4DsuS^1hKYm%p-?Ci;(tRJ z;tBaeflw$EEuaN!Xjz7qWN2lEIuuMJmd1EtDpcO0igjQ0-+YxunL3h5^k*=*>mQ%|)oqMTqNN>e%3*LEq@o EKizhFV*mgE literal 0 HcmV?d00001 diff --git a/.terminfo/x/xterm-kitty b/.terminfo/x/xterm-kitty index f0f5b92ee475a1dbb1382dd5f7a454bd9c4c6afa..378be2c5c12090249a10e128cca355d6a5505b6d 100644 GIT binary patch delta 1369 zcmZXSUuYav6vn?Z=UOolHI&x2@xNWAmWY|znQb$Orb$Crn(ek`(`fty+ay|=Xh<3? zE$!+4^?c5S_!P*owEkSf%$#+&hN}U zXO=zD^2*xgb+QUK;d<pOy-q`&%u-CPX> zk7WBt$v3jqOfVZvx5(B5ZqQf-Prnf=d$&O%TGQDz6id~cHfid8qa@T z_VxOO;J08gSPE2|v_;qI?YcqRb+dMAQFrQqKB*%*rc-)YkLt^MLf_O`eOKSpkMvWW z*KhUgMqSVg`nz6Hao4yT+>P!Qmve0{cK5rjuGdxE<8IiEx=DA?O)mt=ikf@T9e4gq zR$p{}=>J}qd{yVQ^}iZ!$)#u7^h;Tp8*k6;X&uashq*)ThjVSYq3W4G+>F+s05)L~ zmje;u`f6MU|GVFbd(ckv0D91iJ`AFYy%@)HID(@%hH1Qxx9|>5;eC9J&+!$$!&&@< z^Y|5uSb|EEw8$E{Rqm2D$xA9*q$p+CEljLL)@leeV?4zPkPS7Hrr#vQmD8*v|E zbg*$Z9zq%Yc#N%|#xvNDgLt0JU&3*`iq|lMS)9ZiKHvbKVIJS$2b{wKN4SW~xPm&a zl4cIEO4f0V^|C?km576MN$X&gMn}*(Sc}rU&nS&85{rV5_B7m*MP!k;h%FL}f<@Gm zRpu>Xi^QT}5pA;)i#Ur~n%K7BBebDHn<=!J!Ze#HOdB&r-FA#cY>`+Ld?a>CVy7f_ zN@AxZc1mm|aazm1KDL_JYU1TiUDnAWwn!`r7GY;r5?SOeVvEG0;3M2TM&>tlgdP5` zI7Eh?wecu7r1DG7% PKk-zx+Q<=1`iK7jm(-Bv delta 341 zcmbOzIaQEbicyq7hJl|UlQDfGw=<)||Nkc$|AWB=#>ZJAw|y_tiU zBbgJKGnosSE14UaJDDdk&tzV}yqtL*^H%1)%ty7E&oWI^ T+zS@<&AQB|7&mjX&SM4um}{j) diff --git a/.terminfo/xterm-iterm.info b/.terminfo/xterm-iterm.info new file mode 100644 index 0000000..8acb390 --- /dev/null +++ b/.terminfo/xterm-iterm.info @@ -0,0 +1,3 @@ +xterm-iterm|xterm with 256 colors for iTerm2, + sitm=\E[3m, ritm=\E[23m, + use=xterm-256color, diff --git a/.terminfo/xterm-kitty.info b/.terminfo/xterm-kitty.info new file mode 100644 index 0000000..c5ca815 --- /dev/null +++ b/.terminfo/xterm-kitty.info @@ -0,0 +1,239 @@ +xterm-kitty|KovIdTTY, + Su, + Tc, + am, + ccc, + fullkbd, + hs, + km, + mc5i, + mir, + msgr, + npc, + xenl, + colors#256, + cols#80, + it#8, + lines#24, + pairs#32767, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, + bold=\E[1m, + cbt=\E[Z, + civis=\E[?25l, + clear=\E[H\E[2J, + cnorm=\E[?12l\E[?25h, + cr=^M, + csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, + cub1=^H, + cud=\E[%p1%dB, + cud1=^J, + cuf=\E[%p1%dC, + cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, + cuu1=\E[A, + cvvis=\E[?12;25h, + dch=\E[%p1%dP, + dch1=\E[P, + dim=\E[2m, + dl=\E[%p1%dM, + dl1=\E[M, + dsl=\E]2;\007, + ech=\E[%p1%dX, + ed=\E[J, + el=\E[K, + el1=\E[1K, + flash=\E[?5h$<100/>\E[?5l, + fsl=^G, + home=\E[H, + hpa=\E[%i%p1%dG, + ht=^I, + hts=\EH, + ich=\E[%p1%d@, + il=\E[%p1%dL, + il1=\E[L, + ind=^J, + indn=\E[%p1%dS, + initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, + kDC=\E[3;2~, + kDC3=\E[3;3~, + kDC4=\E[3;4~, + kDC5=\E[3;5~, + kDC6=\E[3;6~, + kDC7=\E[3;7~, + kDN=\E[1;2B, + kDN3=\E[1;3B, + kDN4=\E[1;4B, + kDN5=\E[1;5B, + kDN6=\E[1;6B, + kDN7=\E[1;7B, + kEND=\E[1;2F, + kEND3=\E[1;3F, + kEND4=\E[1;4F, + kEND5=\E[1;5F, + kEND6=\E[1;6F, + kEND7=\E[1;7F, + kHOM=\E[1;2H, + kHOM3=\E[1;3H, + kHOM4=\E[1;4H, + kHOM5=\E[1;5H, + kHOM6=\E[1;6H, + kHOM7=\E[1;7H, + kIC=\E[2;2~, + kIC3=\E[2;3~, + kIC4=\E[2;4~, + kIC5=\E[2;5~, + kIC6=\E[2;6~, + kIC7=\E[2;7~, + kLFT=\E[1;2D, + kLFT3=\E[1;3D, + kLFT4=\E[1;4D, + kLFT5=\E[1;5D, + kLFT6=\E[1;6D, + kLFT7=\E[1;7D, + kNXT=\E[6;2~, + kNXT3=\E[6;3~, + kNXT4=\E[6;4~, + kNXT5=\E[6;5~, + kNXT6=\E[6;6~, + kNXT7=\E[6;7~, + kPRV=\E[5;2~, + kPRV3=\E[5;3~, + kPRV4=\E[5;4~, + kPRV5=\E[5;5~, + kPRV6=\E[5;6~, + kPRV7=\E[5;7~, + kRIT=\E[1;2C, + kRIT3=\E[1;3C, + kRIT4=\E[1;4C, + kRIT5=\E[1;5C, + kRIT6=\E[1;6C, + kRIT7=\E[1;7C, + kUP=\E[1;2A, + kUP3=\E[1;3A, + kUP4=\E[1;4A, + kUP5=\E[1;5A, + kUP6=\E[1;6A, + kUP7=\E[1;7A, + ka1=, + ka3=, + kbs=\177, + kc1=, + kc3=, + kcbt=\E[Z, + kcub1=\EOD, + kcud1=\EOB, + kcuf1=\EOC, + kcuu1=\EOA, + kdch1=\E[3~, + kend=\EOF, + kf1=\EOP, + kf10=\E[21~, + kf11=\E[23~, + kf12=\E[24~, + kf13=\E[1;2P, + kf14=\E[1;2Q, + kf15=\E[1;2R, + kf16=\E[1;2S, + kf17=\E[15;2~, + kf18=\E[17;2~, + kf19=\E[18;2~, + kf2=\EOQ, + kf20=\E[19;2~, + kf21=\E[20;2~, + kf22=\E[21;2~, + kf23=\E[23;2~, + kf24=\E[24;2~, + kf25=\E[1;5P, + kf26=\E[1;5Q, + kf27=\E[1;5R, + kf28=\E[1;5S, + kf29=\E[15;5~, + kf3=\EOR, + kf30=\E[17;5~, + kf31=\E[18;5~, + kf32=\E[19;5~, + kf33=\E[20;5~, + kf34=\E[21;5~, + kf35=\E[23;5~, + kf36=\E[24;5~, + kf37=\E[1;6P, + kf38=\E[1;6Q, + kf39=\E[1;6R, + kf4=\EOS, + kf40=\E[1;6S, + kf41=\E[15;6~, + kf42=\E[17;6~, + kf43=\E[18;6~, + kf44=\E[19;6~, + kf45=\E[20;6~, + kf46=\E[21;6~, + kf47=\E[23;6~, + kf48=\E[24;6~, + kf49=\E[1;3P, + kf5=\E[15~, + kf50=\E[1;3Q, + kf51=\E[1;3R, + kf52=\E[1;3S, + kf53=\E[15;3~, + kf54=\E[17;3~, + kf55=\E[18;3~, + kf56=\E[19;3~, + kf57=\E[20;3~, + kf58=\E[21;3~, + kf59=\E[23;3~, + kf6=\E[17~, + kf60=\E[24;3~, + kf61=\E[1;4P, + kf62=\E[1;4Q, + kf63=\E[1;4R, + kf7=\E[18~, + kf8=\E[19~, + kf9=\E[20~, + khlp=, + khome=\EOH, + kich1=\E[2~, + kind=\E[1;2B, + kmous=\E[M, + knp=\E[6~, + kpp=\E[5~, + kri=\E[1;2A, + kund=, + oc=\E]104\007, + op=\E[39;49m, + rc=\E8, + rep=%p1%c\E[%p2%{1}%-%db, + rev=\E[7m, + ri=\EM, + rin=\E[%p1%dT, + ritm=\E[23m, + rmacs=\E(B, + rmam=\E[?7l, + rmcup=\E[?1049l, + rmir=\E[4l, + rmkx=\E[?1l, + rmso=\E[27m, + rmul=\E[24m, + rmxx=\E[29m, + rs1=\E]\E\\\Ec, + sc=\E7, + setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m, + setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m, + setrgbb=\E[48:2:%p1%d:%p2%d:%p3%dm, + setrgbf=\E[38:2:%p1%d:%p2%d:%p3%dm, + sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, + sgr0=\E(B\E[m, + sitm=\E[3m, + smacs=\E(0, + smam=\E[?7h, + smcup=\E[?1049h, + smir=\E[4h, + smkx=\E[?1h, + smso=\E[7m, + smul=\E[4m, + smxx=\E[9m, + tbc=\E[3g, + tsl=\E]2;, + vpa=\E[%i%p1%dd, diff --git a/.zshrc b/.zshrc index cb7a00a..3f14d4d 100644 --- a/.zshrc +++ b/.zshrc @@ -1,7 +1,8 @@ + # basic settings HISTSIZE=10000 -SAVEHIST=10000 +SAVEHIST=50000 HISTFILE=~/.zsh_history setopt append_history setopt extended_history @@ -42,15 +43,20 @@ fi # completion -autoload -U compinit; compinit -autoload -U +X bashcompinit && bashcompinit -zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} +setup_completion() { + autoload -U compinit; compinit + autoload -U +X bashcompinit && bashcompinit + zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} -if [[ -f "$(which mc 2>/dev/null)" ]]; then - complete -o nospace -C mc mc -fi -if [[ -f "$(which kubectl 2>/dev/null)" ]]; then - source <(kubectl completion zsh) + if [[ -f "$(which mc 2>/dev/null)" ]]; then + complete -o nospace -C mc mc + fi + if [[ -f "$(which kubectl 2>/dev/null)" ]]; then + source <(kubectl completion zsh) + fi +} +if [[ $SLOW == true ]]; then + setup_completion fi # platform specific @@ -63,16 +69,23 @@ esac if [[ $PLATFORM == macos ]]; then export PATH="$HOME/Library/Python/3.8/bin:$PATH" fi + +setup_term_integration() {} if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then - if [[ -f "$HOME/.iterm2_shell_integration.zsh" ]]; then - source "$HOME/.iterm2_shell_integration.zsh" - fi + setup_term_integration() { + if [[ -f "$HOME/.iterm2_shell_integration.zsh" ]]; then + source "$HOME/.iterm2_shell_integration.zsh" + fi + } alias icat="imgcat" fi if [[ "$TERM" == "xterm-kitty" ]]; then alias icat="kitty +kitten icat" alias ssh="kitty +kitten ssh" fi +if [[ $FAST != true ]]; then + setup_term_integration +fi # directory listings @@ -86,14 +99,24 @@ alias ll="ls -l" # prompt -# prompt: vcs -autoload -Uz vcs_info -precmd_vcs_info() { vcs_info } setopt prompt_subst -zstyle ':vcs_info:git:*' formats $' %b %u%c' -zstyle ':vcs_info:git:*' actionformats $'%(u..%B)%(c..%B) %u%c %b (%a) ' -zstyle ':vcs_info:*' enable git -zstyle ':vcs_info:*' check-for-changes true +# prompt: vcs +setup_prompt_vcs() { + autoload -Uz vcs_info + zstyle ':vcs_info:git:*' formats $' %b %u%c' + zstyle ':vcs_info:git:*' actionformats $'%(u..%B)%(c..%B) %b (%a) %u%c' + zstyle ':vcs_info:*' enable git + zstyle ':vcs_info:*' check-for-changes true + prompt_vcs_enabled=false + precmd_vcs_info() { + if [[ $prompt_vcs_enabled == true ]]; then + vcs_info + elif [[ -d ".git" ]]; then + prompt_vcs_enabled=true + vcs_info + fi + } +} format_vcs_info() { text="$1" dirty=false @@ -107,6 +130,9 @@ format_vcs_info() { echo "$text" fi } +if [[ $FAST != "true" ]]; then + setup_prompt_vcs +fi # prompt: return code format_return_code() { return_code_=$1 @@ -127,13 +153,16 @@ format_return_code_prev() { text=" $(format_return_code $1) " text_length=${#text} width=$(tput cols) - start=$(( $width - $text_length )) + start=$(( $width - $text_length - 1 )) - echo -n $'\e[F\e[' - echo -n $start - echo -n $'G\e[37m\e[41m' + tput sc + tput cuu1 + tput hpa $start + tput setab $PROMPT_COLOR_RED + tput setaf $PROMPT_COLOR_BASE3 echo -n "$text" - echo -n $'\e[0m\e[E' + tput sgr0 + tput rc } precmd_return_code() { format_return_code_prev $? @@ -161,6 +190,14 @@ setup_prompt_colors() { PROMPT_COLOR_BASE1=14 PROMPT_COLOR_BASE2=7 PROMPT_COLOR_BASE3=15 + PROMPT_COLOR_YELLOW=3 + PROMPT_COLOR_ORANGE=9 + PROMPT_COLOR_RED=1 + PROMPT_COLOR_MAGENTA=5 + PROMPT_COLOR_VIOLET=13 + PROMPT_COLOR_BLUE=4 + PROMPT_COLOR_CYAN=6 + PROMPT_COLOR_GREEN=2 if [[ "$LIGHT" == "true" ]]; then PROMPT_COLOR_TEMP03=$PROMPT_COLOR_TEMP03 PROMPT_COLOR_TEMP02=$PROMPT_COLOR_TEMP02 @@ -182,13 +219,15 @@ setup_prompt() { if [[ ! -z "$SSH_CLIENT" ]]; then PROMPT_USER_MACHINE=$'@%m' fi - PROMPT_USER=$'%F{15}%{\e[3m%}%(!.%K{9}.%K{4}) %n'"$PROMPT_USER_MACHINE"$' %k%{\e[0m%}%f' - PROMPT_HISTORY=$'%F{10}%{\e[3m%} %h %{\e[0m%}%f' - PROMPT_ERROR=$'%F{15}%{\e[3m%}%(?.%K{2}.%K{1} $(format_return_code $?) )%k%{\e[0m%}%f' + PROMPT_FMT_ITALIC=$(tput sitm) + PROMPT_FMT_RESET=$(tput sgr 0) + + PROMPT_USER=$'%{'"$PROMPT_FMT_ITALIC"$'%}%F{'"$PROMPT_COLOR_BASE3"$'}%(!.%K{'"$PROMPT_COLOR_ORANGE"$'}.%K{'"$PROMPT_COLOR_BLUE"$'}) %n'"$PROMPT_USER_MACHINE"$' %k%f%{'"$PROMPT_FMT_RESET"$'%}' + PROMPT_HISTORY=$'%F{'"$PROMPT_COLOR_BASE01"$'}%{'"$PROMPT_FMT_ITALIC"$'%} %h %{'"$PROMPT_FMT_RESET"$'%}%f' PROMPT_ERROR_PREV=$'$(format_return_code_prev $?)' PROMPT_VCS=$'%K{'$PROMPT_COLOR_BASE03$'}$(format_vcs_info $vcs_info_msg_0_)%k' PROMPT_DIRECTORY=$'%K{'$PROMPT_COLOR_BASE02$'} %2~ %k' - PROMPT_VI=$'%F{15}%{\e[3m%}$zle_vi_mode_%{\e[0m%}%f' + PROMPT_VI=$'%F{'"$PROMPT_COLOR_BASE3"$'}%{'"$PROMPT_FMT_ITALIC"$'%}$zle_vi_mode_%{'"$PROMPT_FMT_RESET"$'%}%f' RPROMPT="$PROMPT_HISTORY$PROMPT_USER" PROMPT="$PROMPT_VI$PROMPT_VCS$PROMPT_DIRECTORY " } @@ -200,18 +239,30 @@ export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=10' export ZSH_AUTOSUGGEST_USE_ASYNC=true bindkey '^e' autosuggest-execute -zsh_plugins+=( autosuggestions syntax-highlighting ) -for zsh_plugin in $zsh_plugins; do - zsh_plugin_path="zsh-$zsh_plugin/zsh-$zsh_plugin.zsh" - if [[ -f "/usr/local/share/$zsh_plugin_path" ]]; then - zsh_plugin_path="/usr/local/share/$zsh_plugin_path" - elif [[ -f "/usr/share/$zsh_plugin_path" ]]; then - zsh_plugin_path="/usr/share/$zsh_plugin_path" +setup_assistance() { + zsh_plugins+=( autosuggestions syntax-highlighting ) + for zsh_plugin in $zsh_plugins; do + zsh_plugin_path="zsh-$zsh_plugin/zsh-$zsh_plugin.zsh" + if [[ -f "/usr/local/share/$zsh_plugin_path" ]]; then + zsh_plugin_path="/usr/local/share/$zsh_plugin_path" + elif [[ -f "/usr/share/zsh/plugins/$zsh_plugin_path" ]]; then + zsh_plugin_path="/usr/share/zsh/plugins/$zsh_plugin_path" + else + continue + fi + source "$zsh_plugin_path" + done +} +if [[ $FAST != true ]]; then + setup_assistance +fi +setup_nope() { + if [[ -f "$(which thefuck 2>/dev/null)" ]]; then + eval $(thefuck --alias nope) fi - source "$zsh_plugin_path" -done -if [[ -f "$(which thefuck 2>/dev/null)" ]]; then - eval $(thefuck --alias nope) +} +if [[ $SLOW == true ]]; then + setup_nope fi # helper scripts