From 1e7c14ee356892a5f3576322b44f2724c9b73f5f Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 1 Apr 2009 10:57:10 +0000 Subject: 26801: add completion for calendar function add tracking of precommand modifiers that are in effect --- ChangeLog | 11 +++++++++- Completion/Base/Core/_main_complete | 3 +++ Completion/Unix/Command/_calendar | 40 ++++++++++++++++++++++++++++--------- Completion/Zsh/Command/_command | 2 ++ Completion/Zsh/Command/_precommand | 3 +++ 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 + + * 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 * 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-- )) -- cgit 1.4.1