summaryrefslogtreecommitdiff
path: root/zsh/prompt.zsh
blob: bdcb66ec452990c02cbe5a8461ff0c8f35eca52e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# init prompts
autoload -Uz promptinit
promptinit

autoload -Uz vcs_info

setopt PROMPT_SUBST

GREY=0
GREEN=2
BLUE=4
RED_UNSTAGED=88
GREEN_STAGED=22
# %b - branch
# %F{color} %f - foreground
# %K{color} %k - background
# %u - unstaged
# %c - staged
# %m - misc (cherry-pick and rebase for git)
# %a - action
zstyle ':vcs_info:git*' formats "%K{$BLUE}  %b%u%c%m%a %k"
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' stagedstr "%F{$GREEN_STAGED} 󱇬%f"
zstyle ':vcs_info:*' unstagedstr "%F{$RED_UNSTAGED} ?%f"

get_pkg_manager() {
  if [[ -f yarn.lock ]]; then
    echo " "
  elif [[ -f pnpm-lock.yaml ]]; then
    echo " "
  elif [[ -f package-lock.json ]]; then
    echo " "
  else
    echo ""
  fi
}

precmd() {
	vcs_info

	TIME="%K{$GREY} %* %k"
	ERR="%0(?..%F{red} %?%f)"
	GIT="$vcs_info_msg_0_"
	# USER="%K{blue}[%n@%M] %k"
	SSH="%K{$GREEN}${SSH_TTY:+ [%n@%M]}%k"
	DIR="%K{$GREEN}  %3~ %k"
	NODEJS="$(get_pkg_manager)"
	JOBS="%(1j.%F{magenta}%K{black} JOBS:%j%k%f.)"
	NEWLINE=$'\n'
	FIRST_ROW="%B${SSH}${DIR}${GIT}${ERR}${NODEJS}${JOBS}%b"
	# SECOND_ROW="%K{$GREEN} %K{15}%F{0} %# %f%k "
	SECOND_ROW="%K{15}%F{0} %# %f%k "
	# SECOND_ROW="%K{$GREEN} %k %# "

	PROMPT="${FIRST_ROW}${NEWLINE}${SECOND_ROW}"
}