* Documentation error @ 2011-12-10 17:09 gi1242+zsh 2011-12-10 17:37 ` Mikael Magnusson 0 siblings, 1 reply; 11+ messages in thread From: gi1242+zsh @ 2011-12-10 17:09 UTC (permalink / raw) To: zsh-workers Hi All, Is the following an error in the documentation from man zshcompsys: _example_caching_policy () { # rebuild if cache is more than a week old local -a oldp oldp=( "$1"(Nmw+1) ) (( $#oldp )) } Technically won't this rebuild the cache if it's more than TWO weeks old? "$1"(Nmw+0) seems to do one week old for me, GI -- A gossip is someone with a great sense of rumor. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Documentation error 2011-12-10 17:09 Documentation error gi1242+zsh @ 2011-12-10 17:37 ` Mikael Magnusson 2011-12-10 17:44 ` gi1242+zsh 0 siblings, 1 reply; 11+ messages in thread From: Mikael Magnusson @ 2011-12-10 17:37 UTC (permalink / raw) To: gi1242+zsh, zsh-workers On 10 December 2011 18:09, <gi1242+zsh@gmail.com> wrote: > Hi All, > > Is the following an error in the documentation from man zshcompsys: > > _example_caching_policy () { > # rebuild if cache is more than a week old > local -a oldp > oldp=( "$1"(Nmw+1) ) > (( $#oldp )) > } > > Technically won't this rebuild the cache if it's more than TWO weeks > old? "$1"(Nmw+0) seems to do one week old for me, It depends on what you mean by more than one week. The way it works in zsh is that -, +, and no sign are disjunct sets, so mw-1, mw1, mw+1 don't have any overlap. mw1 is any files that are one week old, which is 7-13 days, so more than that is 14 days old (two weeks). -- Mikael Magnusson ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Documentation error 2011-12-10 17:37 ` Mikael Magnusson @ 2011-12-10 17:44 ` gi1242+zsh 2011-12-10 18:29 ` Peter Stephenson 0 siblings, 1 reply; 11+ messages in thread From: gi1242+zsh @ 2011-12-10 17:44 UTC (permalink / raw) To: zsh-workers On Sat, Dec 10, 2011 at 06:37:04PM +0100, Mikael Magnusson wrote: >> Hi All, >> >> Is the following an error in the documentation from man zshcompsys: >> >> _example_caching_policy () { >> # rebuild if cache is more than a week old >> local -a oldp >> oldp=( "$1"(Nmw+1) ) >> (( $#oldp )) >> } >> >> Technically won't this rebuild the cache if it's more than TWO weeks >> old? "$1"(Nmw+0) seems to do one week old for me, > > It depends on what you mean by more than one week. The way it works in > zsh is that -, +, and no sign are disjunct sets, so mw-1, mw1, mw+1 > don't have any overlap. mw1 is any files that are one week old, which > is 7-13 days, so more than that is 14 days old (two weeks). Hmm. mw+1 gave me false for a 13 day old file, and true for a 15 day old file. But mw+0 gave me true for all files more than a week old. Reading the comment in the ZSH man page (included above), I'd guess it means that the cache will be rebuilt if it's more than 7 days old. However, it appears to only be rebuilt if it's more than 14 days old? Perhaps the comment above (or example above) should be changed to match up? [I'm of course not advocating any change in ZSH behaviour.] GI -- Chemicals: Noxious substances from which modern foods are made. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Documentation error 2011-12-10 17:44 ` gi1242+zsh @ 2011-12-10 18:29 ` Peter Stephenson 2011-12-10 18:54 ` Mikael Magnusson 0 siblings, 1 reply; 11+ messages in thread From: Peter Stephenson @ 2011-12-10 18:29 UTC (permalink / raw) To: zsh-workers On Sat, 10 Dec 2011 12:44:11 -0500 gi1242+zsh@gmail.com wrote: > >>... > >> # rebuild if cache is more than a week old > >> local -a oldp > >> oldp=( "$1"(Nmw+1) ) > >>... > >> Technically won't this rebuild the cache if it's more than TWO weeks > >> old? "$1"(Nmw+0) seems to do one week old for me, > > > > It depends on what you mean by more than one week. The way it works in > > zsh is that -, +, and no sign are disjunct sets, so mw-1, mw1, mw+1 > > don't have any overlap. mw1 is any files that are one week old, which > > is 7-13 days, so more than that is 14 days old (two weeks). > > Hmm. mw+1 gave me false for a 13 day old file, and true for a 15 day old > file. But mw+0 gave me true for all files more than a week old. > > Reading the comment in the ZSH man page (included above), I'd guess it > means that the cache will be rebuilt if it's more than 7 days old. > However, it appears to only be rebuilt if it's more than 14 days old? > > Perhaps the comment above (or example above) should be changed to match > up? [I'm of course not advocating any change in ZSH behaviour.] It does seem to violate the principle of least surprise --- the documentation for globbing qualifiers now has a long spiel about ignoring the fraction part of the difference in times to try to explain. Maybe +7 (days) is better? Of course there's still the same oddity at the level of a day but that's a good deal easier to sweep under the carpet. -- Peter Stephenson <p.w.stephenson@ntlworld.com> Web page now at http://homepage.ntlworld.com/p.w.stephenson/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Documentation error 2011-12-10 18:29 ` Peter Stephenson @ 2011-12-10 18:54 ` Mikael Magnusson 2011-12-10 19:26 ` Peter Stephenson 0 siblings, 1 reply; 11+ messages in thread From: Mikael Magnusson @ 2011-12-10 18:54 UTC (permalink / raw) To: Peter Stephenson; +Cc: zsh-workers On 10 December 2011 19:29, Peter Stephenson <p.w.stephenson@ntlworld.com> wrote: > On Sat, 10 Dec 2011 12:44:11 -0500 > gi1242+zsh@gmail.com wrote: >> >>... >> >> # rebuild if cache is more than a week old >> >> local -a oldp >> >> oldp=( "$1"(Nmw+1) ) >> >>... >> >> Technically won't this rebuild the cache if it's more than TWO weeks >> >> old? "$1"(Nmw+0) seems to do one week old for me, >> > >> > It depends on what you mean by more than one week. The way it works in >> > zsh is that -, +, and no sign are disjunct sets, so mw-1, mw1, mw+1 >> > don't have any overlap. mw1 is any files that are one week old, which >> > is 7-13 days, so more than that is 14 days old (two weeks). >> >> Hmm. mw+1 gave me false for a 13 day old file, and true for a 15 day old >> file. But mw+0 gave me true for all files more than a week old. >> >> Reading the comment in the ZSH man page (included above), I'd guess it >> means that the cache will be rebuilt if it's more than 7 days old. >> However, it appears to only be rebuilt if it's more than 14 days old? >> >> Perhaps the comment above (or example above) should be changed to match >> up? [I'm of course not advocating any change in ZSH behaviour.] > > It does seem to violate the principle of least surprise --- the > documentation for globbing qualifiers now has a long spiel about > ignoring the fraction part of the difference in times to try to explain. > Maybe +7 (days) is better? Of course there's still the same oddity at > the level of a day but that's a good deal easier to sweep under the > carpet. There's no day modifier :). -- Mikael Magnusson ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Documentation error 2011-12-10 18:54 ` Mikael Magnusson @ 2011-12-10 19:26 ` Peter Stephenson 2011-12-10 20:02 ` PATCH: _globquals: Say what the digit is when completing modification time qualifiers Mikael Magnusson 2011-12-10 20:13 ` Documentation error Peter Stephenson 0 siblings, 2 replies; 11+ messages in thread From: Peter Stephenson @ 2011-12-10 19:26 UTC (permalink / raw) To: zsh-workers On Sat, 10 Dec 2011 19:54:02 +0100 Mikael Magnusson <mikachu@gmail.com> wrote: > There's no day modifier :). It's the default, *(m+7) does it. (There could be perfectly well be a "d" modifier, too, to avoid suprises, however. I seem to remember it's caught me in the past.) -- Peter Stephenson <p.w.stephenson@ntlworld.com> Web page now at http://homepage.ntlworld.com/p.w.stephenson/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* PATCH: _globquals: Say what the digit is when completing modification time qualifiers 2011-12-10 19:26 ` Peter Stephenson @ 2011-12-10 20:02 ` Mikael Magnusson 2011-12-13 19:23 ` PATCH: _globquals: Say what the digit is when completing time qualifiers, add d Mikael Magnusson 2011-12-10 20:13 ` Documentation error Peter Stephenson 1 sibling, 1 reply; 11+ messages in thread From: Mikael Magnusson @ 2011-12-10 20:02 UTC (permalink / raw) To: zsh-workers How about something like this too? It changes the completion output to say what the digit means. % *(m<tab> === time specifier M -- months h -- hours m -- minutes s -- seconds w -- weeks === sense + -- more than - -- less than === digit (days) % *(mM<tab> === digit (months) --- Completion/Zsh/Type/_globquals | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/Completion/Zsh/Type/_globquals b/Completion/Zsh/Type/_globquals index 778dfa8..b47a34d 100644 --- a/Completion/Zsh/Type/_globquals +++ b/Completion/Zsh/Type/_globquals @@ -114,6 +114,10 @@ while [[ -n $PREFIX ]]; do if ! compset -P '([Mwhms]|)([-+]|)<->'; then # complete/skip relative time spec alts=() + () { + local timespec=$PREFIX[1] + local -A specmap + specmap=( M months w weeks h hours m minutes s seconds '' days ) if ! compset -P '[Mwhms]' && [[ -z $PREFIX ]]; then alts+=( "time-specifiers:time specifier:\ @@ -122,7 +126,8 @@ while [[ -n $PREFIX ]]; do if ! compset -P '[-+]' && [[ -z $PREFIX ]]; then alts+=("senses:sense:((-\:less\ than +\:more\ than))") fi - alts+=('digits:digit: ') + alts+=('digits:digit ('${${specmap[$timespec]}:-invalid time specifier}'): ') + } _alternative $alts return fi -- 1.7.5.4 ^ permalink raw reply [flat|nested] 11+ messages in thread
* PATCH: _globquals: Say what the digit is when completing time qualifiers, add d 2011-12-10 20:02 ` PATCH: _globquals: Say what the digit is when completing modification time qualifiers Mikael Magnusson @ 2011-12-13 19:23 ` Mikael Magnusson 2011-12-13 21:27 ` Peter Stephenson 0 siblings, 1 reply; 11+ messages in thread From: Mikael Magnusson @ 2011-12-13 19:23 UTC (permalink / raw) To: zsh-workers Added the d flag, and moved locals to top to get rid of anon function. It seems the scoping conflicts with compset -P somehow. I didn't notice at first that with my previous patch, *(mM<tab> would no longer output the +- hints, as you can see in the previous mail. Now it works: % *(mM<tab> === sense + -- more than - -- less than === digit (months) --- Completion/Zsh/Type/_globquals | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Completion/Zsh/Type/_globquals b/Completion/Zsh/Type/_globquals index 778dfa8..9de7742 100644 --- a/Completion/Zsh/Type/_globquals +++ b/Completion/Zsh/Type/_globquals @@ -1,7 +1,8 @@ #autoload -local state=qual expl char delim +local state=qual expl char delim timespec local -a alts +local -A specmap while [[ -n $PREFIX ]]; do char=$PREFIX[1] @@ -111,18 +112,19 @@ while [[ -n $PREFIX ]]; do ;; ([amc]) - if ! compset -P '([Mwhms]|)([-+]|)<->'; then + if ! compset -P '([Mwhmsd]|)([-+]|)<->'; then # complete/skip relative time spec alts=() - if ! compset -P '[Mwhms]' && [[ -z $PREFIX ]]; then - alts+=( - "time-specifiers:time specifier:\ -((M\:months w\:weeks h\:hours m:\minutes s\:seconds))") + timespec=$PREFIX[1] + if ! compset -P '[Mwhmsd]' && [[ -z $PREFIX ]]; then + alts+=("time-specifiers:time specifier:\ +((M\:months w\:weeks h\:hours m:\minutes s\:seconds d\:days))") fi if ! compset -P '[-+]' && [[ -z $PREFIX ]]; then alts+=("senses:sense:((-\:less\ than +\:more\ than))") fi - alts+=('digits:digit: ') + specmap=( M months w weeks h hours m minutes s seconds '(|+|-|d)' days) + alts+=('digits:digit ('${${specmap[(K)$timespec]}:-invalid time specifier}'):' ) _alternative $alts return fi -- 1.7.5.4 ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: PATCH: _globquals: Say what the digit is when completing time qualifiers, add d 2011-12-13 19:23 ` PATCH: _globquals: Say what the digit is when completing time qualifiers, add d Mikael Magnusson @ 2011-12-13 21:27 ` Peter Stephenson 0 siblings, 0 replies; 11+ messages in thread From: Peter Stephenson @ 2011-12-13 21:27 UTC (permalink / raw) To: zsh-workers On Tue, 13 Dec 2011 20:23:26 +0100 Mikael Magnusson <mikachu@gmail.com> wrote: > Added the d flag, and moved locals to top to get rid of anon function. > It seems the scoping conflicts with compset -P somehow. There are hooks to restore state after function calls in the completion system so you can use a different function to complete something else without too much work. Anonymous functions have the same effect as any other. -- Peter Stephenson <p.w.stephenson@ntlworld.com> Web page now at http://homepage.ntlworld.com/p.w.stephenson/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Documentation error 2011-12-10 19:26 ` Peter Stephenson 2011-12-10 20:02 ` PATCH: _globquals: Say what the digit is when completing modification time qualifiers Mikael Magnusson @ 2011-12-10 20:13 ` Peter Stephenson 2011-12-11 2:22 ` gi1242+zsh 1 sibling, 1 reply; 11+ messages in thread From: Peter Stephenson @ 2011-12-10 20:13 UTC (permalink / raw) To: zsh-workers On Sat, 10 Dec 2011 19:26:47 +0000 Peter Stephenson <p.w.stephenson@ntlworld.com> wrote: > (There could be perfectly well be a "d" modifier, too, to avoid suprises, > however. I seem to remember it's caught me in the past.) Can't see any harm; there's no clash with other syntax, since at least the number is mandatory. Index: Doc/Zsh/expn.yo =================================================================== RCS file: /cvsroot/zsh/zsh/Doc/Zsh/expn.yo,v retrieving revision 1.140 diff -p -u -r1.140 expn.yo --- Doc/Zsh/expn.yo 28 Aug 2011 16:38:28 -0000 1.140 +++ Doc/Zsh/expn.yo 10 Dec 2011 20:11:50 -0000 @@ -2430,7 +2430,8 @@ Files accessed more than var(n) days ago value (tt(PLUS())var(n)). Optional unit specifiers `tt(M)', `tt(w)', `tt(h)', `tt(m)' or `tt(s)' (e.g. `tt(ah5)') cause the check to be performed with months (of 30 days), weeks, hours, minutes or seconds -instead of days, respectively. +instead of days, respectively. An explicit `tt(d)' for days is also +allowed. Any fractional part of the difference between the access time and the current part in the appropriate units is ignored in the comparison. For Index: Src/glob.c =================================================================== RCS file: /cvsroot/zsh/zsh/Src/glob.c,v retrieving revision 1.78 diff -p -u -r1.78 glob.c --- Src/glob.c 7 Dec 2011 01:31:21 -0000 1.78 +++ Src/glob.c 10 Dec 2011 20:11:50 -0000 @@ -1530,6 +1530,8 @@ zglob(LinkList list, LinkNode np, int no g_units = TT_MONTHS, ++s; else if (*s == 's') g_units = TT_SECONDS, ++s; + else if (*s == 'd') + ++s; } /* See if it's greater than, equal to, or less than */ if ((g_range = *s == '+' ? 1 : *s == '-' ? -1 : 0)) -- Peter Stephenson <p.w.stephenson@ntlworld.com> Web page now at http://homepage.ntlworld.com/p.w.stephenson/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Documentation error 2011-12-10 20:13 ` Documentation error Peter Stephenson @ 2011-12-11 2:22 ` gi1242+zsh 0 siblings, 0 replies; 11+ messages in thread From: gi1242+zsh @ 2011-12-11 2:22 UTC (permalink / raw) To: Peter Stephenson; +Cc: zsh-workers On Sat, Dec 10, 2011 at 08:13:50PM +0000, Peter Stephenson wrote: >> (There could be perfectly well be a "d" modifier, too, to avoid suprises, >> however. I seem to remember it's caught me in the past.) > > Can't see any harm; there's no clash with other syntax, since at least > the number is mandatory. Great! I first tried replacing mw+1 with md+7, got caught and removed the d. Accepting a "d" modifier reduces surprise. About the completion documentation, what was the verdict? If you just change oldp=( "$1"(Nmw+1) ) to oldp=( "$1"(Nmw+0) ) in the zshcompsys man page (in the cache_invalid example), it will surprise novices much less. Not the end of the world if you don't change it though... Best, GI -- TEN SURE SIGNS THE RECESSION HAS HIT REALLY HARD 5. McDonald's is selling the 1/4 ouncer. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2011-12-13 21:27 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2011-12-10 17:09 Documentation error gi1242+zsh 2011-12-10 17:37 ` Mikael Magnusson 2011-12-10 17:44 ` gi1242+zsh 2011-12-10 18:29 ` Peter Stephenson 2011-12-10 18:54 ` Mikael Magnusson 2011-12-10 19:26 ` Peter Stephenson 2011-12-10 20:02 ` PATCH: _globquals: Say what the digit is when completing modification time qualifiers Mikael Magnusson 2011-12-13 19:23 ` PATCH: _globquals: Say what the digit is when completing time qualifiers, add d Mikael Magnusson 2011-12-13 21:27 ` Peter Stephenson 2011-12-10 20:13 ` Documentation error Peter Stephenson 2011-12-11 2:22 ` gi1242+zsh
Code repositories for project(s) associated with this public inbox https://git.vuxu.org/mirror/zsh/ This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).