command line - Zsh prompt produces an error

06
2014-04
  • cadlac

    I have the default prompt for oh-my-zsh, which is great when I have a git repo, but if there is no git repo its actually failing instead of putting nothing. I trapped an ascii image to err just for humors sake, and then when I cd out of a git repo it has the path + ascii-image as the prompt! This is very annoying and I imagine there must be a way to write the prompt so that it isn't erring out?

    Prompt:

    ${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}
    
  • Answers
    Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

    Related Question

    git - Tmux and ZSH custom prompt : bug with window name
  • Adrien Coquio

    I have customized my ZSH prompt with oh-my-zsh to make it more readable and add information about git if I'm in a repository.

    Example :
    bob@inf [~/docs] %
    bob@inf [~/src/nicest] master % (in a git repository)

    It works well but I have some bugs with tmux and the window name. It still display non sense value and I cannot disable it with automatic-rename off (it just do not work, the window name change after each command), for the first example tmux use ~/docs for the window name.

    I'm not sure how I can fix it, I would like to keep my zsh prompt as it is, if can make change but would like to understand where is the problem ?

    Another solution may be to redefine command settile (from this answer) but I'm not sure how to do it the right way.


  • Related Answers
  • Chris Johnsen

    I took a peek at oh-my-zsh and found a likely suspect.

    When the value of the TERM environment variable starts with screen (which it should under both screen and tmux), it uses a screen terminal control sequence to set the window’s name to

    • (just before displaying a shell prompt)
      the left-most portion of the “tilde compressed” path of the current working directory (.. followed by the last 13 characters or the entire path if it less than 15 characters) and
    • (just before starting a command)
      the first “word” of about-to-be-run command (not counting ssh, sudo, and a few others).

    It sounds like it is working this way for you (you said that your window named changed to ~/docs when you were in that directory). If you want to disable this automatic renaming, you can can disable it completely by setting the DISABLE_AUTO_TITLE shell parameter to true in your .zshrc:

    DISABLE_AUTO_TITLE=true
    

    If you just set this in an interactive shell, you will end up with an empty string for the current window’s name, but oh-my-zsh will stop updating the window before each prompt and command in that shell instance (it needs to be in your .zshrc to affect all new shell instances).

  • albertogg

    I know that the answer above gives you a solution, but another one is to simply add this option your the ~/.tmux.conf

    set-option -g allow-rename off