From 10ffa4fe992e56a93396ed8914eba74821bb2cca Mon Sep 17 00:00:00 2001 From: Christian Ferbar Date: Tue, 27 Sep 2016 12:27:37 +0200 Subject: Add README to svn plugin --- plugins/svn/README.md | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 plugins/svn/README.md (limited to 'plugins/svn') diff --git a/plugins/svn/README.md b/plugins/svn/README.md new file mode 100644 index 000000000..b8eff70f5 --- /dev/null +++ b/plugins/svn/README.md @@ -0,0 +1,64 @@ +# `svn` plugin + +This plugin adds some utility functions to display additional information regarding your current +svn repsitiory. See http://subversion.apache.org/ for the full svn documentation. + +## Functions + +| Command | Description | +|:-----------------------|:----------------------------------------| +|svn_prompt_info | prompt for some themes | +|in_svn | within svn directory | +|svn_get_repo_name | | +|svn_get_branch_name | branch name (see caveats) | +|svn_get_rev_nr | revision number | +|svn_dirty | changes in this subversion repo | + +## Caveats + +The plugin expects the first directory to be the current branch / tag / trunk. So, it returns +the first path element if you don't use branches. + +## Usage + +To use it, add `svn` to your plugins array: +```sh +plugins=(... svn) +``` + +### Agnoster theme git-like prompt + +Enable the svn plugin and add the followind lines to your ```~/.zshrc``` + +```shell +prompt_svn() { + local rev branch + if in_svn; then + rev=$(svn_get_rev_nr) + branch=$(svn_get_branch_name) + if [ `svn_dirty_choose_pwd 1 0` -eq 1 ]; then + prompt_segment yellow black + echo -n "$rev@$branch" + echo -n "±" + else + prompt_segment green black + echo -n "$rev@$branch" + fi + fi +} +``` + +override the agnoster build_prompt() function: + +```shell +build_prompt() { + RETVAL=$? + prompt_status + prompt_context + prompt_dir + prompt_git + prompt_svn + prompt_end +} +``` + -- cgit v1.2.3-70-g09d2 From 364019a3c9c4ef08d2d7f0752c0ac008293d62df Mon Sep 17 00:00:00 2001 From: Christian Ferbar Date: Tue, 27 Sep 2016 12:29:25 +0200 Subject: Add localization workaround to svn plugin --- plugins/svn/svn.plugin.zsh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'plugins/svn') diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh index 816055afe..e95ee9d99 100644 --- a/plugins/svn/svn.plugin.zsh +++ b/plugins/svn/svn.plugin.zsh @@ -25,14 +25,14 @@ function in_svn() { function svn_get_repo_name() { if in_svn; then - svn info | sed -n 's/Repository\ Root:\ .*\///p' | read SVN_ROOT - svn info | sed -n "s/URL:\ .*$SVN_ROOT\///p" + LANG=C svn info | sed -n 's/^Repository\ Root:\ .*\///p' | read SVN_ROOT + LANG=C svn info | sed -n "s/^URL:\ .*$SVN_ROOT\///p" fi } function svn_get_branch_name() { local _DISPLAY=$( - svn info 2> /dev/null | \ + LANG=C svn info 2> /dev/null | \ awk -F/ \ '/^URL:/ { \ for (i=0; i<=NF; i++) { \ @@ -54,13 +54,13 @@ function svn_get_branch_name() { function svn_get_rev_nr() { if in_svn; then - svn info 2> /dev/null | sed -n 's/Revision:\ //p' + LANG=C svn info 2> /dev/null | sed -n 's/Revision:\ //p' fi } function svn_dirty_choose() { if in_svn; then - local root=`svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p'` + local root=`LANG=C svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p'` if $(svn status $root 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'); then # Grep exits with 0 when "One or more lines were selected", return "dirty". echo $1 -- cgit v1.2.3-70-g09d2 From f573247a59773f47b1741967335ec6c495bcf4b4 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Thu, 29 Sep 2016 13:56:16 +0200 Subject: Clean up svn README --- plugins/svn/README.md | 93 ++++++++++++++++++++++++++------------------------- 1 file changed, 48 insertions(+), 45 deletions(-) (limited to 'plugins/svn') diff --git a/plugins/svn/README.md b/plugins/svn/README.md index b8eff70f5..1f7b70c86 100644 --- a/plugins/svn/README.md +++ b/plugins/svn/README.md @@ -1,64 +1,67 @@ # `svn` plugin This plugin adds some utility functions to display additional information regarding your current -svn repsitiory. See http://subversion.apache.org/ for the full svn documentation. +svn repository. See http://subversion.apache.org/ for the full svn documentation. + +To use it, add `svn` to your plugins array: + +```zsh +plugins=(... svn) +``` ## Functions -| Command | Description | -|:-----------------------|:----------------------------------------| -|svn_prompt_info | prompt for some themes | -|in_svn | within svn directory | -|svn_get_repo_name | | -|svn_get_branch_name | branch name (see caveats) | -|svn_get_rev_nr | revision number | -|svn_dirty | changes in this subversion repo | +| Command | Description | +|:----------------------|:--------------------------------------------| +| `svn_prompt_info` | Shows svn prompt in themes | +| `in_svn` | Checks if we're in an svn repository | +| `svn_get_repo_name` | Get repository name | +| `svn_get_branch_name` | Get branch name (see [caveats](#caveats)) | +| `svn_get_rev_nr` | Get revision number | +| `svn_dirty` | Checks if there are changes in the svn repo | ## Caveats -The plugin expects the first directory to be the current branch / tag / trunk. So, it returns +The plugin expects the first directory to be the current branch / tag / trunk. So it returns the first path element if you don't use branches. -## Usage +## Usage on themes -To use it, add `svn` to your plugins array: -```sh -plugins=(... svn) -``` +To use this in the `agnoster` theme follow these instructions: -### Agnoster theme git-like prompt +1. Enable the svn plugin -Enable the svn plugin and add the followind lines to your ```~/.zshrc``` +2. Add the following lines to your `zshrc` file: -```shell -prompt_svn() { - local rev branch - if in_svn; then - rev=$(svn_get_rev_nr) - branch=$(svn_get_branch_name) - if [ `svn_dirty_choose_pwd 1 0` -eq 1 ]; then - prompt_segment yellow black - echo -n "$rev@$branch" - echo -n "±" - else - prompt_segment green black - echo -n "$rev@$branch" + ```shell + prompt_svn() { + local rev branch + if in_svn; then + rev=$(svn_get_rev_nr) + branch=$(svn_get_branch_name) + if [[ $(svn_dirty_choose_pwd 1 0) -eq 1 ]]; then + prompt_segment yellow black + echo -n "$rev@$branch" + echo -n "±" + else + prompt_segment green black + echo -n "$rev@$branch" + fi fi - fi -} -``` + } + ``` -override the agnoster build_prompt() function: +3. Override the agnoster `build_prompt()` function: -```shell -build_prompt() { - RETVAL=$? - prompt_status - prompt_context - prompt_dir - prompt_git - prompt_svn - prompt_end -} -``` + ```zsh + build_prompt() { + RETVAL=$? + prompt_status + prompt_context + prompt_dir + prompt_git + prompt_svn + prompt_end + } + ``` -- cgit v1.2.3-70-g09d2 From e6df0e036e39bcc2c20d7feaef1749d3c4f2768f Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Thu, 29 Sep 2016 14:03:09 +0200 Subject: Clean up and refactor code in svn plugin --- plugins/svn/svn.plugin.zsh | 48 +++++++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) (limited to 'plugins/svn') diff --git a/plugins/svn/svn.plugin.zsh b/plugins/svn/svn.plugin.zsh index e95ee9d99..fbc9ee538 100644 --- a/plugins/svn/svn.plugin.zsh +++ b/plugins/svn/svn.plugin.zsh @@ -1,9 +1,7 @@ -# vim:ft=zsh ts=2 sw=2 sts=2 -# -function svn_prompt_info() { +svn_prompt_info() { local _DISPLAY if in_svn; then - if [ "x$SVN_SHOW_BRANCH" = "xtrue" ]; then + if [[ "$SVN_SHOW_BRANCH" = true ]]; then unset SVN_SHOW_BRANCH _DISPLAY=$(svn_get_branch_name) else @@ -16,21 +14,18 @@ $ZSH_THEME_REPO_NAME_COLOR$_DISPLAY$ZSH_PROMPT_BASE_COLOR$ZSH_THEME_SVN_PROMPT_S } -function in_svn() { - if $(svn info >/dev/null 2>&1); then - return 0 - fi - return 1 +in_svn() { + svn info >/dev/null 2>&1 } -function svn_get_repo_name() { +svn_get_repo_name() { if in_svn; then LANG=C svn info | sed -n 's/^Repository\ Root:\ .*\///p' | read SVN_ROOT LANG=C svn info | sed -n "s/^URL:\ .*$SVN_ROOT\///p" fi } -function svn_get_branch_name() { +svn_get_branch_name() { local _DISPLAY=$( LANG=C svn info 2> /dev/null | \ awk -F/ \ @@ -44,24 +39,28 @@ function svn_get_branch_name() { } \ }' ) - - if [ "x$_DISPLAY" = "x" ]; then + + if [[ -z "$_DISPLAY" ]]; then svn_get_repo_name else echo $_DISPLAY fi } -function svn_get_rev_nr() { +svn_get_rev_nr() { if in_svn; then LANG=C svn info 2> /dev/null | sed -n 's/Revision:\ //p' fi } -function svn_dirty_choose() { +svn_dirty() { + svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN +} + +svn_dirty_choose() { if in_svn; then - local root=`LANG=C svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p'` - if $(svn status $root 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'); then + local root=$(LANG=C svn info 2> /dev/null | sed -n 's/^Working Copy Root Path: //p') + if svn status $root 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'; then # Grep exits with 0 when "One or more lines were selected", return "dirty". echo $1 else @@ -71,14 +70,13 @@ function svn_dirty_choose() { fi } -function svn_dirty() { - svn_dirty_choose $ZSH_THEME_SVN_PROMPT_DIRTY $ZSH_THEME_SVN_PROMPT_CLEAN +svn_dirty_pwd () { + svn_dirty_choose_pwd $ZSH_THEME_SVN_PROMPT_DIRTY_PWD $ZSH_THEME_SVN_PROMPT_CLEAN_PWD } -function svn_dirty_choose_pwd () { +svn_dirty_choose_pwd () { if in_svn; then - local root=$PWD - if $(svn status $root 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'); then + if svn status "$PWD" 2> /dev/null | command grep -Eq '^\s*[ACDIM!?L]'; then # Grep exits with 0 when "One or more lines were selected", return "dirty". echo $1 else @@ -87,9 +85,3 @@ function svn_dirty_choose_pwd () { fi fi } - -function svn_dirty_pwd () { - svn_dirty_choose_pwd $ZSH_THEME_SVN_PROMPT_DIRTY_PWD $ZSH_THEME_SVN_PROMPT_CLEAN_PWD -} - - -- cgit v1.2.3-70-g09d2