diff --git a/prompt.zsh b/prompt.zsh index a89f145..64317e8 100644 --- a/prompt.zsh +++ b/prompt.zsh @@ -7,6 +7,9 @@ # Change this to your own username local default_username='sindresorhus' +# Threshold (sec) for showing cmd exec time +CMD_MAX_EXEC_TIME=5 + # For my own and others sanity # git: @@ -34,11 +37,24 @@ git_dirty() { git diff --quiet --ignore-submodules HEAD 2>/dev/null; [ $? -eq 1 ] && echo '*' } +# Displays the exec time of the last command if set threshold was exceeded +cmd_exec_time() { + local stop=`date +%s` + local start=${cmd_timestamp:-$stop} + let local elapsed=$stop-$start + [ $elapsed -gt $CMD_MAX_EXEC_TIME ] && echo ${elapsed}s +} + +preexec() { + cmd_timestamp=`date +%s` +} precmd() { vcs_info - # Remove `%*` to hide the time - print -P '\n%F{blue}%~%F{236}$vcs_info_msg_0_ $username%*%f' + # Add `%*` to show the time + print -P '\n%F{blue}%~%F{236}$vcs_info_msg_0_`git_dirty` $username%f %F{yellow}`cmd_exec_time`%f' + # Reset value since `preexec` isn't always triggered + unset cmd_timestamp } # Turns the prompt red if the last command exited with 0 diff --git a/readme.md b/readme.md index bcd80ff..ded0bbf 100644 --- a/readme.md +++ b/readme.md @@ -4,11 +4,19 @@ Pretty, minimal and fast ZSH prompt ![screenshot](https://raw.github.com/sindresorhus/pure/master/screenshot.png) + ## Overview -Most prompts are ugly, cluttered and slow. I wanted something visually pleasing that stayed out of my way. +Most prompts are cluttered, ugly and slow. I wanted something visually pleasing that stayed out of my way. -Pure only shows the current user if it's not the default. It shows the current git branch and if it's dirty using the fastest method possible. And the prompt symbol turns red if the last command exited with 0. +### Why? + +- Comes with the perfect prompt character. Author went through the whole Unicode range to find it. +- Username is only displayed if not default +- Shows git branch and if it's dirty using the [fastest](https://gist.github.com/3898739) method available +- Prompt character turns red if the last command didn't exit with 0 +- Command execution time will be displayed if it exceeds the set threshold +- Can easily be used as a starting point for your own custom prompt ## Getting Started diff --git a/screenshot.png b/screenshot.png index 682bdd2..01bcd9d 100644 Binary files a/screenshot.png and b/screenshot.png differ