summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2009-04-01 10:57:10 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2009-04-01 10:57:10 +0000
commit1e7c14ee356892a5f3576322b44f2724c9b73f5f (patch)
tree6cfe649cae6065f49bb75ea481c70a5490980889
parent7df454402cbcdb6cccb082c97207eed5e3896583 (diff)
downloadzsh-1e7c14ee356892a5f3576322b44f2724c9b73f5f.tar.gz
zsh-1e7c14ee356892a5f3576322b44f2724c9b73f5f.zip
26801: add completion for calendar function
add tracking of precommand modifiers that are in effect
-rw-r--r--ChangeLog11
-rw-r--r--Completion/Base/Core/_main_complete3
-rw-r--r--Completion/Unix/Command/_calendar40
-rw-r--r--Completion/Zsh/Command/_command2
-rw-r--r--Completion/Zsh/Command/_precommand3
5 files changed, 49 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index fb730662d..c046503aa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-04-01 Peter Stephenson <pws@csr.com>
+
+ * 26801: Completion/Base/Core/_main_complete,
+ Completion/Unix/Command/_calendar,
+ Completion/Zsh/Command/_command,
+ Completion/Zsh/Command/_precommand: add completion for calendar
+ function; add tracking for precommand modifiers that are
+ in effect.
+
2009-03-26 Peter Stephenson <pws@csr.com>
* 26797: Doc/Zsh/options.yo: further minor changes.
@@ -11499,5 +11508,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.4640 $
+* $Revision: 1.4641 $
*****************************************************
diff --git a/Completion/Base/Core/_main_complete b/Completion/Base/Core/_main_complete
index b6f676d43..a2bf8e144 100644
--- a/Completion/Base/Core/_main_complete
+++ b/Completion/Base/Core/_main_complete
@@ -32,6 +32,9 @@ local func funcs ret=1 tmp _compskip format nm call match min max i num\
_saved_insert="${compstate[insert]}" \
_saved_colors="$ZLS_COLORS"
+# _precommand sets this to indicate we are following a precommand modifier
+local -a precommands
+
typeset -U _lastdescr _comp_ignore _comp_colors
[[ -z "$curcontext" ]] && curcontext=:::
diff --git a/Completion/Unix/Command/_calendar b/Completion/Unix/Command/_calendar
index 10adfb700..a79fc7298 100644
--- a/Completion/Unix/Command/_calendar
+++ b/Completion/Unix/Command/_calendar
@@ -1,12 +1,34 @@
#compdef calendar
-_arguments \
- '-a[process files of all users]' \
- '-A[print today and the following num days]:number of days:' \
- '-b[enforce special KOI8 date calculation mode]' \
- '-B[print today and the previous num days]:number of days:' \
- '-f[use file as the default calendar]:calendar file:_files' \
- '-l[print today and the following num days]:number of days:' \
- '-w[print today and the following num days only if today is Friday]:number of days:' \
- '-t[act as though today is the date specified]:date:'
+if [[ $+functions[calendar] -eq 1 && -z $precommands[(r)command] ]]; then
+ # The shell function is loaded, and we're not instructed to
+ # use an external command, so complete that.
+ _arguments \
+ '-a[show all calendar items]' \
+ '-b[brief, display first line only]' \
+ '-d[move events to done file]' \
+ '-D[never move events to done file]' \
+ '-r[show all remaining items from start or now]' \
+ '-s[use sched to schedule a warning]' \
+ '-v[verbose]' \
+ '-B[select number of lines to display]:lines: ' \
+ '-C[select calendar file]:calendar file:_path_files' \
+ '-n[select max number of events]:max number of events: ' \
+ '-S[select show programme]:show programme:_command_names' \
+ '1:date/time: ' \
+ '(-r)2:end date/time: '
+else
+ # This is only one particular version of calendar.
+ # Some variant of BSD, I think.
+ _arguments \
+ '-a[process files of all users]' \
+ '-A[print today and the following num days]:number of days:' \
+ '-b[enforce special KOI8 date calculation mode]' \
+ '-B[print today and the previous num days]:number of days:' \
+ '-f[use file as the default calendar]:calendar file:_files' \
+ '-l[print today and the following num days]:number of days:' \
+ '-w[print today and the following num days only if today is Friday]:number of days:' \
+ '-t[act as though today is the date specified]:date:'
+
+fi
diff --git a/Completion/Zsh/Command/_command b/Completion/Zsh/Command/_command
index 72d7b6e99..7cfb52c2f 100644
--- a/Completion/Zsh/Command/_command
+++ b/Completion/Zsh/Command/_command
@@ -2,6 +2,8 @@
local ret
+# indicate if this is a precommand modifier
+[[ $service = command ]] && precommands+=(command)
if [[ CURRENT -ge 3 ]]; then
compset -n 2
_normal && ret=0
diff --git a/Completion/Zsh/Command/_precommand b/Completion/Zsh/Command/_precommand
index f45688fc7..12f45ca31 100644
--- a/Completion/Zsh/Command/_precommand
+++ b/Completion/Zsh/Command/_precommand
@@ -1,5 +1,8 @@
#compdef - nohup eval time rusage noglob nocorrect exec catchsegv aoss
+# precommands is made local in _main_complete
+precommands+=($words[1])
+
shift words
(( CURRENT-- ))