diff options
author | Peter Stephenson <pws@users.sourceforge.net> | 2008-12-10 13:30:27 +0000 |
---|---|---|
committer | Peter Stephenson <pws@users.sourceforge.net> | 2008-12-10 13:30:27 +0000 |
commit | 37a4dce4bc5b38a686516e22d0dc81a90b757d91 (patch) | |
tree | fe372a4b26198b41ccad2f0ac28613abd39c55df | |
parent | 63e60d3d21ebfd985d83a5359b8e5bc68de5dcaf (diff) | |
download | zsh-37a4dce4bc5b38a686516e22d0dc81a90b757d91.tar.gz zsh-37a4dce4bc5b38a686516e22d0dc81a90b757d91.tar.xz zsh-37a4dce4bc5b38a686516e22d0dc81a90b757d91.zip |
26121: add -B <lines> option to calendar
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Doc/Zsh/calsys.yo | 4 | ||||
-rw-r--r-- | Functions/Calendar/calendar | 27 |
3 files changed, 25 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog index 245791863..c91ceb9bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-12-10 Peter Stephenson <pws@csr.com> + * 26121: Doc/Zsh/calsys.yo, Functions/Calendar/calendar: add + -B <lines> option to calendar. + * users/13566: Etc/FAQ.yo: note problem with unsetting elements of regular arrays. diff --git a/Doc/Zsh/calsys.yo b/Doc/Zsh/calsys.yo index 934746f08..05a644f2e 100644 --- a/Doc/Zsh/calsys.yo +++ b/Doc/Zsh/calsys.yo @@ -357,6 +357,10 @@ item(tt(-b))( Brief: don't display continuation lines (i.e. indented lines following the line with the date/time), just the first line. ) +item(tt(-B) var(lines))( +Brief: display at most the first var(lines) lines of the calendar +entry. `tt(-B 1)' is equivalent to `tt(-b)'. +) item(tt(-C) var(calfile))( Explicitly specify a calendar file instead of the value of the tt(calendar-file) style or the the default tt(~/calendar). diff --git a/Functions/Calendar/calendar b/Functions/Calendar/calendar index 246cf2383..1338aa9f8 100644 --- a/Functions/Calendar/calendar +++ b/Functions/Calendar/calendar @@ -60,7 +60,7 @@ while [[ ${argv[opti+1]} = -* ]]; do ######################## # Options with arguments ######################## - ([CnS]) + ([BCnS]) if [[ -n $optrest ]]; then optarg=$optrest optrest= @@ -72,6 +72,15 @@ while [[ ${argv[opti+1]} = -* ]]; do return 1 fi case $opt in + (B) + # Brief, with number of lines to show. + brief=$optarg + if (( brief <= 0 )); then + print -r "$0: option -$opt requires a positive integer." >&2 + return 1 + fi + ;; + (C) # Pick the calendar file, overriding style and default. calendar=$optarg @@ -289,17 +298,17 @@ fi fi (( shown = 0 )) if (( brief )); then - showline=${line%%$'\n'*} + showline=${(F)${${(f)line}[1,brief]}} else showline=$line - match=() - # Strip continuation lines starting " #". - while [[ $showline = (#b)(*$'\n')[[:space:]]##\#[^$'\n']##(|$'\n'(*)) ]]; do - showline="$match[1]$match[3]" - done - # Strip trailing empty lines - showline=${showline%%[[:space:]]#} fi + match=() + # Strip continuation lines starting " #". + while [[ $showline = (#b)(*$'\n')[[:space:]]##\#[^$'\n']##(|$'\n'(*)) ]]; do + showline="$match[1]$match[3]" + done + # Strip trailing empty lines + showline=${showline%%[[:space:]]#} if (( showall || (t >= start && (remaining || t <= stop || icount < showcount)) )) then $showprog $start $stop "$showline" |