diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | Completion/Unix/Command/_yp | 3 | ||||
-rw-r--r-- | Functions/Misc/zcalc | 36 |
3 files changed, 45 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index 7e1982ef6..249ecb77b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2001-11-15 Peter Stephenson <pws@csr.com> + + * 16255: Function/Misc/zcalc: allow -#base or -## base to + specify default output base. + + * 16254: Completion/Unix/Command/_yp: allow completion of map + names after ypmatch. + 2001-11-15 Chmouel Boudjnah <chmouel@mandrakesoft.com> * 16253: Src/Zle/complete.mdd: Add Mandrake completion directory to diff --git a/Completion/Unix/Command/_yp b/Completion/Unix/Command/_yp index 76c59fac7..96e50ebb4 100644 --- a/Completion/Unix/Command/_yp +++ b/Completion/Unix/Command/_yp @@ -19,7 +19,8 @@ ypcat) _arguments -C -s "$_yp_args[@]" ':map name:->map' && ret=0 ;; ypmatch) - _arguments -C -s "$_yp_args[@]" '*::key map:->keymap' && ret=0 + _arguments -C -s "$_yp_args[@]" '::key map:->keymap' ':map name:->map' && + ret=0 ;; yppasswd) _users diff --git a/Functions/Misc/zcalc b/Functions/Misc/zcalc index 78a48b9b0..5d0264922 100644 --- a/Functions/Misc/zcalc +++ b/Functions/Misc/zcalc @@ -74,6 +74,10 @@ # also understood. However, leading 0 for octal is not understood --- it's # too confusing in a calculator. Use 8#777 etc. # +# Options: -#<base> is the same as a line containing just `[#<base>], +# similarly -##<base>; they set the default output base, with and without +# a base discriminator in front, respectively. +# # # To do: # - separate zcalc history from shell history using arrays --- or allow @@ -84,7 +88,7 @@ emulate -L zsh setopt extendedglob -local line latest base defbase match mbegin mend psvar +local line latest base defbase match mbegin mend psvar optlist opt arg integer num zmodload -i zsh/mathfunc 2>/dev/null @@ -95,6 +99,36 @@ zmodload -i zsh/mathfunc 2>/dev/null float PI E (( PI = 4 * atan(1), E = exp(1) )) +# Process command line +while [[ -n $1 && $1 = -(|[#-]*) ]]; do + optlist=${1[2,-1]} + shift + [[ $optlist = (|-) ]] && break + while [[ -n $optlist ]]; do + opt=${optlist[1]} + optlist=${optlist[2,-1]} + case $opt in + ('#') # Default base + if [[ -n $optlist ]]; then + arg=$optlist + optlist= + elif [[ -n $1 ]]; then + arg=$1 + shift + else + print "-# requires an argument" >&2 + return 1 + fi + if [[ $arg != (|\#)[[:digit:]]## ]]; then + print - "-# requires a decimal number as an argument" >&2 + return 1 + fi + defbase="[#${arg}]" + ;; + esac + done +done + for (( num = 1; num <= $#; num++ )); do # Make sure all arguments have been evaluated. # The `$' before the second argv forces string rather than numeric |