blob: c724133f89806fac90ae521b2b65cd7a6eb57041 (
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
|
autoload -U colors && colors
USER_COLOR="%F{magenta}"
VENV_COLOR="%F{yellow}"
DIR_COLOR="%F{green}"
GIT_COLOR="%F{blue}"
GIT_DIRTY_COLOR="%F{red}"
PROMPT_SYMBOL_COLOR="%F{yellow}"
RESET_COLOR="%f"
shorten_path() {
local path="${PWD/#$HOME/~}"
local parts=("${(@s:/:)path}")
if (( ${#parts} > 3 )); then
echo "${parts[1]}/.../${parts[-2]}/${parts[-1]}"
else
echo "$path"
fi
}
git_branch() {
local branch
branch=$(git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --short HEAD 2>/dev/null)
[[ -n "$branch" ]] && echo "$branch"
}
git_dirty() {
[[ -n "$(git status --porcelain 2>/dev/null)" ]] && echo "✗" || echo "✓"
}
set_prompt() {
local user="${USER_COLOR}%n${RESET_COLOR}"
local venv=""
[[ -n "$VIRTUAL_ENV" ]] && venv="${VENV_COLOR}($(basename $VIRTUAL_ENV))${RESET_COLOR} "
local path="${DIR_COLOR}$(shorten_path)${RESET_COLOR}"
local git_info=""
local branch="$(git_branch)"
if [[ -n "$branch" ]]; then
git_info=" %F{white}on%f ${GIT_COLOR}${branch}${RESET_COLOR}${GIT_DIRTY_COLOR}$(git_dirty)${RESET_COLOR}"
fi
PROMPT="${user} %F{white}in%f ${venv}${path}${git_info}
${PROMPT_SYMBOL_COLOR}λ${RESET_COLOR} "
}
autoload -Uz add-zsh-hook
add-zsh-hook precmd set_prompt
export PATH="$PATH:$HOME/.local/bin"
alias gvc="ssh git@git.venomade.com"
alias rgf='rg --files | rg'
|