Search code examples
zshoh-my-zsh

Remove new line in zsh theme


I'm trying to modify zsh theme af-magic. I really like it except one part. It makes a line full if dashes after every command.

I would out that this {(l.COLUMNS..-.)} part does that. If I remove the whole section, or - to make it {(l.COLUMNS...)}, it draws an empty line. So I want to get rid of this empty line. I tried to find \n anywhere, but there are none.

So this is the theme

# af-magic.zsh-theme
# Repo: https://github.com/andyfleming/oh-my-zsh
# Direct Link: https://github.com/andyfleming/oh-my-zsh/blob/master/themes/af-magic.zsh-theme

if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"

# primary prompt
PROMPT='$FG[237]${(l.COLUMNS..-.)}%{$reset_color%}
$FG[032]%~/\
$(git_prompt_info)$(hg_prompt_info)\
$FG[105]%(!.#.)%{$reset_color%}'
PROMPT2='%{$fg[red]%}\ %{$reset_color%}'
RPS1='${return_code}'


# color vars
eval my_gray='$FG[237]'
eval my_orange='$FG[214]'

# right prompt
if type "virtualenv_prompt_info" > /dev/null
then
    RPROMPT='$FG[078]$(virtualenv_prompt_info)%{$reset_color%} $my_gray%n@%m%{$reset_color%}%'
else
    RPROMPT='$my_gray%n@%m%{$reset_color%}%'
fi

# git settings
ZSH_THEME_GIT_PROMPT_PREFIX="$FG[075]($FG[078]"
ZSH_THEME_GIT_PROMPT_CLEAN=""
ZSH_THEME_GIT_PROMPT_DIRTY="$my_orange*%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="$FG[075])%{$reset_color%}"

# hg settings
ZSH_THEME_HG_PROMPT_PREFIX="$FG[075]($FG[078]"
ZSH_THEME_HG_PROMPT_CLEAN=""
ZSH_THEME_HG_PROMPT_DIRTY="$my_orange*%{$reset_color%}"
ZSH_THEME_HG_PROMPT_SUFFIX="$FG[075])%{$reset_color%}"

As a separate question, which language is this?


Solution

  • Just remove the use of COLUMNS from the prompt.

    PROMPT='$FG[237]${(l.COLUMNS..-.)}%{$reset_color%}
    $FG[032]%~/\
    $(git_prompt_info)$(hg_prompt_info)\
    $FG[105]%(!.#.)%{$reset_color%}'

    Once you do that, you can also remove the code that colored the now-absent line, to get

    PROMPT='$FG[032]%~/\
    $(git_prompt_info)$(hg_prompt_info)\
    $FG[105]%(!.#.)%{$reset_color%}'
    

    The newline, by the way, was the line break embedded in the value (note there was no \ at the end of the first line of the original prompt).