diff --git a/.gitmodules b/.gitmodules index 518a2795..5126d890 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "modules/autosuggestions/external"] path = modules/autosuggestions/external url = https://github.com/tarruda/zsh-autosuggestions +[submodule "modules/prompt/external/craveytrain"] + path = modules/prompt/external/craveytrain + url = git@github.com:craveytrain/pure.git diff --git a/modules/prompt/external/craveytrain b/modules/prompt/external/craveytrain new file mode 160000 index 00000000..f51505bd --- /dev/null +++ b/modules/prompt/external/craveytrain @@ -0,0 +1 @@ +Subproject commit f51505bd960222a79e251c7077ab9614d7d8b718 diff --git a/modules/prompt/functions/prompt_craveytrain_setup b/modules/prompt/functions/prompt_craveytrain_setup deleted file mode 100644 index 30cf395c..00000000 --- a/modules/prompt/functions/prompt_craveytrain_setup +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env zsh - -# Load dependencies. -pmodload 'helper' - -# Memo-ized var -SEPARATOR="" - -# Begin a segment -# Takes two arguments, foreground and message. Foreground can be omitted, -# rendering default foreground. -prompt_segment() { - local fg - local message - - # If 2 params, 1st one is foreground - if [[ -n $2 ]]; then - # set fg to color passed in - fg="%F{$1}" - message="$2" - else - # otherwise set the fg color to reset value - fg="%f" - message="$1" - fi - - # color the prompt, spit out the message and reset the colors - print -Pn "$SEPARATOR%{$fg%}$message%{%f%}" - - # Let this run after the first run - SEPARATOR=" " -} - -function build_prompt { - # If exit status is non-zero - if [ $? -ne 0 ]; then - prompt_segment red '\u2718' - fi - - if [[ -n "$SSH_CONNECTION" ]]; then - # username - prompt_segment blue '%n' - prompt_segment 'at' - - # hostname - prompt_segment magenta '%m' - prompt_segment 'in' - fi - - # Working directory - prompt_segment cyan '%~' - - # If git is installed and $git_status is defined - if hash git 2>/dev/null && $git_status; then - # if $git_status; then - prompt_segment '${(e)git_info[prompt]}' - if [[ -n "${git_info[status]}" ]]; then - prompt_segment red '${git_info[status]}' - fi - fi -} - -start_time=$SECONDS -function prompt_craveytrain_preexec { - start_time=$SECONDS -} - -function calc_elapsed_time { - if [[ $timer_result -ge 3600 ]]; then - let "timer_hours = $timer_result / 3600" - let "remainder = $timer_result % 3600" - let "timer_minutes = $remainder / 60" - let "timer_seconds = $remainder % 60" - print -P "%B%F{red}>>> elapsed time ${timer_hours}h ${timer_minutes}m ${timer_seconds}s%b" - elif [[ $timer_result -ge 60 ]]; then - let "timer_minutes = $timer_result / 60" - let "timer_seconds = $timer_result % 60" - print -P "%B%F{yellow}>>> elapsed time ${timer_minutes}m ${timer_seconds}s%b" - elif [[ $timer_result -gt 10 ]]; then - print -P "%B%F{green}>>> elapsed time ${timer_result}s%b" - fi -} - -function prompt_craveytrain_precmd { - setopt LOCAL_OPTIONS - unsetopt XTRACE KSH_ARRAYS - RPROMPT='' - - # Get Git repository information. - if (( $+functions[git-info] )); then - git_status=git-info - fi - - # Get Ruby information - if (( $+functions[ruby-info] )); then - ruby-info - if [[ "$ruby_info[version]" != *system* ]]; then - RPROMPT='$ruby_info[version]' - fi - fi - - # Get Python information - if (( $+functions[python-info] )); then - python-info - if [ -n "$python_info[virtualenv]" ]; then - RPROMPT="$RPROMPT $python_info[virtualenv]" - fi - fi - - # Get Node information - if (( $+functions[node-info] )); then - node-info - if [[ "$node_info[version]" != *system* ]]; then - RPROMPT="$RPROMPT $node_info[version]" - fi - fi - - timer_result=$(($SECONDS-$start_time)) - if [[ $timer_result -gt 10 ]]; then - calc_elapsed_time - fi - start_time=$SECONDS -} - -function prompt_craveytrain_setup { - setopt LOCAL_OPTIONS - unsetopt XTRACE KSH_ARRAYS - prompt_opts=(cr percent subst) - - # Load required functions. - autoload -Uz add-zsh-hook - - # Add hook for calling git-info before each command. - add-zsh-hook preexec prompt_craveytrain_preexec - add-zsh-hook precmd prompt_craveytrain_precmd - - # Set ruby-info parameters. - # %v - ruby version. - zstyle ':prezto:module:ruby:info:version' format '%v' - - # Set python-info parameters. - # %v - virtualenv name. - zstyle ':prezto:module:python:info:virtualenv' format 'venv:%v' - - # Set node-info parameters. - # %v - Node.js version. - zstyle ':prezto:module:node:info:version' format 'nvm:%v' - - zstyle ':prezto:module:git:info' verbose 'yes' - zstyle ':prezto:module:editor:info:completing' format '%B%F{red}...%f%b' - zstyle ':prezto:module:editor:info:keymap:primary' format '%B%F{blue}❯%f%b' - zstyle ':prezto:module:editor:info:keymap:primary:overwrite' format '%F{red}♺%f' - zstyle ':prezto:module:editor:info:keymap:alternate' format '%B%F{red}❮%f%b' - zstyle ':prezto:module:git:info:action' format '! %s' - zstyle ':prezto:module:git:info:added' format '✚' - zstyle ':prezto:module:git:info:ahead' format '⬆' - zstyle ':prezto:module:git:info:behind' format '⬇' - zstyle ':prezto:module:git:info:branch' format '\ue0a0 %b' - zstyle ':prezto:module:git:info:commit' format '%.7c' - zstyle ':prezto:module:git:info:deleted' format '✖' - zstyle ':prezto:module:git:info:modified' format '✱' - zstyle ':prezto:module:git:info:position' format '%p' - zstyle ':prezto:module:git:info:renamed' format '➙' - zstyle ':prezto:module:git:info:stashed' format 's' - zstyle ':prezto:module:git:info:unmerged' format '═' - zstyle ':prezto:module:git:info:untracked' format '?' - zstyle ':prezto:module:git:info:keys' format \ - 'prompt' '%F{yellow}$(coalesce "%b" "%p") [%F{226}%c%F{yellow}]%s' \ - 'status' '%A%B%S%a%d%m%r%U%u' - - # Define prompts. - PROMPT='%{%f%b%k%}$(build_prompt) -${editor_info[keymap]} ' - SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' -} - -prompt_craveytrain_setup "$@" diff --git a/modules/prompt/functions/prompt_craveytrain_setup b/modules/prompt/functions/prompt_craveytrain_setup new file mode 120000 index 00000000..cbafd8bc --- /dev/null +++ b/modules/prompt/functions/prompt_craveytrain_setup @@ -0,0 +1 @@ +../external/craveytrain/pure.zsh \ No newline at end of file