-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathprompt_lexical_setup
97 lines (82 loc) · 2.97 KB
/
prompt_lexical_setup
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#! prompt_lexical_setup
# shellcheck disable=SC2154
# shellcheck disable=SC2034
#
# Based on the giddy theme.
#
# Authors:
# Paul Gideon Dann <[email protected]>
# Sorin Ionescu <[email protected]>
#
function +vi-set_novcs_prompt_symbol {
_prompt_lexical_symbol=')'
}
function +vi-set_vcs_prompt_symbol {
_prompt_lexical_symbol='➜'
}
function +vi-git_precmd {
# Check for untracked files, since vcs_info does not.
if [[ -n $(git ls-files --other --exclude-standard 2>/dev/null) ]]; then
hook_com[unstaged]+='%F{green}?%f'
fi
}
function prompt_lexical_python_pacman {
local pac=""
if [[ -n $VIRTUAL_ENV ]]; then
pac="virtualenv:$(basename "$VIRTUAL_ENV")"
elif [[ -n $CONDA_DEFAULT_ENV ]]; then
pac="mamba:$CONDA_DEFAULT_ENV"
else
pac="system"
fi
_prompt_lexical_python_pacman="$pac"
}
function prompt_lexical_nvm {
_prompt_lexical_nvm="$(nvm current)"
}
function prompt_lexical_precmd {
_prompt_lexical_pwd="${PWD/#$HOME/~}"
vcs_info
prompt_lexical_python_pacman
prompt_lexical_nvm
printf "\e]1;%s\a" "$(print -P '%~')"
}
function prompt_lexical_setup {
setopt LOCAL_OPTIONS
unsetopt XTRACE KSH_ARRAYS
prompt_opts=(cr percent subst)
# Load required functions.
autoload -Uz vcs_info
autoload -Uz add-zsh-hook
# Add hook to set up prompt parameters before each command.
add-zsh-hook precmd prompt_lexical_precmd
# Set editor-info parameters.
zstyle ':prezto:module:editor:info:completing' format '%F{green}...%f'
zstyle ':prezto:module:editor:info:keymap:alternate' format '%F{yellow}--- COMMAND ---%f'
# Set vcs_info parameters.
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' formats ' on %F{magenta}%b%f%c%u'
zstyle ':vcs_info:*' actionformats ' on %F{magenta}%b%f%c%u %F{yellow}(%a)%f'
zstyle ':vcs_info:*' stagedstr '%F{green}+%f'
zstyle ':vcs_info:*' unstagedstr '%F{green}!%f'
# Set vcs_info hooks.
# NOTE: Prior to Zsh v4.3.12, there are no static hooks, no vcs_info_hookadd
# function, and no 'no-vcs' hook.
zstyle ':vcs_info:*+start-up:*' hooks set_novcs_prompt_symbol
zstyle ':vcs_info:git*+set-message:*' hooks set_vcs_prompt_symbol git_precmd
zstyle ':vcs_info:*+set-message:*' hooks set_vcs_prompt_symbol
# Define prompts.
USER_AT_MACHINE='%F{magenta}%n%f@%F{yellow}%m%f'
PROMPT_LAST_CMD_ERROR=$'%(?..%F{red}%B‼ [%?]\n%b%f)'
PROMPT_DIR='%F{green}${_prompt_lexical_pwd}%f'
PROMPT_VCS='${vcs_info_msg_0_}'
PROMPT_PYTHON='%F{blue}[🐍 ${_prompt_lexical_python_pacman}]%f'
PROMPT_NVM='%F{green}[⬢ ${_prompt_lexical_nvm}]%f'
PROMPT_LINE_ONE="$PROMPT_LAST_CMD_ERROR$PROMPT_DIR$PROMPT_VCS $PROMPT_PYTHON $PROMPT_NVM"
PROMPT_LINE_TWO='%F{blue}${_prompt_lexical_symbol}%f '
PROMPT="$PROMPT_LINE_ONE
$PROMPT_LINE_TWO"
SPROMPT='zsh: correct %F{magenta}%R%f to %F{green}%r%f [nyae]? '
}
prompt_lexical_setup "$@"