Skip to content

Commit

Permalink
feat(zsh): change prompt {playtime => century}
Browse files Browse the repository at this point in the history
  • Loading branch information
kaplanz committed Feb 11, 2024
1 parent 3b9668b commit 31ba461
Show file tree
Hide file tree
Showing 6 changed files with 145 additions and 209 deletions.
65 changes: 29 additions & 36 deletions apps/zsh/after/highlight.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -3,54 +3,47 @@
# Created: 19 May 2021
# SPDX-License-Identifier: MIT

# Define syntax highlighting colurs.
red="$ZSH_PROMPT_COLOUR_RED"
green="$ZSH_PROMPT_COLOUR_GREEN"
yellow="$ZSH_PROMPT_COLOUR_YELLOW"
blue="$ZSH_PROMPT_COLOUR_BLUE"
magenta="$ZSH_PROMPT_COLOUR_MAGENTA"
cyan="$ZSH_PROMPT_COLOUR_CYAN"
# Create a hash table for globally stashing variables without polluting main
# scope with a bunch of identifiers.
typeset -gA HIGHLIGHT
HIGHLIGHT[RED]=167
HIGHLIGHT[GRN]=107
HIGHLIGHT[BLU]=025
HIGHLIGHT[CYN]=110
HIGHLIGHT[YLW]=183
HIGHLIGHT[MGA]=222

# Define syntax highlighting styles.
ZSH_HIGHLIGHT_STYLES[default]="none"
ZSH_HIGHLIGHT_STYLES[unknown-token]="fg=$red,bold"
ZSH_HIGHLIGHT_STYLES[reserved-word]="fg=$yellow"
ZSH_HIGHLIGHT_STYLES[suffix-alias]="fg=$green,underline"
ZSH_HIGHLIGHT_STYLES[global-alias]="fg=$cyan"
ZSH_HIGHLIGHT_STYLES[precommand]="fg=$green,underline"
ZSH_HIGHLIGHT_STYLES[unknown-token]="fg=$HIGHLIGHT[RED],bold"
ZSH_HIGHLIGHT_STYLES[reserved-word]="fg=$HIGHLIGHT[YLW]"
ZSH_HIGHLIGHT_STYLES[suffix-alias]="fg=$HIGHLIGHT[GRN],underline"
ZSH_HIGHLIGHT_STYLES[global-alias]="fg=$HIGHLIGHT[CYN]"
ZSH_HIGHLIGHT_STYLES[precommand]="fg=$HIGHLIGHT[GRN],underline"
ZSH_HIGHLIGHT_STYLES[commandseparator]="none"
ZSH_HIGHLIGHT_STYLES[autodirectory]="fg=$green,underline"
ZSH_HIGHLIGHT_STYLES[autodirectory]="fg=$HIGHLIGHT[GRN],underline"
ZSH_HIGHLIGHT_STYLES[path]=underline
ZSH_HIGHLIGHT_STYLES[path_pathseparator]=
ZSH_HIGHLIGHT_STYLES[path_prefix_pathseparator]=
ZSH_HIGHLIGHT_STYLES[globbing]="fg=$blue"
ZSH_HIGHLIGHT_STYLES[history-expansion]="fg=$blue"
ZSH_HIGHLIGHT_STYLES[globbing]="fg=$HIGHLIGHT[BLU]"
ZSH_HIGHLIGHT_STYLES[history-expansion]="fg=$HIGHLIGHT[BLU]"
ZSH_HIGHLIGHT_STYLES[command-substitution]="none"
ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]="fg=$magenta"
ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]="fg=$HIGHLIGHT[MGA]"
ZSH_HIGHLIGHT_STYLES[process-substitution]="none"
ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]="fg=$magenta"
ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]="fg=$HIGHLIGHT[MGA]"
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]="none"
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]="none"
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]="none"
ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]="fg=$magenta"
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]="fg=$yellow"
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]="fg=$yellow"
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]="fg=$yellow"
ZSH_HIGHLIGHT_STYLES[rc-quote]="fg=$cyan"
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]="fg=$cyan"
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]="fg=$cyan"
ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]="fg=$cyan"
ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]="fg=$HIGHLIGHT[MGA]"
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]="fg=$HIGHLIGHT[YLW]"
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]="fg=$HIGHLIGHT[YLW]"
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]="fg=$HIGHLIGHT[YLW]"
ZSH_HIGHLIGHT_STYLES[rc-quote]="fg=$HIGHLIGHT[CYN]"
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]="fg=$HIGHLIGHT[CYN]"
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]="fg=$HIGHLIGHT[CYN]"
ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]="fg=$HIGHLIGHT[CYN]"
ZSH_HIGHLIGHT_STYLES[assign]="none"
ZSH_HIGHLIGHT_STYLES[redirection]="fg=$yellow"
ZSH_HIGHLIGHT_STYLES[redirection]="fg=$HIGHLIGHT[YLW]"
ZSH_HIGHLIGHT_STYLES[comment]="fg=black,bold"
ZSH_HIGHLIGHT_STYLES[named-fd]="none"
ZSH_HIGHLIGHT_STYLES[numeric-fd]="none"
ZSH_HIGHLIGHT_STYLES[arg0]="fg=$green"

# Unset syntax highlighting colurs.
unset red
unset green
unset yellow
unset blue
unset magenta
unset cyan
ZSH_HIGHLIGHT_STYLES[arg0]="fg=$HIGHLIGHT[GRN]"
4 changes: 2 additions & 2 deletions apps/zsh/after/utils/fzf.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ export FZF_DEFAULT_OPTS="
--bind 'ctrl-a:toggle-all'
--bind 'ctrl-v:execute(echo {+} | xargs -o "$EDITOR")'
--bind 'ctrl-y:execute-silent(echo {+} | pbcopy)'
--color='prompt:25,pointer:110,marker:222'
--color='prompt:183,pointer:110,marker:222'
--exit-0
--info=inline
--multi
--prompt='~ '
--prompt=' '
--select-1
"
export FZF_CTRL_T_COMMAND='$FZF_DEFAULT_COMMAND --strip-cwd-prefix'
Expand Down
12 changes: 0 additions & 12 deletions apps/zsh/plugin/vi-mode.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,6 @@ function _zsh_set_cursor_shape_for_keymap() {
# }}}

# -- Widgets -- {{{
# Updates editor information when the keymap changes.
function zle-keymap-select() {
# Set the prompt variable
ZSH_PROMPT_VAR_VIMODE="$(prompt_playtime_vimode)"
# Set the cursor shape for the keymap
_zsh_set_cursor_shape_for_keymap "${KEYMAP}"
# Reset the prompt on a mode change
zle reset-prompt
zle -R
}
zle -N zle-keymap-select

# These "echoti" statements were originally set in lib/key-bindings.zsh
# Not sure the best way to extend without overriding.
function zle-line-init() {
Expand Down
113 changes: 113 additions & 0 deletions apps/zsh/themes/prompt_century_setup
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# File: prompt_century_setup
# Author: Zakhary Kaplan <https://zakhary.dev>
# Created: 11 Feb 2024
# SPDX-License-Identifier: MIT
# Vim: set ft=zsh:

# ----------------
# -- Modules --
# ----------------

zmodload zsh/datetime


# ----------------
# -- Global --
# ----------------

# Create a hash table for globally stashing variables without polluting main
# scope with a bunch of identifiers.
typeset -gA CENTURY

# Primary
CENTURY[RED]=167
CENTURY[GRN]=107
CENTURY[BLU]=025
CENTURY[CYN]=110
CENTURY[MGA]=183
CENTURY[YLW]=222
# Secondary
CENTURY[GR2]=071
CENTURY[YL2]=215
# Greys
CENTURY[BW1]=239
CENTURY[BW2]=242


# ----------------
# -- Prompt --
# ----------------

function prompt_century_setup() {
local RST="%b%f%k"
local JOB="%b%F{${CENTURY[YLW]}}%(1j.%j! .)"
local SYM="%B%F{%(0?.${CENTURY[GRN]}.${CENTURY[RED]})}%(!.#.❯) "
local USR="%b%F{${CENTURY[CYN]}}%n "
PS1=" ${USR}${JOB}${SYM}${RST}"

local CLK="%b%F{${CENTURY[BW2]}}[%D{%X}]"
local CWD="%B%F{${CENTURY[BLU]}}%2~"
local GIT='${CENTURY[GIT]} '
local RET="%b%F{${CENTURY[RED]}}%(0?..%? )"
local TMR='${CENTURY[TMR]} '
RPS1="${RET}${TMR}${CWD}${GIT}${CLK}${RST}"
}


# ----------------
# -- Hooks --
# ----------------

function hook-preexec-timer() {
CENTURY[ERT]=$EPOCHREALTIME
}
add-zsh-hook preexec hook-preexec-timer

function hook-precmd-timer() {
local -A color
color[TMR]="${CENTURY[BW1]}"

let local timer="$EPOCHREALTIME-${CENTURY[ERT]:-$EPOCHREALTIME}"
local tmr
(( $timer > 0 )) && {
tmr="$(printf '%.2fs' $timer)"
CENTURY[ERT]=
}

CENTURY[TMR]="%b%F{${color[TMR]}}${tmr}"
}
add-zsh-hook precmd hook-precmd-timer

function hook-preexec-git() {
CENTURY[GIT]=
}
add-zsh-hook preexec hook-preexec-git

function hook-precmd-git() {
git rev-parse --is-inside-work-tree &> /dev/null || return

local -A color
color[DRY]="${CENTURY[YL2]}"
color[PAR]="${CENTURY[BLU]}"
color[REF]="${CENTURY[GR2]}"

local dry="$(git status --porcelain)"
local ref="$(git symbolic-ref -q --short HEAD)" \
|| ref="$(git rev-parse --short HEAD)" \
|| return

local OPN="%b%F{${color[PAR]}}("
local DRY="%b%F{${color[DRY]}}${dry:+*}"
local REF="%b%F{${color[REF]}}${ref}"
local CLS="%b%F{${color[PAR]}})"

CENTURY[GIT]="${OPN}${REF}${DRY}${CLS}"
}
add-zsh-hook precmd hook-precmd-git


# ----------------
# -- Setup --
# ----------------

prompt_century_setup "$@"
158 changes: 0 additions & 158 deletions apps/zsh/themes/prompt_playtime_setup

This file was deleted.

2 changes: 1 addition & 1 deletion apps/zsh/zshrc
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ autoload -U promptinit
promptinit

# Set the prompt theme.
prompt playtime
prompt century
# }}}

# -- After-hooks -- {{{
Expand Down

0 comments on commit 31ba461

Please sign in to comment.