summaryrefslogtreecommitdiff
path: root/zsh/prompt.zsh
blob: 4dcd4deabe8eb8a6a5e4fb3d09f5f728da5ae048 (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
# 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%F{$BLUE}%f"
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

	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'
	TIP="%F{$GREEN}%f"

	if [ -n "$vcs_info_msg_0_" ]; then
		TIP="%K{$GREEN} %k"
	fi
	PROMPT="%K{$GREY} %* %k%B${SSH}${DIR}${TIP}${GIT}${ERR}${NODEJS}${JOBS}%b${NEWLINE} %# "
}