]> git.sev.monster Git - dotfiles.git/blobdiff - base/.zsh/functions/Prompts/prompt_arrows_setup
fix prompt battery cat
[dotfiles.git] / base / .zsh / functions / Prompts / prompt_arrows_setup
index 77313c070d8263eaebe922560c51d338a51efd7c..3fdba6c40ae6aa353590cc917a698b02c502ee0e 100644 (file)
@@ -22,41 +22,48 @@ EOF
 local prompt_arrows_vimode=
 
 function prompt_arrows_setup() {
-    # TODO: check for color terminal. never will use B&W term but still a XXX
-    local n p _p s r c d u
+    prompt_opts=( cr sp percent subst )
+
+
+    # XXX: no checks for color terminal or if escapes work, except for echotc
+    local m n p s r c d u
     #TODO remove n?
-    m="${1:-2line}"         # Mode
-    n="${2:-white}"         # Normal
-    p="${3:-green}"         # Prompt
-    s="${4:-random}"        # Ssh prompt
-    r="${5:-red}"           # uRgent
-    c="${6:-blue}"          # Comment
-    d="${7:-yellow}"        # Dir
-    u="${8:-darkyellow}"    # Unwritable
+    m=${1:-2line}      # Mode
+    n=${2:-white}      # Normal
+    p=${3:-green}      # Prompt
+    s=${4:-random}     # Ssh prompt
+    r=${5:-red}        # uRgent
+    c=${6:-blue}       # Comment
+    d=${7:-yellow}     # Dir
+    u=${8:-darkyellow} # Unwritable
 
     # [AC]CURSED COMMAND
     # concatenate the numerical values of each letter of the hostname,
     # moduloing by the number of possible colors.
-    generated=$(uname -n | od -An -td1 | awk -F' ' \
-      "{for (i=1; i<=NF; i++) {sum+=1; sum*=\$i; sum%=`echotc Co`} print sum}")
-    [[ "$p" = 'random' ]] && p=$generated
-    [[ "$s" = 'random' ]] && s=$generated
+    x=$(echotc Co)
+    [[ -z $x ]] && x=8
+    local generated=$(uname -n | od -An -td1 | awk -F' ' \
+      "{for (i=1; i<=NF; i++) {sum+=1; sum*=\$i; sum%=$(echotc Co)} print sum}")
+    [[ $p = random ]] && p=$generated
+    [[ $s = random ]] && s=$generated
 
     # use ssh color if connected
-    p="${${SSH_CLIENT+$s}:-$p}"
+    [[ -v SSH_CLIENT ]] && p=$s
 
     local clock="%F{$n}%T%f" dirvcs="%F{$d}"'${vcs_info_msg_0_:-%~}'"%f"
+    # XXX: linux only
     local battery=/sys/class/power_supply/BAT0/capacity
-    [[ -e "$battery" ]] && clock+=" `cat $battery`%%"
+    [[ -e "$battery" ]] && clock+=' $(cat "'"$battery"'")%%'
     local vicol='%F{${${prompt_arrows_vimode:+'"$r"'}:-'"$c"'}}'
+    local hist="%F{$n}%h"
     case "$m" {
         2line)
-            PROMPT="%f    $clock $dirvcs"$'\n'"%F{$c}>>> "
+            PROMPT="%f    $hist $clock $dirvcs"$'\n'"%F{$c}>>> "
             unset RPROMPT
             ;;
         right)
             RPROMPT="$dirvcs $clock"
-            PROMPT="%F{$c}>>> "
+            PROMPT="%F{$c}>>> $hist"
             ;;
         *)
             echo "Unknown prompt mode $m"
@@ -64,21 +71,23 @@ function prompt_arrows_setup() {
             ;;
     }
     PROMPT="$PROMPT%(1j,%F{$c}%j,)$vicol%#%F{$p}%n%F{$n}@%F{$p}%2m%(?..%F{$n}/%F{$r}\$?)%F{$n}: "
-    POSTEDIT="`print -P "%F{$n}%f"`"
+    POSTEDIT="$(print -P "%F{$n}%f")"
     autoload -Uz vcs_info
     zstyle ':vcs_info:git*' formats "%c%u%%F{$p}%r/%b%%F{$n}/%%F{$d}%S%%f"
     zstyle ':vcs_info:git*' actionformats "%%F{$r}(%a)%f %c%u%%F{$p}%r/%b%f/%%F{$d}%S%f"
     zstyle ':vcs_info:git*' stagedstr   "%F{$c}+"
     zstyle ':vcs_info:git*' unstagedstr "%F{$r}*"
 
+    # add-zsh-hook should have already been autoloaded by promptinit
     add-zsh-hook precmd prompt_arrows_precmd
     add-zsh-hook preexec prompt_arrows_preexec
-    zle -N zle-line-init
-    zle -A zle-line-init zle-keymap-select
+    autoload -Uz add-zle-hook-widget
+    add-zle-hook-widget line-init prompt_arrows_keymap_select
+    add-zle-hook-widget keymap-select prompt_arrows_keymap_select
 }
 
 # change color based on zle vi mode
-function zle-line-init {
+function prompt_arrows_keymap_select {
     prompt_arrows_vimode="${KEYMAP:/(main|viins)/}"
     zle reset-prompt
 }
@@ -91,5 +100,17 @@ function prompt_arrows_preexec {
     print -Pn "%F{red}<<<%f "
 }
 
+function prompt_arrows_preview {
+  if (( ! $#* )); then
+    prompt_preview_theme arrows 2line
+    print '\n'
+    prompt_preview_theme arrows right
+    print
+  else
+    prompt_preview_theme arrows "$@"
+    print
+  fi
+}
+
 prompt_arrows_setup "$@"
 # vim: set et fenc=utf-8 ft=zsh sts=4 sw=4 ts=8 tw=0 :
This page took 0.041304 seconds and 4 git commands to generate.