* [PATCH 2/5] vcs_info examples: Make the quilt-patch-dir example friendlier.
2019-12-21 15:58 [PATCH 1/5] vcs_info examples: Add an example of showing Git environment variables Daniel Shahaf
@ 2019-12-21 15:58 ` Daniel Shahaf
2019-12-21 15:58 ` [PATCH 3/5] vcs_info quilt: Improve support for svn-style patch headers Daniel Shahaf
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Daniel Shahaf @ 2019-12-21 15:58 UTC (permalink / raw)
To: zsh-workers
- Document that no code at all is necessary for Pareto correctness
- Remove a recommendation to rely on implementation details (${rrn});
instead, rely only on ${context}, which is a documented API.
---
Misc/vcs_info-examples | 30 ++++++++++++++++++------------
1 file changed, 18 insertions(+), 12 deletions(-)
diff --git a/Misc/vcs_info-examples b/Misc/vcs_info-examples
index 028fe62b0..456b3a85b 100644
--- a/Misc/vcs_info-examples
+++ b/Misc/vcs_info-examples
@@ -468,8 +468,16 @@ zstyle ':vcs_info:-quilt-.quilt-standalone:*:*' quilt-patch-dir debian/patches
# and so we want addon mode to also use a $QUILT_PATCHES value of
# `debian/patches' in some directories. In the other directories we never
# want the default `patches' though but a dedicated place for them.
-# Say `~/patches/<repository-name>'. Now we'll use some evaluated-style
-# magic to achieve all that:
+# Say `~/patches/<repository-name>'.
+#
+# First of all, even without any configuration, vcs_info will do the right
+# thing most of the time. Whenever quilt has already run in a directory,
+# vcs_info will figure out whether that directory uses `patches' or
+# `debian/patches' by interrogating metadata in the `.pc/' subdirectory,
+# which quilt creates. To make vcs_info find the patches dir correctly even
+# when the `.pc/' directory doesn't exist, read on.
+#
+# We'll use some evaluated-style magic to achieve that:
zstyle -e ':vcs_info:*.quilt-addon:*:*' quilt-patch-dir 'my-patches-func'
# That runs something called `my-patches-func', and the value of $reply is
@@ -486,19 +494,17 @@ function my-patches-func() {
fi
# Now the part about the dedicated directory is a little trickier.
- # It requires some knowledge of vcs_info's internals. Not much though.
- # Everything about this is described in the manual because this
- # variable (plus a few others) may be of interest in hooks, where
- # they are available, too.
- #
- # The variable in question here is `$rrn' which is an abbreviation
- # of repository-root-name. if you're in
+ # The variable in question here is `$context', which is the zstyle
+ # context used for lookups. Its last component is the repository-root-name,
+ # or ${rrn} for short. If you're in
# /usr/src/zsh/Functions
# and the repository being
# /usr/src/zsh
- # then the value of `$rrn' is `zsh'. Now in case the variable is
- # empty (it shouldn't at this point, but you never know), let's
- # drop back to quilt's default "patches".
+ # then the value of `$rrn' would be `zsh'.
+ local rrn=${context##*:}
+
+ # Now, in case the variable is empty (it shouldn't at this point, but you
+ # never know), let's drop back to quilt's default value, "patches".
if [[ -z ${rrn} ]]; then
reply=( patches )
return 0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/5] vcs_info quilt: Improve support for svn-style patch headers.
2019-12-21 15:58 [PATCH 1/5] vcs_info examples: Add an example of showing Git environment variables Daniel Shahaf
2019-12-21 15:58 ` [PATCH 2/5] vcs_info examples: Make the quilt-patch-dir example friendlier Daniel Shahaf
@ 2019-12-21 15:58 ` Daniel Shahaf
2019-12-21 15:58 ` [PATCH 4/5] vcs_info docs: Clarify documentation of the %p/%u/%a patch-format expandos Daniel Shahaf
2019-12-21 15:58 ` [PATCH 5/5] zshmodules: Explicitly document the return values of the 'zstyle' getters -s, -b, and -a Daniel Shahaf
3 siblings, 0 replies; 5+ messages in thread
From: Daniel Shahaf @ 2019-12-21 15:58 UTC (permalink / raw)
To: zsh-workers
Additional lines between the |-separated header line and the actual
log message, as generated by 'svn log -v' and 'svn log -g', are now
supported.
This change affects you if you have quilt patches with 'svn log'-style
information in their headers, regardless of whether you use quilt
standalone, quilt over svn, or quilt over some other VCS.
---
Functions/VCS_Info/VCS_INFO_patch2subject | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/Functions/VCS_Info/VCS_INFO_patch2subject b/Functions/VCS_Info/VCS_INFO_patch2subject
index a48c16b04..a467edcdb 100644
--- a/Functions/VCS_Info/VCS_INFO_patch2subject
+++ b/Functions/VCS_Info/VCS_INFO_patch2subject
@@ -14,10 +14,7 @@
IFS= read -r "lines[$i]"
if [[ -z ${lines[$i]} ]] || [[ ${lines[$i]} == (#b)(---[^-]|Index:)* ]]; then
lines[$i]=()
- # For 'svn log -r N --diff' output, read the first paragraph too.
- if ! [[ $lines[i-1] =~ $svn_log_pattern ]]; then
- break
- fi
+ break
fi
done < "$1"
@@ -55,9 +52,18 @@
fi
} < "$1"
REPLY=$needle
- elif [[ $lines[2] =~ $svn_log_pattern ]]; then
- REPLY=$lines[4]
- if (( ${+lines[5]} )); then REPLY+='...'; fi
+ elif [[ $lines[1] =~ $svn_log_pattern ]] || [[ $lines[2] =~ $svn_log_pattern ]]; then
+ # Read up to the next blank line, and the first two lines after it.
+ integer multiline=0
+ {
+ while read -r needle; [[ -n $needle ]]; do done
+ # Read the first line of the second paragraph, which is the first
+ # line of the log message.
+ read -r needle
+ read -r && [[ -n $REPLY ]] && multiline=1
+ } < "$1"
+ REPLY=$needle
+ if (( multiline )); then REPLY+='...'; fi
elif (( ${+lines[1]} )); then
# The first line of the file is not part of the diff.
REPLY=${lines[1]}
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 4/5] vcs_info docs: Clarify documentation of the %p/%u/%a patch-format expandos.
2019-12-21 15:58 [PATCH 1/5] vcs_info examples: Add an example of showing Git environment variables Daniel Shahaf
2019-12-21 15:58 ` [PATCH 2/5] vcs_info examples: Make the quilt-patch-dir example friendlier Daniel Shahaf
2019-12-21 15:58 ` [PATCH 3/5] vcs_info quilt: Improve support for svn-style patch headers Daniel Shahaf
@ 2019-12-21 15:58 ` Daniel Shahaf
2019-12-21 15:58 ` [PATCH 5/5] zshmodules: Explicitly document the return values of the 'zstyle' getters -s, -b, and -a Daniel Shahaf
3 siblings, 0 replies; 5+ messages in thread
From: Daniel Shahaf @ 2019-12-21 15:58 UTC (permalink / raw)
To: zsh-workers
---
Doc/Zsh/contrib.yo | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Doc/Zsh/contrib.yo b/Doc/Zsh/contrib.yo
index d51fd518b..558342711 100644
--- a/Doc/Zsh/contrib.yo
+++ b/Doc/Zsh/contrib.yo
@@ -1343,11 +1343,11 @@ endsitem()
In tt(patch-format) and tt(nopatch-format) these replacements are done:
startsitem()
-sitem(tt(%p))(The name of the top-most applied patch (tt(applied-string)).)
-sitem(tt(%u))(The number of unapplied patches (tt(unapplied-string)).)
+sitem(tt(%p))(The name of the top-most applied patch; may be overridden by the tt(applied-string) hook.)
+sitem(tt(%u))(The number of unapplied patches; may be overridden by the tt(unapplied-string) hook.)
sitem(tt(%n))(The number of applied patches.)
sitem(tt(%c))(The number of unapplied patches.)
-sitem(tt(%a))(The number of all patches.)
+sitem(tt(%a))(The number of all patches (tt(%a = %n + %c)).)
sitem(tt(%g))(The names of active tt(mq) guards (tt(hg) backend).)
sitem(tt(%G))(The number of active tt(mq) guards (tt(hg) backend).)
endsitem()
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 5/5] zshmodules: Explicitly document the return values of the 'zstyle' getters -s, -b, and -a.
2019-12-21 15:58 [PATCH 1/5] vcs_info examples: Add an example of showing Git environment variables Daniel Shahaf
` (2 preceding siblings ...)
2019-12-21 15:58 ` [PATCH 4/5] vcs_info docs: Clarify documentation of the %p/%u/%a patch-format expandos Daniel Shahaf
@ 2019-12-21 15:58 ` Daniel Shahaf
3 siblings, 0 replies; 5+ messages in thread
From: Daniel Shahaf @ 2019-12-21 15:58 UTC (permalink / raw)
To: zsh-workers
---
Doc/Zsh/mod_zutil.yo | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Doc/Zsh/mod_zutil.yo b/Doc/Zsh/mod_zutil.yo
index fa1f7b3ea..1e35d2245 100644
--- a/Doc/Zsh/mod_zutil.yo
+++ b/Doc/Zsh/mod_zutil.yo
@@ -81,17 +81,23 @@ item(tt(zstyle -s) var(context) var(style) var(name) [ var(sep) ])(
The parameter var(name) is set to the value of the style interpreted as a
string. If the value contains several strings they are concatenated with
spaces (or with the var(sep) string if that is given) between them.
+
+Return tt(0) if the style is set, tt(1) otherwise.
)
item(tt(zstyle -b) var(context) var(style) var(name))(
The value is stored in var(name) as a boolean, i.e. as the string
`tt(yes)' if the value has only one string and that string is equal to one
of `tt(yes)', `tt(true)', `tt(on)', or `tt(1)'. If the value is any other
string or has more than one string, the parameter is set to `tt(no)'.
+
+Return tt(0) if var(name) is set to `tt(yes)', tt(1) otherwise.
)
item(tt(zstyle -a) var(context) var(style) var(name))(
The value is stored in var(name) as an array. If var(name) is declared
as an associative array, the first, third, etc. strings are used as the
keys and the other strings are used as the values.
+
+Return tt(0) if the style is set, tt(1) otherwise.
)
xitem(tt(zstyle -t) var(context) var(style) [ var(string) ... ])
item(tt(zstyle -T) var(context) var(style) [ var(string) ... ])(
^ permalink raw reply [flat|nested] 5+ messages in thread