mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
	
		
			4.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef cal ncal
 | |
| 
 | |
| local -a args
 | |
| args=()
 | |
| 
 | |
| case $service in
 | |
|   cal)
 | |
|     # check util-linux's cal or bsdmainutils's cal
 | |
|     if $service --version 1>/dev/null 2>/dev/null ; then
 | |
|       args+=(
 | |
|         '(-1 --one)'{-1,--one}'[show only a single month]'
 | |
|         '(-3 --three)'{-3,--three}'[show three months spanning the date]'
 | |
|         '(-n --months)'{-n,--months=}"[show num months starting with date's month]:month"
 | |
|         '(-S --span)'{-S,--span}'[span the date when displaying multiple month]'
 | |
|         '(-s --sunday)'{-s,--sunday}'[Sunday as first day of week]'
 | |
|         '(-m --monday)'{-m,--monday}'[Monday as first day of week]'
 | |
|         '(-j --julian)'{-j,--julian}'[use day-of-year for all calendars]'
 | |
|         '--reform=[Gregorian reform date]:val:(1752 gregorian iso julian)'
 | |
|         '--iso[alias for --reform=iso]'
 | |
|         '(-y --year)'{-y,--year}'[show the whole year]'
 | |
|         '(-Y --twelve)'{-Y,--twelve}'[show the next twelve months]'
 | |
|         '(-w --week)'{-w,--week=-}'[show US or ISO-8601 week numbers]::num'
 | |
|         '(-v --vertical)'{-v,--vertical}'[show day vertically instead of line]'
 | |
|         '(-c --columns)'{-c,--columns=}'[amount of columns to use]:width'
 | |
|         '--color=-[colorize messages]:when:(auto always never)'
 | |
|         '(- *)'{-h,--help}'[display help]'
 | |
|         '(- *)'{-V,--version}'[display version]'
 | |
|       )
 | |
|     else
 | |
|       case $OSTYPE in
 | |
|         (linux*|openbsd*|freebsd*|netbsd*|darwin*|dragonfly*)
 | |
|           args+=(
 | |
|             '-j[display Julian days]'
 | |
|           )
 | |
|         ;|
 | |
|         (linux*|freebsd*|netbsd*|darwin*|dragonfly*)
 | |
|           args+=(
 | |
|             '-3[display the previous, current and next month surrounding today]'
 | |
|             '-A[months to add after]:months'
 | |
|             '-B[months to add before]:months'
 | |
|           )
 | |
|         ;|
 | |
|         (freebsd*|netbsd*|darwin*|dragonfly*)
 | |
|           args+=(
 | |
|             '-h[turns off highlighting of today]'
 | |
|           )
 | |
|         ;|
 | |
|         (netbsd*|openbsd*)
 | |
|           args+=(
 | |
|             '-y[display a calendar for the current year]'
 | |
|           )
 | |
|         ;|
 | |
|         (linux*|freebsd*|darwin*|dragonfly*)
 | |
|           args+=(
 | |
|             '-m[display the specified month]:month'
 | |
|             '-y[display a calendar for the specified year]:year'
 | |
|             '-C[switch to cal mode]'
 | |
|             '-d[use yyyy-mm as the current date]:yyyy-mm'
 | |
|           )
 | |
|         ;|
 | |
|         (freebsd*|darwin*|dragonfly*)
 | |
|           args+=(
 | |
|             '-N[switch to ncal mode]'
 | |
|           )
 | |
|         ;|
 | |
|         (linux*)
 | |
|           args+=(
 | |
|             '-1[display only the current month]'
 | |
|           )
 | |
|         ;|
 | |
|         (openbsd*)
 | |
|           args+=(
 | |
|             '-m[display weeks starting on Monday instead of Sunday]'
 | |
|             '-w[display week numbers in the month display]'
 | |
|           )
 | |
|         ;|
 | |
|         (netbsd*)
 | |
|           args+=(
 | |
|             '-C[display context months before and after the specified month]:months'
 | |
|             '-d[specifies the day of the week on which the calendar should start]:day_of_week'
 | |
|             '-h[highlight the current day]'
 | |
|             '-R[selects an alternate Gregorian reform point from the default of September 3rd, 1752]:reform-sp'
 | |
|             '-r[display the month in which the Gregorian Reform adjustment was applied]'
 | |
|           )
 | |
|         ;;
 | |
|       esac
 | |
|     fi
 | |
|   ;;
 | |
|   ncal)
 | |
|     args=(
 | |
|       '-h[turns off highlighting of today]'
 | |
|       '-J[display Julian Calendar]'
 | |
|       '-e[display date of Easter]'
 | |
|       '-j[display Julian days]'
 | |
|       '-o[display date of Orthodox Easter]'
 | |
|       '-m[display the specified month]:month'
 | |
|       '-p[print the country codes and switching days from Julian to Gregorian Calendar]'
 | |
|       '-s[assume the switch from Julian to Gregorian Calendar at the date associated with the country_code]:country_code'
 | |
|       '-w[print the number of the week below each week column]'
 | |
|       '-y[display a calendar for the specified year]:year'
 | |
|       '-3[display the previous, current and next month surrounding today]'
 | |
|       '-A[months to add after]:months'
 | |
|       '-B[months to add before]:months'
 | |
|       '-C[switch to cal mode]'
 | |
|       '-d[use yyyy-mm as the current date]:yyyy-mm'
 | |
|       '-H[use yyyy-mm-dd as the current date]:yyyy-mm-dd'
 | |
|       '-M[weeks start on Monday]'
 | |
|       '-S[weeks start on Sunday]'
 | |
|       '-W[first week of the year has at least number days]:number'
 | |
|       '-b[use oldstyle format for ncal output]'
 | |
|     )
 | |
| 
 | |
|     case $OSTYPE in
 | |
|       (linux*)
 | |
|         args+=(
 | |
|           '-b[use oldstyle format for ncal output]'
 | |
|           '-1[display only the current month]'
 | |
|         )
 | |
|         ;;
 | |
|       (*)
 | |
|         args+=(
 | |
|           '-N[switch to ncal mode]'
 | |
|         )
 | |
|         ;;
 | |
|     esac
 | |
|   ;;
 | |
| esac
 | |
| 
 | |
| _arguments "${args[@]}" \
 | |
|   '::month' \
 | |
|   ':year'
 |