]> git.sev.monster Git - dotfiles.git/blame - base/.zsh/functions/Prompts/prompt_arrows_setup
fix term error msg in .zshenv
[dotfiles.git] / base / .zsh / functions / Prompts / prompt_arrows_setup
CommitLineData
4f471013 1prompt_arrows_help() {
fab483dd 2 cat << EOF
4f471013 3prompt arrows <right|2line> <normal> <prompt> <ssh> <urgent> <comment> <dir> <unwritable>
fab483dd 4
5The first parameter determines whether or not to use right-aligned status
6text, or to put it above the command line.
7
325a74cd 8All other parameters are Zsh PROMPT_SUBST color values wrapped in '%F{}'.
9
fab483dd 10If 'prompt' or 'ssh' are 'random', their respective value will be
11procedurally generated using the machine hostname as a seed; if the
12machine is connected to SSH, the 'prompt' value will be replaced with
13the 'ssh' value.
14
fab483dd 15
16Defaults are white, green, random, red, blue, yellow, and darkyellow
17respectively.
18
19EOF
20}
21
4f471013 22local prompt_arrows_vimode=
fab483dd 23
4f471013 24function prompt_arrows_setup() {
79d4a356 25 prompt_opts=( cr sp percent subst )
26
27
833b2af3 28 # XXX: no checks for color terminal or if escapes work, except for echotc
79d4a356 29 local m n p s r c d u
fab483dd 30 #TODO remove n?
79d4a356 31 m=${1:-2line} # Mode
32 n=${2:-white} # Normal
33 p=${3:-green} # Prompt
34 s=${4:-random} # Ssh prompt
35 r=${5:-red} # uRgent
36 c=${6:-blue} # Comment
37 d=${7:-yellow} # Dir
38 u=${8:-darkyellow} # Unwritable
fab483dd 39
40 # [AC]CURSED COMMAND
41 # concatenate the numerical values of each letter of the hostname,
42 # moduloing by the number of possible colors.
833b2af3 43 x=$(echotc Co)
44 [[ -z $x ]] && x=8
79d4a356 45 local generated=$(uname -n | od -An -td1 | awk -F' ' \
46 "{for (i=1; i<=NF; i++) {sum+=1; sum*=\$i; sum%=$(echotc Co)} print sum}")
47 [[ $p = random ]] && p=$generated
48 [[ $s = random ]] && s=$generated
fab483dd 49
50 # use ssh color if connected
79d4a356 51 [[ -v SSH_CLIENT ]] && p=$s
fab483dd 52
53 local clock="%F{$n}%T%f" dirvcs="%F{$d}"'${vcs_info_msg_0_:-%~}'"%f"
973a2767 54 # XXX: linux only
fab483dd 55 local battery=/sys/class/power_supply/BAT0/capacity
79d4a356 56 [[ -e "$battery" ]] && clock+=' $(cat $battery)%%'
4f471013 57 local vicol='%F{${${prompt_arrows_vimode:+'"$r"'}:-'"$c"'}}'
973a2767 58 local hist="%F{$n}%h"
fab483dd 59 case "$m" {
60 2line)
973a2767 61 PROMPT="%f $hist $clock $dirvcs"$'\n'"%F{$c}>>> "
fab483dd 62 unset RPROMPT
63 ;;
64 right)
65 RPROMPT="$dirvcs $clock"
973a2767 66 PROMPT="%F{$c}>>> $hist"
fab483dd 67 ;;
68 *)
69 echo "Unknown prompt mode $m"
70 return
71 ;;
72 }
73 PROMPT="$PROMPT%(1j,%F{$c}%j,)$vicol%#%F{$p}%n%F{$n}@%F{$p}%2m%(?..%F{$n}/%F{$r}\$?)%F{$n}: "
79d4a356 74 POSTEDIT="$(print -P "%F{$n}%f")"
8eb81f95 75 autoload -Uz vcs_info
fab483dd 76 zstyle ':vcs_info:git*' formats "%c%u%%F{$p}%r/%b%%F{$n}/%%F{$d}%S%%f"
77 zstyle ':vcs_info:git*' actionformats "%%F{$r}(%a)%f %c%u%%F{$p}%r/%b%f/%%F{$d}%S%f"
78 zstyle ':vcs_info:git*' stagedstr "%F{$c}+"
79 zstyle ':vcs_info:git*' unstagedstr "%F{$r}*"
80
d569f3f7 81 # add-zsh-hook should have already been autoloaded by promptinit
4f471013 82 add-zsh-hook precmd prompt_arrows_precmd
83 add-zsh-hook preexec prompt_arrows_preexec
d569f3f7 84 autoload -Uz add-zle-hook-widget
85 add-zle-hook-widget line-init prompt_arrows_keymap_select
86 add-zle-hook-widget keymap-select prompt_arrows_keymap_select
fab483dd 87}
88
89# change color based on zle vi mode
d569f3f7 90function prompt_arrows_keymap_select {
4f471013 91 prompt_arrows_vimode="${KEYMAP:/(main|viins)/}"
fab483dd 92 zle reset-prompt
93}
94
4f471013 95function prompt_arrows_precmd {
fab483dd 96 vcs_info
97}
98
4f471013 99function prompt_arrows_preexec {
116467fd 100 print -Pn "%F{red}<<<%f "
101}
102
79d4a356 103function prompt_arrows_preview {
104 if (( ! $#* )); then
105 prompt_preview_theme arrows 2line
106 print '\n'
107 prompt_preview_theme arrows right
108 print
109 else
110 prompt_preview_theme arrows "$@"
111 print
112 fi
113}
114
4f471013 115prompt_arrows_setup "$@"
8eb81f95 116# vim: set et fenc=utf-8 ft=zsh sts=4 sw=4 ts=8 tw=0 :
This page took 0.161486 seconds and 4 git commands to generate.