diff options
Diffstat (limited to '.config/zsh/zsh-prompt')
-rw-r--r-- | .config/zsh/zsh-prompt | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/.config/zsh/zsh-prompt b/.config/zsh/zsh-prompt new file mode 100644 index 0000000..f0a86dc --- /dev/null +++ b/.config/zsh/zsh-prompt @@ -0,0 +1,40 @@ +#!/bin/sh + +## autoload vcs and colors +autoload -Uz vcs_info +autoload -U colors && colors + +# enable only git +zstyle ':vcs_info:*' enable git + +# setup a hook that runs before every ptompt. +precmd_vcs_info() { vcs_info } +precmd_functions+=( precmd_vcs_info ) +setopt prompt_subst + +# add a function to check for untracked files in the directory. +# from https://github.com/zsh-users/zsh/blob/master/Misc/vcs_info-examples +zstyle ':vcs_info:git*+set-message:*' hooks git-untracked +# ++vi-git-untracked(){ + if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \ + git status --porcelain | grep '??' &> /dev/null ; then + # This will show the marker if there are any untracked files in repo. + # If instead you want to show the marker only if there are untracked + # files in $PWD, use: + #[[ -n $(git ls-files --others --exclude-standard) ]] ; then + hook_com[staged]+='!' # signify new files with a bang + fi +} + +zstyle ':vcs_info:*' check-for-changes true +# zstyle ':vcs_info:git:*' formats " %r/%S %b %m%u%c " +zstyle ':vcs_info:git:*' formats " %{$fg[blue]%}(%{$fg[red]%}%m%u%c%{$fg[yellow]%}%{$fg[magenta]%} %b%{$fg[blue]%})" + +# format our main prompt for hostname current folder, and permissions. +PROMPT="%B%{$fg[blue]%}[%{$fg[white]%}%n%{$fg[red]%}@%{$fg[white]%}%m%{$fg[blue]%}] %(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )%{$fg[cyan]%}%c%{$reset_color%}" +# PROMPT="%{$fg[green]%}%n@%m %~ %{$reset_color%}%#> " +PROMPT+="\$vcs_info_msg_0_ " +# TODO look into this for more colors +# https://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/ +# also ascii escape codes |