minimal.zsh-theme 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #
  2. # Minimal theme
  3. # https://github.com/S1cK94/minimal
  4. #
  5. # Requires the `git-info` zmodule to be included in the .zimrc file.
  6. # Global variables
  7. function {
  8. PROMPT_CHAR='❯'
  9. ON_COLOR='%F{green}'
  10. OFF_COLOR='%f'
  11. ERR_COLOR='%F{red}'
  12. }
  13. prompt_minimal_user() {
  14. print -n '%(!.${ON_COLOR}.${OFF_COLOR})${PROMPT_CHAR}'
  15. }
  16. prompt_minimal_jobs() {
  17. print -n '%(1j.${ON_COLOR}.${OFF_COLOR})${PROMPT_CHAR}'
  18. }
  19. prompt_minimal_vimode() {
  20. local color
  21. case ${KEYMAP} in
  22. main|viins)
  23. color=${ON_COLOR}
  24. ;;
  25. *)
  26. color=${OFF_COLOR}
  27. ;;
  28. esac
  29. print -n "${color}${PROMPT_CHAR}"
  30. }
  31. prompt_minimal_status() {
  32. print -n '%(0?.${ON_COLOR}.${ERR_COLOR})${PROMPT_CHAR}'
  33. }
  34. prompt_minimal_path() {
  35. local path_color='%F{244}'
  36. print -n "${path_color}${$(short_pwd)//\//%f\/${path_color}}%f"
  37. }
  38. prompt_minimal_git() {
  39. if [[ -n ${git_info} ]]; then
  40. print -n " ${(e)git_info[color]}${(e)git_info[prompt]}"
  41. fi
  42. }
  43. function zle-line-init zle-keymap-select {
  44. zle reset-prompt
  45. zle -R
  46. }
  47. prompt_minimal_precmd() {
  48. (( ${+functions[git-info]} )) && git-info
  49. }
  50. prompt_minimal_setup() {
  51. zle -N zle-line-init
  52. zle -N zle-keymap-select
  53. autoload -Uz colors && colors
  54. autoload -Uz add-zsh-hook
  55. prompt_opts=(cr percent sp subst)
  56. add-zsh-hook precmd prompt_minimal_precmd
  57. zstyle ':zim:git-info:branch' format '%b'
  58. zstyle ':zim:git-info:commit' format '%c'
  59. zstyle ':zim:git-info:dirty' format '${ERR_COLOR}'
  60. zstyle ':zim:git-info:diverged' format '${ERR_COLOR}'
  61. zstyle ':zim:git-info:behind' format '%F{11}'
  62. zstyle ':zim:git-info:ahead' format '${OFF_COLOR}'
  63. zstyle ':zim:git-info:keys' format \
  64. 'prompt' '%b%c' \
  65. 'color' '$(coalesce "%D" "%V" "%B" "%A" "${ON_COLOR}")'
  66. PROMPT="$(prompt_minimal_user)$(prompt_minimal_jobs)\$(prompt_minimal_vimode)$(prompt_minimal_status)%f "
  67. RPROMPT='$(prompt_minimal_path)$(prompt_minimal_git)'
  68. }
  69. prompt_minimal_setup "$@"