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 /Functions | |
parent | 63e60d3d21ebfd985d83a5359b8e5bc68de5dcaf (diff) | |
download | zsh-37a4dce4bc5b38a686516e22d0dc81a90b757d91.tar.gz zsh-37a4dce4bc5b38a686516e22d0dc81a90b757d91.tar.xz zsh-37a4dce4bc5b38a686516e22d0dc81a90b757d91.zip |
26121: add -B <lines> option to calendar
Diffstat (limited to 'Functions')
-rw-r--r-- | Functions/Calendar/calendar | 27 |
1 files changed, 18 insertions, 9 deletions
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" |