From 820a027d471f02d87625d116f6630f2a360803e6 Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Mon, 3 Oct 2011 16:48:28 -0700 Subject: [PATCH 01/11] bash marks port to zsh, with completion and my own personal theme --- plugins/go/_go | 4 ++++ plugins/go/go.plugin.zsh | 50 ++++++++++++++++++++++++++++++++++++++++ themes/jocelyn.zsh-theme | 7 ++++++ 3 files changed, 61 insertions(+) create mode 100644 plugins/go/_go create mode 100644 plugins/go/go.plugin.zsh create mode 100644 themes/jocelyn.zsh-theme diff --git a/plugins/go/_go b/plugins/go/_go new file mode 100644 index 000000000..37006f964 --- /dev/null +++ b/plugins/go/_go @@ -0,0 +1,4 @@ +#compdef go +#autoload + +_arguments "1: :(`grep "|" $HOME/.zshbookmarks | cut -d\| -f2`)" \ No newline at end of file diff --git a/plugins/go/go.plugin.zsh b/plugins/go/go.plugin.zsh new file mode 100644 index 000000000..10ca81204 --- /dev/null +++ b/plugins/go/go.plugin.zsh @@ -0,0 +1,50 @@ +# ------------------------------------------------------------------------------ +# FILE: go.plugin.zsh +# DESCRIPTION: oh-my-zsh plugin file. +# AUTHOR: Jocelyn Mallon (jocelyn.e.mallon@gmail.com) +# VERSION: 1.0 +# ------------------------------------------------------------------------------ + +bookmarks_file="$HOME/.zshbookmarks" + +# Create bookmarks_file it if it doesn't exist +if [[ ! -f $bookmarks_file ]]; then + touch $bookmarks_file +fi + +function bookmark() { + bookmark_name=$1 + if [[ -z $bookmark_name ]]; then + echo 'Invalid name, please provide a name for your bookmark. For example:' + echo ' bookmark foo' + else + bookmark="$(pwd)|$bookmark_name" # Store the bookmark as folder|name + if [[ -z $(grep "$bookmark" $bookmarks_file) ]]; then + echo $bookmark >> $bookmarks_file + echo "Bookmark '$bookmark_name' saved" + else + echo "Bookmark already existed" + fi + fi +} + +function go() { + bookmark_name=$1 + bookmark="$(grep "|$bookmark_name$" "$bookmarks_file")" + if [[ -z $bookmark ]]; then + echo "Invalid name, please provide a valid bookmark name. For example:" + echo " go foo" + echo + echo "To bookmark a folder, go to the folder then do this (naming the bookmark 'foo'):" + echo " bookmark foo" + else + dir="${bookmark%%|*}" + cd "${dir}" + dir="" + fi +} + +# Show a list of the bookmarks +function bookmarksshow(){ + cat ~/.bookmarks | awk '{ printf "%-40s%-40s%s\n",$1,$2,$3}' FS=\| +} \ No newline at end of file diff --git a/themes/jocelyn.zsh-theme b/themes/jocelyn.zsh-theme new file mode 100644 index 000000000..708770a09 --- /dev/null +++ b/themes/jocelyn.zsh-theme @@ -0,0 +1,7 @@ +PROMPT='(%{$fg_bold[magenta]%}%n%{$reset_color%}@%{$fg_bold[blue]%}%m%{$reset_color%}) - (%{$fg_bold[blue]%}%T%{$reset_color%}) - (%{$fg[green]%}%~%{$reset_color%}%) +$(git_prompt_info)%{$reset_color%}$fg_bold[green]%}➜ %{$reset_color%}' + +ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:%{$reset_color%}(%{$fg_bold[yellow]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_DIRTY="%{$reset_color%}) %{$fg_bold[red]%}✗%{$reset_color%} " +ZSH_THEME_GIT_PROMPT_CLEAN="%{$reset_color%}) " From c103b091d47bf9005d9a708515287f19444bbfa3 Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Mon, 3 Oct 2011 19:25:26 -0700 Subject: [PATCH 02/11] name change to 'zshmarks' to better represent that this comes from 'bash marks' added a new function to manually edit the ~/.bookmarks file, using whatever $EDITOR the use has registered --- plugins/go/_go | 4 -- plugins/zshmarks/_go | 4 ++ .../zshmarks.plugin.zsh} | 41 +++++++++++-------- 3 files changed, 27 insertions(+), 22 deletions(-) delete mode 100644 plugins/go/_go create mode 100644 plugins/zshmarks/_go rename plugins/{go/go.plugin.zsh => zshmarks/zshmarks.plugin.zsh} (58%) diff --git a/plugins/go/_go b/plugins/go/_go deleted file mode 100644 index 37006f964..000000000 --- a/plugins/go/_go +++ /dev/null @@ -1,4 +0,0 @@ -#compdef go -#autoload - -_arguments "1: :(`grep "|" $HOME/.zshbookmarks | cut -d\| -f2`)" \ No newline at end of file diff --git a/plugins/zshmarks/_go b/plugins/zshmarks/_go new file mode 100644 index 000000000..6c8fe693f --- /dev/null +++ b/plugins/zshmarks/_go @@ -0,0 +1,4 @@ +#compdef go +#autoload + +_arguments "1: :(`grep "|" $HOME/.bookmarks | cut -d\| -f2`)" \ No newline at end of file diff --git a/plugins/go/go.plugin.zsh b/plugins/zshmarks/zshmarks.plugin.zsh similarity index 58% rename from plugins/go/go.plugin.zsh rename to plugins/zshmarks/zshmarks.plugin.zsh index 10ca81204..45b9d1061 100644 --- a/plugins/go/go.plugin.zsh +++ b/plugins/zshmarks/zshmarks.plugin.zsh @@ -1,15 +1,15 @@ # ------------------------------------------------------------------------------ -# FILE: go.plugin.zsh +# FILE: zshmarks.plugin.zsh # DESCRIPTION: oh-my-zsh plugin file. # AUTHOR: Jocelyn Mallon (jocelyn.e.mallon@gmail.com) # VERSION: 1.0 # ------------------------------------------------------------------------------ -bookmarks_file="$HOME/.zshbookmarks" +bookmarks_file="$HOME/.bookmarks" # Create bookmarks_file it if it doesn't exist if [[ ! -f $bookmarks_file ]]; then - touch $bookmarks_file + touch $bookmarks_file fi function bookmark() { @@ -29,22 +29,27 @@ function bookmark() { } function go() { - bookmark_name=$1 - bookmark="$(grep "|$bookmark_name$" "$bookmarks_file")" - if [[ -z $bookmark ]]; then - echo "Invalid name, please provide a valid bookmark name. For example:" - echo " go foo" - echo - echo "To bookmark a folder, go to the folder then do this (naming the bookmark 'foo'):" - echo " bookmark foo" - else - dir="${bookmark%%|*}" - cd "${dir}" - dir="" - fi + bookmark_name=$1 + bookmark="$(grep "|$bookmark_name$" "$bookmarks_file")" + if [[ -z $bookmark ]]; then + echo "Invalid name, please provide a valid bookmark name. For example:" + echo " go foo" + echo + echo "To bookmark a folder, go to the folder then do this (naming the bookmark 'foo'):" + echo " bookmark foo" + else + dir="${bookmark%%|*}" + cd "${dir}" + dir="" + fi } # Show a list of the bookmarks -function bookmarksshow(){ - cat ~/.bookmarks | awk '{ printf "%-40s%-40s%s\n",$1,$2,$3}' FS=\| +function showmarks() { + cat ~/.bookmarks | awk '{ printf "%-40s%-40s%s\n",$1,$2,$3}' FS=\| +} + +# manually edit bookmarks +function editmarks() { + $EDITOR $bookmarks_file } \ No newline at end of file From 06a077e570d8edd62a8fd04db8ef0305799b0451 Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Tue, 4 Oct 2011 19:52:05 -0700 Subject: [PATCH 03/11] slight tweaks to prompt/theme, and modified alias file to add a few new directory (ls) command options --- lib/aliases.zsh | 11 +++++------ themes/jocelyn.zsh-theme | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/aliases.zsh b/lib/aliases.zsh index 0555be264..64123931e 100644 --- a/lib/aliases.zsh +++ b/lib/aliases.zsh @@ -9,16 +9,15 @@ alias -- -='cd -' # Super user alias _='sudo' -#alias g='grep -in' - # Show history alias history='fc -l 1' # List direcory contents -alias lsa='ls -lah' -alias l='ls -la' +alias lla='ls -lah' +alias la='ls -la' alias ll='ls -l' -alias sl=ls # often screw this up +alias llh='ls -hl' +alias lt='ls -lrthF' +#alias sl=ls # often screw this up alias afind='ack-grep -il' - diff --git a/themes/jocelyn.zsh-theme b/themes/jocelyn.zsh-theme index 708770a09..7c9d04b63 100644 --- a/themes/jocelyn.zsh-theme +++ b/themes/jocelyn.zsh-theme @@ -1,5 +1,5 @@ -PROMPT='(%{$fg_bold[magenta]%}%n%{$reset_color%}@%{$fg_bold[blue]%}%m%{$reset_color%}) - (%{$fg_bold[blue]%}%T%{$reset_color%}) - (%{$fg[green]%}%~%{$reset_color%}%) -$(git_prompt_info)%{$reset_color%}$fg_bold[green]%}➜ %{$reset_color%}' +PROMPT='(%{$fg_bold[magenta]%}%n%{$reset_color%}@%{$fg_bold[blue]%}%m%{$reset_color%}) - (%{$fg_bold[blue]%}%T%{$reset_color%}) - (%{$fg_bold[blue]%}%~%{$reset_color%}%) +$(git_prompt_info)%{$reset_color%}$fg_bold[green]%}➜ %{$reset_color%}%{$fg_bold[green]%' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:%{$reset_color%}(%{$fg_bold[yellow]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" From 858da593a91986681b1caf28bbcd0745913f015a Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Tue, 4 Oct 2011 20:35:56 -0700 Subject: [PATCH 04/11] revert green color for stdin in prompt --- themes/jocelyn.zsh-theme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/jocelyn.zsh-theme b/themes/jocelyn.zsh-theme index 7c9d04b63..a741b8d09 100644 --- a/themes/jocelyn.zsh-theme +++ b/themes/jocelyn.zsh-theme @@ -1,5 +1,5 @@ PROMPT='(%{$fg_bold[magenta]%}%n%{$reset_color%}@%{$fg_bold[blue]%}%m%{$reset_color%}) - (%{$fg_bold[blue]%}%T%{$reset_color%}) - (%{$fg_bold[blue]%}%~%{$reset_color%}%) -$(git_prompt_info)%{$reset_color%}$fg_bold[green]%}➜ %{$reset_color%}%{$fg_bold[green]%' +$(git_prompt_info)%{$reset_color%}$fg_bold[green]%}➜ %{$reset_color%}' ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:%{$reset_color%}(%{$fg_bold[yellow]%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" From cd8af85db3f61c8546cfed9fec26d69b7fde8e65 Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Wed, 5 Oct 2011 16:33:01 -0700 Subject: [PATCH 05/11] Added another custom theme, based on theme information from: http://aperiodic.net/phil/prompt/ --- themes/jocelyn_new.zsh-theme | 108 +++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 themes/jocelyn_new.zsh-theme diff --git a/themes/jocelyn_new.zsh-theme b/themes/jocelyn_new.zsh-theme new file mode 100644 index 000000000..42f6889c9 --- /dev/null +++ b/themes/jocelyn_new.zsh-theme @@ -0,0 +1,108 @@ +function precmd { + local TERMWIDTH + (( TERMWIDTH = ${COLUMNS} - 1 )) +# Truncate the path if it's too long. + PR_FILLBAR="" + PR_PWDLEN="" + local promptsize=${#${(%):---(%n@%m:%l)---()--}} + local rubyprompt=`rvm_prompt_info` + local rubypromptsize=${#${rubyprompt}} + local pwdsize=${#${(%):-%~}} + if [[ "$promptsize + $rubypromptsize + $pwdsize" -gt $TERMWIDTH ]]; then + ((PR_PWDLEN=$TERMWIDTH - $promptsize)) + else + PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}" + fi +} + +setopt extended_glob +preexec () { + if [[ "$TERM" == "screen" ]]; then + local CMD=${1[(wr)^(*=*|sudo|-*)]} + echo -n "\ek$CMD\e\\" + fi +} + +setprompt () { +# Need this so the prompt will work. + setopt prompt_subst + +# See if we can use colors. + autoload colors zsh/terminfo + if [[ "$terminfo[colors]" -ge 8 ]]; then + colors + fi + for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE GREY; do + eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}' + eval PR_LIGHT_$color='%{$fg[${(L)color}]%}' + (( count = $count + 1 )) + done + PR_NO_COLOUR="%{$terminfo[sgr0]%}" + +# Modify Git prompt + ZSH_THEME_GIT_PROMPT_PREFIX="(%{$fg_bold[blue]%}git:%{$reset_color%}%{$fg_bold[yellow]%}" + ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_DIRTY="" + ZSH_THEME_GIT_PROMPT_CLEAN="" + ZSH_THEME_GIT_PROMPT_ADDED="(%{$fg[green]%}✚%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_MODIFIED="(%{$fg[blue]%}✹%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_DELETED="(%{$fg[red]%}✖%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_RENAMED="(%{$fg[magenta]%}➜%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_UNMERGED="(%{$fg[yellow]%}═%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_UNTRACKED="(%{$fg[cyan]%}✭%{$reset_color%})" + +# See if we can use extended characters to look nicer. + typeset -A altchar + set -A altchar ${(s..)terminfo[acsc]} + PR_SET_CHARSET="%{$terminfo[enacs]%}" + PR_SHIFT_IN="%{$terminfo[smacs]%}" + PR_SHIFT_OUT="%{$terminfo[rmacs]%}" + PR_HBAR=${altchar[q]:--} + PR_ULCORNER=${altchar[l]:--} + PR_LLCORNER=${altchar[m]:--} + PR_LRCORNER=${altchar[j]:--} + PR_URCORNER=${altchar[k]:--} + +# Decide if we need to set titlebar text. + case $TERM in + xterm*) + PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}' + ;; + screen) + PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}' + ;; + *) + PR_TITLEBAR='' + ;; + esac + +# Decide whether to set a screen title + if [[ "$TERM" == "screen" ]]; then + PR_STITLE=$'%{\ekzsh\e\\%}' + else + PR_STITLE='' + fi + +PROMPT='$PR_SET_CHARSET\ +$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR(\ +$PR_MAGENTA%n$PR_NO_COLOUR@$PR_BLUE%m$PR_NO_COLOUR)\ +$PR_SHIFT_IN$PR_HBAR$PR_HBAR${(e)PR_FILLBAR}$PR_HBAR\ +$PR_HBAR$PR_HBAR$PR_HBAR$PR_HBAR$PR_HBAR$PR_SHIFT_OUT\ +$PR_NO_COLOUR($PR_BLUE%$PR_PWDLEN<...<%~%<<\ +$PR_NO_COLOUR)\ +$PR_SHIFT_IN$PR_HBAR$PR_URCORNER$PR_SHIFT_OUT\ + +$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\ +`git_prompt_info`\ +`git_prompt_status`\ +$PR_SHIFT_IN$PR_HBAR\ +$PR_GREEN❯$PR_NO_COLOUR ' + +# display exitcode on the right when >0 +return_code="%(?..%{$fg[red]%}%? ↵ %{$reset_color%})" +RPROMPT='$return_code($PR_GREEN%D{%H:%M:%S}$PR_NO_COLOUR)$PR_SHIFT_IN$PR_HBAR$PR_LRCORNER$PR_SHIFT_OUT$PR_NO_COLOUR' + +PS2='$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\' +} + +setprompt \ No newline at end of file From b39fa51746e33f1a2c5f55410921cea7c1824172 Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Wed, 5 Oct 2011 16:33:34 -0700 Subject: [PATCH 06/11] quick update to new theme to 'bold' the git status symbols --- themes/jocelyn_new.zsh-theme | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/themes/jocelyn_new.zsh-theme b/themes/jocelyn_new.zsh-theme index 42f6889c9..c645e2f91 100644 --- a/themes/jocelyn_new.zsh-theme +++ b/themes/jocelyn_new.zsh-theme @@ -44,12 +44,12 @@ setprompt () { ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%})" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" - ZSH_THEME_GIT_PROMPT_ADDED="(%{$fg[green]%}✚%{$reset_color%})" - ZSH_THEME_GIT_PROMPT_MODIFIED="(%{$fg[blue]%}✹%{$reset_color%})" - ZSH_THEME_GIT_PROMPT_DELETED="(%{$fg[red]%}✖%{$reset_color%})" - ZSH_THEME_GIT_PROMPT_RENAMED="(%{$fg[magenta]%}➜%{$reset_color%})" - ZSH_THEME_GIT_PROMPT_UNMERGED="(%{$fg[yellow]%}═%{$reset_color%})" - ZSH_THEME_GIT_PROMPT_UNTRACKED="(%{$fg[cyan]%}✭%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_ADDED="(%{$fg_bold[green]%}✚%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_MODIFIED="(%{$fg_bold[blue]%}✹%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_DELETED="(%{$fg_bold[red]%}✖%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_RENAMED="(%{$fg_bold[magenta]%}➜%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_UNMERGED="(%{$fg_bold[yellow]%}═%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_UNTRACKED="(%{$fg_bold[cyan]%}✭%{$reset_color%})" # See if we can use extended characters to look nicer. typeset -A altchar From 279af3301c51d496f4417bd291d17f331a474cf2 Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Wed, 5 Oct 2011 17:55:35 -0700 Subject: [PATCH 07/11] Still tweaking new theme, added a really hack-ish method of colorizing command/input text, had to remove right prompt for this to work, and also moved exit codes >0 to the left of git prompt info. --- themes/jocelyn_new.zsh-theme | 43 ++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/themes/jocelyn_new.zsh-theme b/themes/jocelyn_new.zsh-theme index c645e2f91..b47b919d4 100644 --- a/themes/jocelyn_new.zsh-theme +++ b/themes/jocelyn_new.zsh-theme @@ -21,6 +21,7 @@ preexec () { local CMD=${1[(wr)^(*=*|sudo|-*)]} echo -n "\ek$CMD\e\\" fi + echo -en $reset_color } setprompt () { @@ -40,16 +41,16 @@ setprompt () { PR_NO_COLOUR="%{$terminfo[sgr0]%}" # Modify Git prompt - ZSH_THEME_GIT_PROMPT_PREFIX="(%{$fg_bold[blue]%}git:%{$reset_color%}%{$fg_bold[yellow]%}" - ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_PREFIX="$PR_MAGENTA($PR_BLUE% git:$PR_YELLOW" + ZSH_THEME_GIT_PROMPT_SUFFIX="$PR_MAGENTA)" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" - ZSH_THEME_GIT_PROMPT_ADDED="(%{$fg_bold[green]%}✚%{$reset_color%})" - ZSH_THEME_GIT_PROMPT_MODIFIED="(%{$fg_bold[blue]%}✹%{$reset_color%})" - ZSH_THEME_GIT_PROMPT_DELETED="(%{$fg_bold[red]%}✖%{$reset_color%})" - ZSH_THEME_GIT_PROMPT_RENAMED="(%{$fg_bold[magenta]%}➜%{$reset_color%})" - ZSH_THEME_GIT_PROMPT_UNMERGED="(%{$fg_bold[yellow]%}═%{$reset_color%})" - ZSH_THEME_GIT_PROMPT_UNTRACKED="(%{$fg_bold[cyan]%}✭%{$reset_color%})" + ZSH_THEME_GIT_PROMPT_ADDED="($PR_GREEN✚$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_MODIFIED="($PR_BLUE✹$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_DELETED="($PR_RED✖$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_RENAMED="($PR_MAGENTA➜$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_UNMERGED="($PR_YELLOW═$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_UNTRACKED="($PR_CYAN✭$PR_MAGENTA)" # See if we can use extended characters to look nicer. typeset -A altchar @@ -83,26 +84,24 @@ setprompt () { PR_STITLE='' fi +return_code="%(?..$PR_MAGENTA($PR_RED%? ↵ $PR_MAGENTA%))" + PROMPT='$PR_SET_CHARSET\ -$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR(\ -$PR_MAGENTA%n$PR_NO_COLOUR@$PR_BLUE%m$PR_NO_COLOUR)\ -$PR_SHIFT_IN$PR_HBAR$PR_HBAR${(e)PR_FILLBAR}$PR_HBAR\ -$PR_HBAR$PR_HBAR$PR_HBAR$PR_HBAR$PR_HBAR$PR_SHIFT_OUT\ -$PR_NO_COLOUR($PR_BLUE%$PR_PWDLEN<...<%~%<<\ -$PR_NO_COLOUR)\ -$PR_SHIFT_IN$PR_HBAR$PR_URCORNER$PR_SHIFT_OUT\ +$PR_MAGENTA$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ +$PR_BLUE%n$PR_MAGENTA@$PR_GREEN%m$PR_MAGENTA)\ +$PR_SHIFT_IN${(e)PR_FILLBAR}$PR_SHIFT_OUT\ +($PR_BLUE%$PR_PWDLEN<...<%~%<<\ +$PR_MAGENTA)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ +($PR_GREEN%D{%H:%M:%S}$PR_MAGENTA)\ $PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\ +$return_code\ `git_prompt_info`\ `git_prompt_status`\ -$PR_SHIFT_IN$PR_HBAR\ -$PR_GREEN❯$PR_NO_COLOUR ' +$PR_MAGENTA$PR_SHIFT_IN$PR_HBAR\ +$PR_GREEN❯$PR_SHIFT_OUT ' -# display exitcode on the right when >0 -return_code="%(?..%{$fg[red]%}%? ↵ %{$reset_color%})" -RPROMPT='$return_code($PR_GREEN%D{%H:%M:%S}$PR_NO_COLOUR)$PR_SHIFT_IN$PR_HBAR$PR_LRCORNER$PR_SHIFT_OUT$PR_NO_COLOUR' - -PS2='$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\' +PS2='$PR_MAGENTA$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_HBAR$PR_SHIFT_OUT$PR_GREEN\ ' } setprompt \ No newline at end of file From ea1cf305feeda976c446d080fad5c453abb884b6 Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Wed, 5 Oct 2011 23:07:06 -0700 Subject: [PATCH 08/11] added a couple new color variations on my new prompt theme. also switched to proper 'unset' syntax in zshmarks, instead of destroying variable by setting to null string --- plugins/zshmarks/zshmarks.plugin.zsh | 7 +- themes/jocelyn_new.zsh-theme | 22 +++--- themes/jocelyn_new2.zsh-theme | 107 +++++++++++++++++++++++++++ themes/jocelyn_new3.zsh-theme | 107 +++++++++++++++++++++++++++ 4 files changed, 226 insertions(+), 17 deletions(-) create mode 100644 themes/jocelyn_new2.zsh-theme create mode 100644 themes/jocelyn_new3.zsh-theme diff --git a/plugins/zshmarks/zshmarks.plugin.zsh b/plugins/zshmarks/zshmarks.plugin.zsh index 45b9d1061..80e419169 100644 --- a/plugins/zshmarks/zshmarks.plugin.zsh +++ b/plugins/zshmarks/zshmarks.plugin.zsh @@ -40,16 +40,11 @@ function go() { else dir="${bookmark%%|*}" cd "${dir}" - dir="" + unset dir fi } # Show a list of the bookmarks function showmarks() { cat ~/.bookmarks | awk '{ printf "%-40s%-40s%s\n",$1,$2,$3}' FS=\| -} - -# manually edit bookmarks -function editmarks() { - $EDITOR $bookmarks_file } \ No newline at end of file diff --git a/themes/jocelyn_new.zsh-theme b/themes/jocelyn_new.zsh-theme index b47b919d4..612bca944 100644 --- a/themes/jocelyn_new.zsh-theme +++ b/themes/jocelyn_new.zsh-theme @@ -4,7 +4,7 @@ function precmd { # Truncate the path if it's too long. PR_FILLBAR="" PR_PWDLEN="" - local promptsize=${#${(%):---(%n@%m:%l)---()--}} + local promptsize=${#${(%):--(%n@%m)-()-(%D{%H:%M:%})-}} local rubyprompt=`rvm_prompt_info` local rubypromptsize=${#${rubyprompt}} local pwdsize=${#${(%):-%~}} @@ -41,16 +41,16 @@ setprompt () { PR_NO_COLOUR="%{$terminfo[sgr0]%}" # Modify Git prompt - ZSH_THEME_GIT_PROMPT_PREFIX="$PR_MAGENTA($PR_BLUE% git:$PR_YELLOW" + ZSH_THEME_GIT_PROMPT_PREFIX="$PR_MAGENTA($PR_BLUE% git$PR_WHITE:$PR_YELLOW" ZSH_THEME_GIT_PROMPT_SUFFIX="$PR_MAGENTA)" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" - ZSH_THEME_GIT_PROMPT_ADDED="($PR_GREEN✚$PR_MAGENTA)" - ZSH_THEME_GIT_PROMPT_MODIFIED="($PR_BLUE✹$PR_MAGENTA)" - ZSH_THEME_GIT_PROMPT_DELETED="($PR_RED✖$PR_MAGENTA)" - ZSH_THEME_GIT_PROMPT_RENAMED="($PR_MAGENTA➜$PR_MAGENTA)" - ZSH_THEME_GIT_PROMPT_UNMERGED="($PR_YELLOW═$PR_MAGENTA)" - ZSH_THEME_GIT_PROMPT_UNTRACKED="($PR_CYAN✭$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_ADDED="$PR_MAGENTA($PR_GREEN✚$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_MODIFIED="$PR_MAGENTA($PR_BLUE✹$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_DELETED="$PR_MAGENTA($PR_RED✖$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_RENAMED="$PR_MAGENTA($PR_MAGENTA➜$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_UNMERGED="$PR_MAGENTA($PR_YELLOW═$PR_MAGENTA)" + ZSH_THEME_GIT_PROMPT_UNTRACKED="$PR_MAGENTA($PR_CYAN✭$PR_MAGENTA)" # See if we can use extended characters to look nicer. typeset -A altchar @@ -88,11 +88,11 @@ return_code="%(?..$PR_MAGENTA($PR_RED%? ↵ $PR_MAGENTA%))" PROMPT='$PR_SET_CHARSET\ $PR_MAGENTA$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ -$PR_BLUE%n$PR_MAGENTA@$PR_GREEN%m$PR_MAGENTA)\ -$PR_SHIFT_IN${(e)PR_FILLBAR}$PR_SHIFT_OUT\ +$PR_BLUE%n$PR_WHITE@$PR_CYAN%m$PR_MAGENTA)\ +$PR_SHIFT_IN$PR_HBAR${(e)PR_FILLBAR}$PR_SHIFT_OUT\ ($PR_BLUE%$PR_PWDLEN<...<%~%<<\ $PR_MAGENTA)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ -($PR_GREEN%D{%H:%M:%S}$PR_MAGENTA)\ +($PR_GREEN%D{%H}$PR_WHITE:$PR_GREEN%D{%M}$PR_WHITE:$PR_GREEN%D{%S}$PR_MAGENTA)\ $PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\ $return_code\ diff --git a/themes/jocelyn_new2.zsh-theme b/themes/jocelyn_new2.zsh-theme new file mode 100644 index 000000000..76a9ce4c4 --- /dev/null +++ b/themes/jocelyn_new2.zsh-theme @@ -0,0 +1,107 @@ +function precmd { + local TERMWIDTH + (( TERMWIDTH = ${COLUMNS} - 1 )) +# Truncate the path if it's too long. + PR_FILLBAR="" + PR_PWDLEN="" + local promptsize=${#${(%):--(%n@%m)-()-(%D{%H:%M:%})-}} + local rubyprompt=`rvm_prompt_info` + local rubypromptsize=${#${rubyprompt}} + local pwdsize=${#${(%):-%~}} + if [[ "$promptsize + $rubypromptsize + $pwdsize" -gt $TERMWIDTH ]]; then + ((PR_PWDLEN=$TERMWIDTH - $promptsize)) + else + PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}" + fi +} + +setopt extended_glob +preexec () { + if [[ "$TERM" == "screen" ]]; then + local CMD=${1[(wr)^(*=*|sudo|-*)]} + echo -n "\ek$CMD\e\\" + fi + echo -en $reset_color +} + +setprompt () { +# Need this so the prompt will work. + setopt prompt_subst + +# See if we can use colors. + autoload colors zsh/terminfo + if [[ "$terminfo[colors]" -ge 8 ]]; then + colors + fi + for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE GREY; do + eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}' + eval PR_LIGHT_$color='%{$fg[${(L)color}]%}' + (( count = $count + 1 )) + done + PR_NO_COLOUR="%{$terminfo[sgr0]%}" + +# Modify Git prompt + ZSH_THEME_GIT_PROMPT_PREFIX="$PR_WHITE($PR_BLUE% git:$PR_YELLOW" + ZSH_THEME_GIT_PROMPT_SUFFIX="$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_DIRTY="" + ZSH_THEME_GIT_PROMPT_CLEAN="" + ZSH_THEME_GIT_PROMPT_ADDED="$PR_WHITE($PR_GREEN✚$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_MODIFIED="$PR_WHITE($PR_BLUE✹$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_DELETED="$PR_WHITE($PR_RED✖$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_RENAMED="$PR_WHITE($PR_MAGENTA➜$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_UNMERGED="$PR_WHITE($PR_YELLOW═$PR_WHITE)" + ZSH_THEME_GIT_PROMPT_UNTRACKED="$PR_WHITE($PR_CYAN✭$PR_WHITE)" + +# See if we can use extended characters to look nicer. + typeset -A altchar + set -A altchar ${(s..)terminfo[acsc]} + PR_SET_CHARSET="%{$terminfo[enacs]%}" + PR_SHIFT_IN="%{$terminfo[smacs]%}" + PR_SHIFT_OUT="%{$terminfo[rmacs]%}" + PR_HBAR=${altchar[q]:--} + PR_ULCORNER=${altchar[l]:--} + PR_LLCORNER=${altchar[m]:--} + PR_LRCORNER=${altchar[j]:--} + PR_URCORNER=${altchar[k]:--} + +# Decide if we need to set titlebar text. + case $TERM in + xterm*) + PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}' + ;; + screen) + PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}' + ;; + *) + PR_TITLEBAR='' + ;; + esac + +# Decide whether to set a screen title + if [[ "$TERM" == "screen" ]]; then + PR_STITLE=$'%{\ekzsh\e\\%}' + else + PR_STITLE='' + fi + +return_code="%(?..$PR_MAGENTA($PR_RED%? ↵ $PR_MAGENTA%))" + +PROMPT='$PR_SET_CHARSET\ +$PR_WHITE$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ +$PR_MAGENTA%n$PR_WHITE@$PR_BLUE%m$PR_WHITE)\ +$PR_SHIFT_IN$PR_HBAR${(e)PR_FILLBAR}$PR_SHIFT_OUT\ +($PR_BLUE%$PR_PWDLEN<...<%~%<<\ +$PR_WHITE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ +($PR_GREEN%D{%H}$PR_WHITE:$PR_GREEN%D{%M}$PR_WHITE:$PR_GREEN%D{%S}$PR_WHITE)\ + +$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\ +$return_code\ +`git_prompt_info`\ +`git_prompt_status`\ +$PR_WHITE$PR_SHIFT_IN$PR_HBAR\ +$PR_GREEN❯$PR_SHIFT_OUT ' + +PS2='$PR_MAGENTA$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_HBAR$PR_SHIFT_OUT$PR_GREEN\ ' +} + +setprompt \ No newline at end of file diff --git a/themes/jocelyn_new3.zsh-theme b/themes/jocelyn_new3.zsh-theme new file mode 100644 index 000000000..0ad3a88b9 --- /dev/null +++ b/themes/jocelyn_new3.zsh-theme @@ -0,0 +1,107 @@ +function precmd { + local TERMWIDTH + (( TERMWIDTH = ${COLUMNS} - 1 )) +# Truncate the path if it's too long. + PR_FILLBAR="" + PR_PWDLEN="" + local promptsize=${#${(%):--(%n@%m)-()-(%D{%H:%M:%})-}} + local rubyprompt=`rvm_prompt_info` + local rubypromptsize=${#${rubyprompt}} + local pwdsize=${#${(%):-%~}} + if [[ "$promptsize + $rubypromptsize + $pwdsize" -gt $TERMWIDTH ]]; then + ((PR_PWDLEN=$TERMWIDTH - $promptsize)) + else + PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}" + fi +} + +setopt extended_glob +preexec () { + if [[ "$TERM" == "screen" ]]; then + local CMD=${1[(wr)^(*=*|sudo|-*)]} + echo -n "\ek$CMD\e\\" + fi + echo -en $reset_color +} + +setprompt () { +# Need this so the prompt will work. + setopt prompt_subst + +# See if we can use colors. + autoload colors zsh/terminfo + if [[ "$terminfo[colors]" -ge 8 ]]; then + colors + fi + for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE GREY; do + eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}' + eval PR_LIGHT_$color='%{$fg[${(L)color}]%}' + (( count = $count + 1 )) + done + PR_NO_COLOUR="%{$terminfo[sgr0]%}" + +# Modify Git prompt + ZSH_THEME_GIT_PROMPT_PREFIX="$PR_BLUE($PR_MAGENTA% git$PR_WHITE:$PR_YELLOW" + ZSH_THEME_GIT_PROMPT_SUFFIX="$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_DIRTY="" + ZSH_THEME_GIT_PROMPT_CLEAN="" + ZSH_THEME_GIT_PROMPT_ADDED="$PR_BLUE($PR_GREEN✚$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_MODIFIED="$PR_BLUE($PR_BLUE✹$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_DELETED="$PR_BLUE($PR_RED✖$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_RENAMED="$PR_BLUE($PR_MAGENTA➜$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_UNMERGED="$PR_BLUE($PR_YELLOW═$PR_BLUE)" + ZSH_THEME_GIT_PROMPT_UNTRACKED="$PR_BLUE($PR_CYAN✭$PR_BLUE)" + +# See if we can use extended characters to look nicer. + typeset -A altchar + set -A altchar ${(s..)terminfo[acsc]} + PR_SET_CHARSET="%{$terminfo[enacs]%}" + PR_SHIFT_IN="%{$terminfo[smacs]%}" + PR_SHIFT_OUT="%{$terminfo[rmacs]%}" + PR_HBAR=${altchar[q]:--} + PR_ULCORNER=${altchar[l]:--} + PR_LLCORNER=${altchar[m]:--} + PR_LRCORNER=${altchar[j]:--} + PR_URCORNER=${altchar[k]:--} + +# Decide if we need to set titlebar text. + case $TERM in + xterm*) + PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}' + ;; + screen) + PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}' + ;; + *) + PR_TITLEBAR='' + ;; + esac + +# Decide whether to set a screen title + if [[ "$TERM" == "screen" ]]; then + PR_STITLE=$'%{\ekzsh\e\\%}' + else + PR_STITLE='' + fi + +return_code="%(?..$PR_BLUE($PR_RED%? ↵ $PR_BLUE%))" + +PROMPT='$PR_SET_CHARSET\ +$PR_BLUE$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ +$PR_MAGENTA%n$PR_WHITE@$PR_CYAN%m$PR_BLUE)\ +$PR_SHIFT_IN$PR_HBAR${(e)PR_FILLBAR}$PR_SHIFT_OUT\ +($PR_MAGENTA%$PR_PWDLEN<...<%~%<<\ +$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ +($PR_GREEN%D{%H}$PR_WHITE:$PR_GREEN%D{%M}$PR_WHITE:$PR_GREEN%D{%S}$PR_BLUE)\ + +$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\ +$return_code\ +`git_prompt_info`\ +`git_prompt_status`\ +$PR_BLUE$PR_SHIFT_IN$PR_HBAR\ +$PR_GREEN❯$PR_SHIFT_OUT ' + +PS2='$PR_MAGENTA$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_HBAR$PR_SHIFT_OUT$PR_GREEN\ ' +} + +setprompt \ No newline at end of file From caf35710b517601f5362691a00a4999424844cec Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Thu, 6 Oct 2011 19:12:43 -0700 Subject: [PATCH 09/11] Fixed all variations of new prompt theme to obey re-enable oh-my-zsh auto-title support. Themes will obey the global DISABLE_AUTO_TITLE="true" setting in .zshrc file now too Plus minor tweaking to the color schemes, jocelyn_new2 = white lineart, jocelyn_new3 = blue lineart --- themes/jocelyn_new.zsh-theme | 44 +++++++++++++++-------------------- themes/jocelyn_new2.zsh-theme | 42 ++++++++++++++------------------- themes/jocelyn_new3.zsh-theme | 44 +++++++++++++++-------------------- 3 files changed, 56 insertions(+), 74 deletions(-) diff --git a/themes/jocelyn_new.zsh-theme b/themes/jocelyn_new.zsh-theme index 612bca944..e403acc01 100644 --- a/themes/jocelyn_new.zsh-theme +++ b/themes/jocelyn_new.zsh-theme @@ -1,7 +1,19 @@ +function title { + [ "$DISABLE_AUTO_TITLE" != "true" ] || return + if [[ "$TERM" == screen* ]]; then + print -Pn "\ek$1:q\e\\" + elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then + print -Pn "\e]2;$2:q\a" + print -Pn "\e]1;$1:q\a" + fi +} + +ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" +ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" + function precmd { local TERMWIDTH (( TERMWIDTH = ${COLUMNS} - 1 )) -# Truncate the path if it's too long. PR_FILLBAR="" PR_PWDLEN="" local promptsize=${#${(%):--(%n@%m)-()-(%D{%H:%M:%})-}} @@ -13,6 +25,7 @@ function precmd { else PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}" fi + title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE } setopt extended_glob @@ -21,14 +34,14 @@ preexec () { local CMD=${1[(wr)^(*=*|sudo|-*)]} echo -n "\ek$CMD\e\\" fi + local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} + title "$CMD" "%100>...>$2%<<" echo -en $reset_color } setprompt () { # Need this so the prompt will work. setopt prompt_subst - -# See if we can use colors. autoload colors zsh/terminfo if [[ "$terminfo[colors]" -ge 8 ]]; then colors @@ -41,7 +54,7 @@ setprompt () { PR_NO_COLOUR="%{$terminfo[sgr0]%}" # Modify Git prompt - ZSH_THEME_GIT_PROMPT_PREFIX="$PR_MAGENTA($PR_BLUE% git$PR_WHITE:$PR_YELLOW" + ZSH_THEME_GIT_PROMPT_PREFIX="$PR_MAGENTA($PR_BLUE% git:$PR_YELLOW" ZSH_THEME_GIT_PROMPT_SUFFIX="$PR_MAGENTA)" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" @@ -64,27 +77,8 @@ setprompt () { PR_LRCORNER=${altchar[j]:--} PR_URCORNER=${altchar[k]:--} -# Decide if we need to set titlebar text. - case $TERM in - xterm*) - PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}' - ;; - screen) - PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}' - ;; - *) - PR_TITLEBAR='' - ;; - esac - -# Decide whether to set a screen title - if [[ "$TERM" == "screen" ]]; then - PR_STITLE=$'%{\ekzsh\e\\%}' - else - PR_STITLE='' - fi - -return_code="%(?..$PR_MAGENTA($PR_RED%? ↵ $PR_MAGENTA%))" +# set return code to display if greater than zero + return_code="%(?..$PR_MAGENTA($PR_RED%? ↵ $PR_MAGENTA%))" PROMPT='$PR_SET_CHARSET\ $PR_MAGENTA$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ diff --git a/themes/jocelyn_new2.zsh-theme b/themes/jocelyn_new2.zsh-theme index 76a9ce4c4..7f102215b 100644 --- a/themes/jocelyn_new2.zsh-theme +++ b/themes/jocelyn_new2.zsh-theme @@ -1,7 +1,19 @@ +function title { + [ "$DISABLE_AUTO_TITLE" != "true" ] || return + if [[ "$TERM" == screen* ]]; then + print -Pn "\ek$1:q\e\\" + elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then + print -Pn "\e]2;$2:q\a" + print -Pn "\e]1;$1:q\a" + fi +} + +ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" +ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" + function precmd { local TERMWIDTH (( TERMWIDTH = ${COLUMNS} - 1 )) -# Truncate the path if it's too long. PR_FILLBAR="" PR_PWDLEN="" local promptsize=${#${(%):--(%n@%m)-()-(%D{%H:%M:%})-}} @@ -13,6 +25,7 @@ function precmd { else PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}" fi + title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE } setopt extended_glob @@ -21,14 +34,14 @@ preexec () { local CMD=${1[(wr)^(*=*|sudo|-*)]} echo -n "\ek$CMD\e\\" fi + local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} + title "$CMD" "%100>...>$2%<<" echo -en $reset_color } setprompt () { # Need this so the prompt will work. setopt prompt_subst - -# See if we can use colors. autoload colors zsh/terminfo if [[ "$terminfo[colors]" -ge 8 ]]; then colors @@ -64,27 +77,8 @@ setprompt () { PR_LRCORNER=${altchar[j]:--} PR_URCORNER=${altchar[k]:--} -# Decide if we need to set titlebar text. - case $TERM in - xterm*) - PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}' - ;; - screen) - PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}' - ;; - *) - PR_TITLEBAR='' - ;; - esac - -# Decide whether to set a screen title - if [[ "$TERM" == "screen" ]]; then - PR_STITLE=$'%{\ekzsh\e\\%}' - else - PR_STITLE='' - fi - -return_code="%(?..$PR_MAGENTA($PR_RED%? ↵ $PR_MAGENTA%))" +# set return code to display if greater than zero + return_code="%(?..$PR_WHITE($PR_RED%? ↵ $PR_WHITE%))" PROMPT='$PR_SET_CHARSET\ $PR_WHITE$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ diff --git a/themes/jocelyn_new3.zsh-theme b/themes/jocelyn_new3.zsh-theme index 0ad3a88b9..7668c692f 100644 --- a/themes/jocelyn_new3.zsh-theme +++ b/themes/jocelyn_new3.zsh-theme @@ -1,7 +1,19 @@ +function title { + [ "$DISABLE_AUTO_TITLE" != "true" ] || return + if [[ "$TERM" == screen* ]]; then + print -Pn "\ek$1:q\e\\" + elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then + print -Pn "\e]2;$2:q\a" + print -Pn "\e]1;$1:q\a" + fi +} + +ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" +ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" + function precmd { local TERMWIDTH (( TERMWIDTH = ${COLUMNS} - 1 )) -# Truncate the path if it's too long. PR_FILLBAR="" PR_PWDLEN="" local promptsize=${#${(%):--(%n@%m)-()-(%D{%H:%M:%})-}} @@ -13,6 +25,7 @@ function precmd { else PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $rubypromptsize + $pwdsize)))..${PR_HBAR}.)}" fi + title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE } setopt extended_glob @@ -21,14 +34,14 @@ preexec () { local CMD=${1[(wr)^(*=*|sudo|-*)]} echo -n "\ek$CMD\e\\" fi + local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} + title "$CMD" "%100>...>$2%<<" echo -en $reset_color } setprompt () { # Need this so the prompt will work. setopt prompt_subst - -# See if we can use colors. autoload colors zsh/terminfo if [[ "$terminfo[colors]" -ge 8 ]]; then colors @@ -41,7 +54,7 @@ setprompt () { PR_NO_COLOUR="%{$terminfo[sgr0]%}" # Modify Git prompt - ZSH_THEME_GIT_PROMPT_PREFIX="$PR_BLUE($PR_MAGENTA% git$PR_WHITE:$PR_YELLOW" + ZSH_THEME_GIT_PROMPT_PREFIX="$PR_BLUE($PR_MAGENTA% git:$PR_YELLOW" ZSH_THEME_GIT_PROMPT_SUFFIX="$PR_BLUE)" ZSH_THEME_GIT_PROMPT_DIRTY="" ZSH_THEME_GIT_PROMPT_CLEAN="" @@ -64,27 +77,8 @@ setprompt () { PR_LRCORNER=${altchar[j]:--} PR_URCORNER=${altchar[k]:--} -# Decide if we need to set titlebar text. - case $TERM in - xterm*) - PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}' - ;; - screen) - PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}' - ;; - *) - PR_TITLEBAR='' - ;; - esac - -# Decide whether to set a screen title - if [[ "$TERM" == "screen" ]]; then - PR_STITLE=$'%{\ekzsh\e\\%}' - else - PR_STITLE='' - fi - -return_code="%(?..$PR_BLUE($PR_RED%? ↵ $PR_BLUE%))" +# set return code to display if greater than zero + return_code="%(?..$PR_BLUE($PR_RED%? ↵ $PR_BLUE%))" PROMPT='$PR_SET_CHARSET\ $PR_BLUE$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ From 2dc12882af4af5a3b797bac26d7baa3296555963 Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Fri, 7 Oct 2011 13:54:56 -0700 Subject: [PATCH 10/11] Just still tweaking my new themes/prompts, cleaning up color consistency, etc. --- themes/jocelyn_new.zsh-theme | 4 ++-- themes/jocelyn_new3.zsh-theme | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/themes/jocelyn_new.zsh-theme b/themes/jocelyn_new.zsh-theme index e403acc01..9bdce4c06 100644 --- a/themes/jocelyn_new.zsh-theme +++ b/themes/jocelyn_new.zsh-theme @@ -82,11 +82,11 @@ setprompt () { PROMPT='$PR_SET_CHARSET\ $PR_MAGENTA$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ -$PR_BLUE%n$PR_WHITE@$PR_CYAN%m$PR_MAGENTA)\ +$PR_BLUE%n$PR_MAGENTA@$PR_CYAN%m$PR_MAGENTA)\ $PR_SHIFT_IN$PR_HBAR${(e)PR_FILLBAR}$PR_SHIFT_OUT\ ($PR_BLUE%$PR_PWDLEN<...<%~%<<\ $PR_MAGENTA)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ -($PR_GREEN%D{%H}$PR_WHITE:$PR_GREEN%D{%M}$PR_WHITE:$PR_GREEN%D{%S}$PR_MAGENTA)\ +($PR_GREEN%D{%H}$PR_MAGENTA:$PR_GREEN%D{%M}$PR_MAGENTA:$PR_GREEN%D{%S}$PR_MAGENTA)\ $PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\ $return_code\ diff --git a/themes/jocelyn_new3.zsh-theme b/themes/jocelyn_new3.zsh-theme index 7668c692f..d9872bb0f 100644 --- a/themes/jocelyn_new3.zsh-theme +++ b/themes/jocelyn_new3.zsh-theme @@ -82,11 +82,11 @@ setprompt () { PROMPT='$PR_SET_CHARSET\ $PR_BLUE$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ -$PR_MAGENTA%n$PR_WHITE@$PR_CYAN%m$PR_BLUE)\ +$PR_MAGENTA%n$PR_BLUE@$PR_YELLOW%m$PR_BLUE)\ $PR_SHIFT_IN$PR_HBAR${(e)PR_FILLBAR}$PR_SHIFT_OUT\ ($PR_MAGENTA%$PR_PWDLEN<...<%~%<<\ $PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT\ -($PR_GREEN%D{%H}$PR_WHITE:$PR_GREEN%D{%M}$PR_WHITE:$PR_GREEN%D{%S}$PR_BLUE)\ +($PR_GREEN%D{%H}$PR_BLUE:$PR_GREEN%D{%M}$PR_BLUE:$PR_GREEN%D{%S}$PR_BLUE)\ $PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR\ $return_code\ From 59e2f43237947074690fa32a15632fabeb728d0c Mon Sep 17 00:00:00 2001 From: Jocelyn Mallon Date: Sat, 8 Oct 2011 13:06:09 -0700 Subject: [PATCH 11/11] Added battery charge gauge from: http://stevelosh.com/blog/2010/02/my-extravagant-zsh-prompt/ to themes Battery gauge requires a python script, 'battcharge.py' added to $ZSH/lib/ directory to work properly. Cleaned up zshmarks again, now uses proper return codes in case bookmark not found, etc. --- lib/battcharge.py | 38 ++++++++++++++++++++++++++++ plugins/zshmarks/zshmarks.plugin.zsh | 29 +++++++++++---------- themes/jocelyn_new.zsh-theme | 9 ++++++- themes/jocelyn_new2.zsh-theme | 9 ++++++- themes/jocelyn_new3.zsh-theme | 9 ++++++- 5 files changed, 78 insertions(+), 16 deletions(-) create mode 100755 lib/battcharge.py diff --git a/lib/battcharge.py b/lib/battcharge.py new file mode 100755 index 000000000..e4aa4d4d8 --- /dev/null +++ b/lib/battcharge.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# coding=UTF-8 + +import math, subprocess + +p = subprocess.Popen(["ioreg", "-rc", "AppleSmartBattery"], stdout=subprocess.PIPE) +output = p.communicate()[0] + +o_max = [l for l in output.splitlines() if 'MaxCapacity' in l][0] +o_cur = [l for l in output.splitlines() if 'CurrentCapacity' in l][0] + +b_max = float(o_max.rpartition('=')[-1].strip()) +b_cur = float(o_cur.rpartition('=')[-1].strip()) + +charge = b_cur / b_max +charge_threshold = int(math.ceil(10 * charge)) + +# Output + +total_slots, slots = 10, [] +filled = int(math.ceil(charge_threshold * (total_slots / 10.0))) * u'▸' +empty = (total_slots - len(filled)) * u'▹' + +out = (filled + empty).encode('utf-8') +import sys + +color_green = '%{%}' +color_yellow = '%{%}' +color_red = '%{%}' +color_reset = '%{%}' +color_out = ( + color_green if len(filled) > 6 + else color_yellow if len(filled) > 4 + else color_red +) + +out = color_out + out + color_reset +sys.stdout.write(out) \ No newline at end of file diff --git a/plugins/zshmarks/zshmarks.plugin.zsh b/plugins/zshmarks/zshmarks.plugin.zsh index 80e419169..7a49154c9 100644 --- a/plugins/zshmarks/zshmarks.plugin.zsh +++ b/plugins/zshmarks/zshmarks.plugin.zsh @@ -13,19 +13,21 @@ if [[ ! -f $bookmarks_file ]]; then fi function bookmark() { - bookmark_name=$1 - if [[ -z $bookmark_name ]]; then - echo 'Invalid name, please provide a name for your bookmark. For example:' - echo ' bookmark foo' - else - bookmark="$(pwd)|$bookmark_name" # Store the bookmark as folder|name - if [[ -z $(grep "$bookmark" $bookmarks_file) ]]; then - echo $bookmark >> $bookmarks_file - echo "Bookmark '$bookmark_name' saved" - else - echo "Bookmark already existed" - fi - fi + bookmark_name=$1 + if [[ -z $bookmark_name ]]; then + echo 'Invalid name, please provide a name for your bookmark. For example:' + echo ' bookmark foo' + return 1 + else + bookmark="$(pwd)|$bookmark_name" # Store the bookmark as folder|name + if [[ -z $(grep "$bookmark" $bookmarks_file) ]]; then + echo $bookmark >> $bookmarks_file + echo "Bookmark '$bookmark_name' saved" + else + echo "Bookmark already existed" + return 1 + fi + fi } function go() { @@ -37,6 +39,7 @@ function go() { echo echo "To bookmark a folder, go to the folder then do this (naming the bookmark 'foo'):" echo " bookmark foo" + return 1 else dir="${bookmark%%|*}" cd "${dir}" diff --git a/themes/jocelyn_new.zsh-theme b/themes/jocelyn_new.zsh-theme index 9bdce4c06..0bac73a72 100644 --- a/themes/jocelyn_new.zsh-theme +++ b/themes/jocelyn_new.zsh-theme @@ -39,6 +39,11 @@ preexec () { echo -en $reset_color } +function battery_charge { + $ZSH/lib/battcharge.py + echo `$BAT_CHARGE` 2>/dev/null +} + setprompt () { # Need this so the prompt will work. setopt prompt_subst @@ -78,7 +83,7 @@ setprompt () { PR_URCORNER=${altchar[k]:--} # set return code to display if greater than zero - return_code="%(?..$PR_MAGENTA($PR_RED%? ↵ $PR_MAGENTA%))" + return_code="%(?..$PR_MAGENTA($PR_RED%?↩ $PR_MAGENTA%))" PROMPT='$PR_SET_CHARSET\ $PR_MAGENTA$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ @@ -95,6 +100,8 @@ $return_code\ $PR_MAGENTA$PR_SHIFT_IN$PR_HBAR\ $PR_GREEN❯$PR_SHIFT_OUT ' +RPROMPT='$(battery_charge)$PR_GREEN' + PS2='$PR_MAGENTA$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_HBAR$PR_SHIFT_OUT$PR_GREEN\ ' } diff --git a/themes/jocelyn_new2.zsh-theme b/themes/jocelyn_new2.zsh-theme index 7f102215b..9651ce97f 100644 --- a/themes/jocelyn_new2.zsh-theme +++ b/themes/jocelyn_new2.zsh-theme @@ -39,6 +39,11 @@ preexec () { echo -en $reset_color } +function battery_charge { + $ZSH/lib/battcharge.py + echo `$BAT_CHARGE` 2>/dev/null +} + setprompt () { # Need this so the prompt will work. setopt prompt_subst @@ -78,7 +83,7 @@ setprompt () { PR_URCORNER=${altchar[k]:--} # set return code to display if greater than zero - return_code="%(?..$PR_WHITE($PR_RED%? ↵ $PR_WHITE%))" + return_code="%(?..$PR_WHITE($PR_RED%?↩ $PR_WHITE%))" PROMPT='$PR_SET_CHARSET\ $PR_WHITE$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ @@ -95,6 +100,8 @@ $return_code\ $PR_WHITE$PR_SHIFT_IN$PR_HBAR\ $PR_GREEN❯$PR_SHIFT_OUT ' +RPROMPT='$(battery_charge)$PR_GREEN' + PS2='$PR_MAGENTA$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_HBAR$PR_SHIFT_OUT$PR_GREEN\ ' } diff --git a/themes/jocelyn_new3.zsh-theme b/themes/jocelyn_new3.zsh-theme index d9872bb0f..e59f39a41 100644 --- a/themes/jocelyn_new3.zsh-theme +++ b/themes/jocelyn_new3.zsh-theme @@ -39,6 +39,11 @@ preexec () { echo -en $reset_color } +function battery_charge { + $ZSH/lib/battcharge.py + echo `$BAT_CHARGE` 2>/dev/null +} + setprompt () { # Need this so the prompt will work. setopt prompt_subst @@ -78,7 +83,7 @@ setprompt () { PR_URCORNER=${altchar[k]:--} # set return code to display if greater than zero - return_code="%(?..$PR_BLUE($PR_RED%? ↵ $PR_BLUE%))" + return_code="%(?..$PR_BLUE($PR_RED%?↩ $PR_BLUE%))" PROMPT='$PR_SET_CHARSET\ $PR_BLUE$PR_SHIFT_IN$PR_ULCORNER$PR_HBAR$PR_SHIFT_OUT(\ @@ -95,6 +100,8 @@ $return_code\ $PR_BLUE$PR_SHIFT_IN$PR_HBAR\ $PR_GREEN❯$PR_SHIFT_OUT ' +RPROMPT='$(battery_charge)$PR_GREEN' + PS2='$PR_MAGENTA$PR_SHIFT_IN$PR_LLCORNER$PR_HBAR$PR_HBAR$PR_SHIFT_OUT$PR_GREEN\ ' }