Skip to content

Commit e99e1b2

Browse files
committed
theme/modern: SC2154
Handle all unbound parameters, even colors!
1 parent 59b8510 commit e99e1b2

File tree

1 file changed

+23
-22
lines changed

1 file changed

+23
-22
lines changed

themes/modern/modern.theme.bash

+23-22
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
# shellcheck shell=bash
22
# shellcheck disable=SC2034 # Expected behavior for themes.
3-
# shellcheck disable=SC2154 #TODO: fix these all.
43

54
SCM_THEME_PROMPT_PREFIX=""
65
SCM_THEME_PROMPT_SUFFIX=""
76

8-
SCM_THEME_PROMPT_DIRTY=" ${bold_red}${normal}"
9-
SCM_THEME_PROMPT_CLEAN=" ${bold_green}${normal}"
10-
SCM_GIT_CHAR="${bold_green}±${normal}"
11-
SCM_SVN_CHAR="${bold_cyan}${normal}"
12-
SCM_HG_CHAR="${bold_red}${normal}"
7+
SCM_THEME_PROMPT_DIRTY=" ${bold_red?}${normal?}"
8+
SCM_THEME_PROMPT_CLEAN=" ${bold_green?}${normal?}"
9+
SCM_GIT_CHAR="${bold_green?}±${normal?}"
10+
SCM_SVN_CHAR="${bold_cyan?}${normal?}"
11+
SCM_HG_CHAR="${bold_red?}${normal?}"
1312

14-
case $TERM in
13+
case "${TERM:-dumb}" in
1514
xterm*)
1615
TITLEBAR="\[\033]0;\w\007\]"
1716
;;
@@ -22,32 +21,34 @@ esac
2221

2322
PS3=">> "
2423

25-
is_vim_shell() {
26-
if [ -n "$VIMRUNTIME" ]; then
27-
echo "[${cyan}vim shell${normal}]"
24+
function is_vim_shell() {
25+
if [[ -n "${VIMRUNTIME:-}" ]]; then
26+
echo "[${cyan?}vim shell${normal?}]"
2827
fi
2928
}
3029

31-
detect_venv() {
32-
python_venv=""
30+
function detect_venv() {
31+
local python_venv=""
3332
# Detect python venv
34-
if [[ -n "${CONDA_DEFAULT_ENV}" ]]; then
35-
python_venv="($PYTHON_VENV_CHAR${CONDA_DEFAULT_ENV}) "
36-
elif [[ -n "${VIRTUAL_ENV}" ]]; then
37-
python_venv="($PYTHON_VENV_CHAR$(basename "${VIRTUAL_ENV}")) "
33+
if [[ -n "${CONDA_DEFAULT_ENV:-}" ]]; then
34+
python_venv="(${PYTHON_VENV_CHAR}${CONDA_DEFAULT_ENV}) "
35+
elif [[ -n "${VIRTUAL_ENV:-}" ]]; then
36+
python_venv="(${PYTHON_VENV_CHAR}${VIRTUAL_ENV##*/}) "
3837
fi
3938
}
4039

41-
prompt() {
42-
SCM_PROMPT_FORMAT='[%s][%s]'
43-
retval=$?
40+
function prompt() {
41+
local retval=$? scm_prompt is_vim_shell python_venv
42+
local SCM_PROMPT_FORMAT='[%s][%s]'
43+
scm_prompt="$(scm_prompt)"
44+
is_vim_shell="$(is_vim_shell)"
4445
if [[ retval -ne 0 ]]; then
45-
PS1="${TITLEBAR}${bold_red}┌─${reset_color}$(scm_prompt)[${cyan}\u${normal}][${cyan}\w${normal}]$(is_vim_shell)\n${bold_red}└─▪${normal} "
46+
PS1="${TITLEBAR:-}${bold_red?}┌─${reset_color?}${scm_prompt}[${cyan?}\u${normal?}][${cyan?}\w${normal?}]${is_vim_shell}\n${bold_red?}└─▪${normal?} "
4647
else
47-
PS1="${TITLEBAR}┌─$(scm_prompt)[${cyan}\u${normal}][${cyan}\w${normal}]$(is_vim_shell)\n└─▪ "
48+
PS1="${TITLEBAR:-}┌─${scm_prompt}[${cyan?}\u${normal?}][${cyan?}\w${normal?}]${is_vim_shell}\n└─▪ "
4849
fi
4950
detect_venv
50-
PS1+="${python_venv}${dir_color}"
51+
PS1+="${python_venv?}${dir_color?}"
5152
}
5253

5354
PS2="└─▪ "

0 commit comments

Comments
 (0)