diff options
77 files changed, 1652 insertions, 1237 deletions
@@ -1,5 +1,182 @@ +1999-06-15 Peter Stephenson <pws@ibmth.difi.unipi.it> + + * Oliver: 6636: Completion/Builtins/_limits: wasn't working + + * Bart: 6617 + minor changes: Src/utils.c: Be more careful keeping + $COLUMNS and $LINES correct, particularly if exported. + + * Sven: zsh-users/2388: Src/jobs.c: while loops etc. in shells + running without MONITOR were hard to kill. + + * Bart: 6628: Src/params.c: setting slices of unset array + caused a crash. + +1999-06-14 Peter Stephenson <pws@ibmth.difi.unipi.it> + + * pws: 6626: Src/mem.c: in zsh's malloc, try to make sure when + sbrk'ing that it's sufficiently well aligned. + + * Oliver: 6624: Completion/Builtins/_kill, + Completion/Builtins/_wait: more widely functioning process + handling + + * pws: 6623: Completion/Makefile.in, Config/defs.mk.in, + Functions/Makefile.in, INSTALL, Src/init.c, Src/zsh.mdd, + configure.in: --enable-function-subdirs allows installation + into subdirectories of the function directory and sets the + initial $fpath appropriately. + + * Oliver: 6620: Completion/Builtins/_jobs: handle disown, too. + + * pws: 6618: Doc/Zsh/func.yo, Doc/Zsh/grammar.yo, Src/lex.c: + with SH_GLOB set, function definition parentheses after the + first word on the line allow spaces inside. + + * Sven: 6614: Src/Zle/zle_tricky.c, Completion/Brace/_brace_parameter: + completion after quotes in parameters + + * pws: 6610: Src/glob.c: globbing flags shouldn't be active + without extendedglob. + + * Bart: 6608: Doc/Zsh files compctl.yo, compsys.yo, compwid.yo, + expn.yo, files.yo, mod_mapfile.yo, mod_zftp.yo, params.yo, + zftpsys.yo, zle.yo: spelling corrections + +1999-06-12 Peter Stephenson <pws@ibmth.difi.unipi.it> + + * pws: 6601: Src/Makefile.in: don't remake Makemod just + to clean up files + + * pws: 6600: Doc/Zsh/arith.yo, Doc/Zsh/compctl.yo, + Doc/Zsh/compsys.yo, Doc/Zsh/compwid.yo, Doc/Zsh/expn.yo, + Doc/Zsh/guide.yo, Doc/Zsh/jobs.yo, Doc/Zsh/metafaq.yo, + Doc/Zsh/mod_compctl.yo, Doc/Zsh/mod_zftp.yo, Doc/Zsh/params.yo, + Doc/Zsh/redirect.yo, Doc/Zsh/zftpsys.yo, Doc/Zsh/zle.yo, + Doc/zman.yo, Doc/ztexi.yo, Util/zsh-development-guide: + Formatting of unfilled text now handled by three distinct + macros example(), indent(), nofill(); compctl description node + is now called `Programmable Completion Using compctl' to + distinguish it from widget completion; don't put chapters on + separate pages because many are too short. + + * Wayne: 6599: Src/Zle/zle_tricky.c: unitialised variable warnings + from gcc + +1999-06-11 Peter Stephenson <pws@ibmth.difi.unipi.it> + + * pws: 6598: Doc/Zsh/zftpsys.yo, Functions/Zftp/zfinit, + Functions/Zftp/zfgoto, Functions/Zftp/zfmark, + Functions/Zftp/zftp_chpwd, Completion/Builtins/_zftp: + add zfmark and zfgoto implementing bookmarks (including use + ncftp bookmarks) for zftp function suite; autoload functions + from zfinit; patcomps -> _patcomps. + + * pws: 6596: Doc/Zsh/arith.yo: update on size of integers and + increase in clarity of presentation + + * Sven: 6589: Completion/Core/_path_files: use :h and :t instead + of pattern matching + + * Sven: 6587, 6588: Src/Zle/zle_misc.c, Doc/Zsh/options.yo: < and + > shouldn't remove a suffix, but | does + + * Sven: 6586: Src/exec.c, Src/lex.c, Src/loop.c: don't modify + struct cmd to insert cmd args and flags, always pass those + separately + +1999-06-10 Peter Stephenson <pws@ibmth.difi.unipi.it> + + * Andrej: 6581: Doc/Makefile: dependencies for manuals + + * Sven: 6579: Src/exec.c: old hack of storing shell function + args in struct cmd doesn't work any more + + * Sven: 6577: Src/exec.c, Src/text.c, Src/utils.c: expunge + simplifyright(), which appears no longer to have an effect + + * pws: 6575: Doc/Zsh/mod_mapfile.yo: avoid mapping long files + + * pws: 6571: Src/Builtins/rlimits.c: use appropriate printf() + routine in printulimit() instead of just casting to long + + * pws: 6570: configure.in, INSTALL: some systems have + sizeof(off_t) or sizeof(ino_t) == 8 and sizeof(long) == 4 even + without explicit enabling, so check and if so use the + --enable-lfs code. + + * pws/Sven: 6567, 6568: Completion/Base/_vars: complete assoc + array keys + + * pws: 6566: Src/params.c: junk testhash assoc array + + * pws: 6563: sporadic: minor changes affecting casts, sizes + of integers, unused variables; add index for subscripts in + manual + + * Bart: email: Src/zsh.h: alternative definition for zulong + + * Bart: 6558: Src/builtins.c: printing functions with the + UNALIASED flag + + * Sven: 6557: Doc/zsh/compsys.yo: a few typos + +1999-06-09 Peter Stephenson <pws@ibmth.difi.unipi.it> + + * Andrej: 6556: aczsh.m4: don't disable setting variables + for --enable-lfs just because some other variables were set + + * Sven: 6554: Src/Zle/zle_tricky.c: display bugs with compadd -X: + newline missing and display unnecessarily altered + + * pws: 6552: configure.in, aczsh.m4, acconfig.h, Src/zsh.h: + define separate unsigned 64-bit integer; try __int64_t and + __uint64_t. + + * Sven: 6548: Src/Zle/zle_tricky.c: fix `compctl -l' + + * Andrej: 6544: configure displays info on function installation + + * Sven: 6542: Src/builtin.c, Src/exec.c, Src/hist.c, Src/init.c, + Src/lex.c: when not using interactive history, don't allocate + history at all + + * Andrej: 6541: configure.in: add missing `test' + + * Sven: 6535: Completion/core/_normal: an eval was unnecessary + + * Bart: 6534: Completion/Core/compdump, Completion/Core/compinit, + Doc/Zsh/builtins.yo, Src/builtin.c, Src/exec.c, Src/zsh.h: + autoload -U defines functions which don't use expand aliases + during loading; used in new completion code to protect + functions. + + * Sven: 6527: Src/builtin.c, Src/cond.c, Src/exec.c, Src/glob.c, + Src/hashtable.c, Src/init.c, Src/jobs.c, Src/lex.c, + Src/linklist.c, Src/loop.c, Src/math.c, Src/mem.c, Src/params.c, + Src/parse.c, Src/signals.c, Src/text.c, Src/utils.c, Src/zsh.h: + various sets of patches: + - make zhalloc() use a pointer to the first free heap + - make zsh-mem allocators keep some memory back when freeing + - reduce the amount of allocation work done in the exec.c + execution hierarchy + - don't duplicate execution trees any more than necessary, e.g. + execute functions from stored tree + + * pws: Etc/MACHINES: Danek Duvall reports --enable-dynamic OK + on Solaris 2.7, despite previous reports; Sven says on Digital + UNIX 4.0, you need special DLLD and LDFLAGS. + 1999-06-08 Peter Stephenson <pws@ibmth.difi.unipi.it> + * pws: 6525: Src/lex.c (gettokstr): allow parentheses after + first character in command word + + * Tanaka Akira: 6522: configure.in: help string for --enable-fndir + had wrong default directory + + * pws: 6520: configure.in: --enable-fndir might be yes, + so turn it into ${datadir}/zsh/functions + * 3.1.5-pws-21 made available * Sven: 6515: Src/Zle/zle_tricky.c: fix memory problems with 6492 @@ -38,7 +215,7 @@ `compctl -h' takes a command line from inside a quoted string; the compctl tests q[s], q[d], q[b] are true if we are in single, double, back quotes; compset -q tests quotes and splits the word, - affecting $PREFIX, $SUFFX and setting $IQPREFIX, $IQSUFFIX for + affecting $PREFIX, $SUFFIX and setting $IQPREFIX, $IQSUFFIX for the bits which will now be ignored. * pws: 6490: Completion/Core/compinit: nounset workaround diff --git a/Completion/Base/_brace_parameter b/Completion/Base/_brace_parameter index f688e175a..5993aecba 100644 --- a/Completion/Base/_brace_parameter +++ b/Completion/Base/_brace_parameter @@ -16,4 +16,6 @@ ls="$RBUFFER[${#SUFFIX}+1,-1]" n=${(M)#ls##\"#} q=${(M)lp%%\"#} +[[ n -gt 0 ]] && suf='' + _parameters -s "${q[1,-n-1]}" -S "$suf" -r '-:?#%+=[/' diff --git a/Completion/Base/_vars b/Completion/Base/_vars index f06562694..a40df7699 100644 --- a/Completion/Base/_vars +++ b/Completion/Base/_vars @@ -1,3 +1,20 @@ #compdef getopts read unset vared -compgen -v +# This will handle completion of keys of associative arrays, e.g. at +# `vared compconfig[<TAB>'. However, in this version the [ must be +# added by hand. + +if [[ $PREFIX = *\[* ]]; then + local var=${PREFIX%%\[*} + local elt="${PREFIX#*\]}${SUFFIX%\]}" + local addclose + compset -p $(( ${#var} + 1 )) + if ! compset -S \]; then + addclose=(-S ']') + fi + if [[ ${(tP)var} = assoc* ]]; then + compadd $addclose - ${(kP)var} + fi +else + compgen -v +fi diff --git a/Completion/Builtins/_jobs b/Completion/Builtins/_jobs index bce005b4e..9e2da24c6 100644 --- a/Completion/Builtins/_jobs +++ b/Completion/Builtins/_jobs @@ -1,3 +1,3 @@ -#compdef fg jobs +#compdef disown fg jobs compgen -j -P '%' diff --git a/Completion/Builtins/_kill b/Completion/Builtins/_kill index 979c87804..4f8c1db6d 100644 --- a/Completion/Builtins/_kill +++ b/Completion/Builtins/_kill @@ -9,7 +9,8 @@ else compgen -P '%' -j && ret=0 list=("$(ps 2>/dev/null)") - compgen -y '$list' -s '`ps 2>/dev/null | tail +2 | cut -c1-5`' && ret=0 + compgen -y '$list' -s '${${${(f)"$(ps 2>/dev/null)"}[2,-1]## #}%% *}' && + ret=0 return ret fi diff --git a/Completion/Builtins/_limits b/Completion/Builtins/_limits index be5c35593..6835a6244 100644 --- a/Completion/Builtins/_limits +++ b/Completion/Builtins/_limits @@ -1,3 +1,3 @@ #compdef limit unlimit -compgen -k "(${(j: :)${(f)$(limit)}%% *})" +compgen -s '${${(f)"$(limit)"}%% *}' diff --git a/Completion/Builtins/_wait b/Completion/Builtins/_wait index 0fadc087b..41d09c9b2 100644 --- a/Completion/Builtins/_wait +++ b/Completion/Builtins/_wait @@ -4,6 +4,6 @@ local list ret=1 compgen -P '%' -j && ret=0 list=("$(ps 2>/dev/null)") -compgen -y '$list' -s '`ps 2>/dev/null | tail +2 | cut -c1-5`' && ret=0 +compgen -y '$list' -s '${${${(f)"$(ps 2>/dev/null)"}[2,-1]## #}%% *}' && ret=0 return ret diff --git a/Completion/Builtins/_zftp b/Completion/Builtins/_zftp index 71404fb2b..8792e21a7 100644 --- a/Completion/Builtins/_zftp +++ b/Completion/Builtins/_zftp @@ -43,6 +43,19 @@ case $subcom in compgen -k hosts ;; + *(goto|mark)) + # complete bookmarks. First decide if ncftp mode is go. + if [[ $words[2] = -*n* ]]; then + if [[ -f ~/.ncftp/bookmarks ]]; then + compadd - $(awk -F, 'NR > 2 { print $1 }' ~/.ncftp/bookmarks) + fi + else + if [[ -f ${ZFTP_BMFILE:=${ZDOTDIR:-$HOME}/.zfbkmarks} ]]; then + compadd - $(awk '{print $1}' $ZFTP_BMFILE) + fi + fi + ;; + *) # dunno... try ordinary completion after all. unset _compskip diff --git a/Completion/Core/_normal b/Completion/Core/_normal index ed7243bb1..ba7f2123f 100644 --- a/Completion/Core/_normal +++ b/Completion/Core/_normal @@ -20,7 +20,7 @@ elif [[ "$command" == */* ]]; then cmd2="${command:t}" else cmd1="$command" - eval cmd2=$(whence -p $command) + cmd2=$(whence -p $command) fi # See if there are any matching pattern completions. diff --git a/Completion/Core/_path_files b/Completion/Core/_path_files index 332aba017..d0d1c6a0a 100644 --- a/Completion/Core/_path_files +++ b/Completion/Core/_path_files @@ -231,7 +231,7 @@ for prepath in "$prepaths[@]"; do # See which of them match what's on the line. tmp2=("$tmp1[@]") - compadd -D tmp1 "$ignore[@]" - "${(@)tmp1##*/}" + compadd -D tmp1 "$ignore[@]" - "${(@)tmp1:t}" # If no file matches, save the expanded path and continue with # the outer loop. @@ -240,7 +240,7 @@ for prepath in "$prepaths[@]"; do if [[ "$tmp2[1]" = */* ]]; then tmp2=( "${(@)tmp2#${prepath}${realpath}}" ) if [[ "$tmp2[1]" = */* ]]; then - exppaths=( "$exppaths[@]" ${^tmp2%/*}/${tpre}${tsuf} ) + exppaths=( "$exppaths[@]" ${^tmp2:h}/${tpre}${tsuf} ) else exppaths=( "$exppaths[@]" ${tpre}${tsuf} ) fi diff --git a/Completion/Core/compdump b/Completion/Core/compdump index 8288ccdd4..5ee04e028 100644 --- a/Completion/Core/compdump +++ b/Completion/Core/compdump @@ -74,7 +74,7 @@ done)) # print them out: about five to a line looks neat while (( $#_d_als )); do - print -n autoload + print -n autoload -U for (( _i = 0; _i < 5; _i++ )); do if (( $#_d_als )); then print -n " $_d_als[1]" diff --git a/Completion/Core/compinit b/Completion/Core/compinit index af2467bec..23bc94cf9 100644 --- a/Completion/Core/compinit +++ b/Completion/Core/compinit @@ -194,7 +194,7 @@ compdef() { # and probably do autoloading. func="$1" - [[ -n "$autol" ]] && autoload "$func" + [[ -n "$autol" ]] && autoload -U "$func" shift case "$type" in @@ -363,7 +363,7 @@ if [[ -z "$_i_done" ]]; then fi ;; (\#autoload) - autoload ${_i_file:t} + autoload -U ${_i_file:t} ;; esac done diff --git a/Completion/Makefile.in b/Completion/Makefile.in index 8b7776a7f..0ac4de304 100644 --- a/Completion/Makefile.in +++ b/Completion/Makefile.in @@ -55,7 +55,14 @@ install.fns: $(sdir_top)/mkinstalldirs $(fndir) || exit 1; \ for file in $(FUNCTIONS_INSTALL); do \ if test -f $$file; then \ - $(INSTALL_DATA) $$file $(fndir) || exit 1; \ + if test x$(FUNCTIONS_SUBDIRS) != x -a \ + x$(FUNCTIONS_SUBDIRS) != xno; then \ + subdir="`echo $$file | sed -e 's%/.*%%'`"; \ + $(sdir_top)/mkinstalldirs $(fndir)/$$subdir || exit 1; \ + $(INSTALL_DATA) $$file $(fndir)/$$subdir || exit 1; \ + else \ + $(INSTALL_DATA) $$file $(fndir) || exit 1; \ + fi; \ fi; \ done; \ fi; \ @@ -65,7 +72,12 @@ uninstall.fns: if test x$(fndir) != x && test x$(fndir) != xno; then \ for file in $(FUNCTIONS_INSTALL); do \ if test -f $$file; then \ - rm -f "$(fndir)/`echo $$file | sed -e 's%^.*/%%'`"; \ + if test x$(FUNCTIONS_SUBDIRS) != x -a \ + x$(FUNCTIONS_SUBDIRS) != xno; then \ + rm -f $(fndir)/$$file; \ + else \ + rm -f "$(fndir)/`echo $$file | sed -e 's%^.*/%%'`"; \ + fi; \ fi; \ done; \ fi; \ diff --git a/Config/defs.mk.in b/Config/defs.mk.in index 27c9aea99..bbc42b236 100644 --- a/Config/defs.mk.in +++ b/Config/defs.mk.in @@ -68,6 +68,7 @@ INSTALL_DATA = @INSTALL_DATA@ # variables used in determining what to install FUNCTIONS_INSTALL = @FUNCTIONS_INSTALL@ +FUNCTIONS_SUBDIRS = @FUNCTIONS_SUBDIRS@ # flags passed to recursive makes in subdirectories MAKEDEFS = \ diff --git a/Config/version.mk b/Config/version.mk index 3e6726141..21d3d6e24 100644 --- a/Config/version.mk +++ b/Config/version.mk @@ -27,5 +27,5 @@ # This must also serve as a shell script, so do not add spaces around the # `=' signs. -VERSION=3.1.5-pws-21 -VERSION_DATE='June 6, 1999' +VERSION=3.1.5-pws-22 +VERSION_DATE='June 13, 1999' diff --git a/Doc/Makefile.in b/Doc/Makefile.in index c0ae8d80d..83bba17f8 100644 --- a/Doc/Makefile.in +++ b/Doc/Makefile.in @@ -57,7 +57,7 @@ Zsh/filelist.yo Zsh/files.yo Zsh/func.yo Zsh/grammar.yo Zsh/guide.yo \ Zsh/index.yo Zsh/intro.yo Zsh/invoke.yo Zsh/jobs.yo Zsh/metafaq.yo \ Zsh/modules.yo Zsh/mod_cap.yo Zsh/compwid.yo Zsh/compsys.yo \ Zsh/mod_clone.yo Zsh/mod_comp1.yo Zsh/mod_compctl.yo Zsh/mod_deltochar.yo \ -Zsh/mod_example.yo Zsh/mod_files.yo Zsh/mod_stat.yo \ +Zsh/mod_example.yo Zsh/mod_files.yo Zsh/mod_mapfile.yo Zsh/mod_stat.yo \ Zsh/mod_zle.yo Zsh/options.yo \ Zsh/params.yo Zsh/prompt.yo Zsh/redirect.yo Zsh/restricted.yo \ Zsh/seealso.yo Zsh/zftpsys.yo Zsh/zle.yo @@ -132,8 +132,8 @@ zshmisc.1: Zsh/grammar.yo Zsh/redirect.yo Zsh/exec.yo Zsh/func.yo \ zshmodules.1: Zsh/modules.yo Zsh/mod_cap.yo Zsh/mod_clone.yo \ Zsh/mod_comp1.yo Zsh/mod_compctl.yo Zsh/mod_deltochar.yo \ - Zsh/mod_example.yo Zsh/mod_files.yo Zsh/mod_sched.yo \ - Zsh/mod_stat.yo Zsh/mod_zftp.yo Zsh/mod_zle.yo + Zsh/mod_example.yo Zsh/mod_files.yo Zsh/mod_mapfile.yo \ + Zsh/mod_sched.yo Zsh/mod_stat.yo Zsh/mod_zftp.yo Zsh/mod_zle.yo zshoptions.1: Zsh/options.yo diff --git a/Doc/Zsh/arith.yo b/Doc/Zsh/arith.yo index f08deb372..f22b35794 100644 --- a/Doc/Zsh/arith.yo +++ b/Doc/Zsh/arith.yo @@ -5,16 +5,42 @@ sect(Arithmetic Evaluation) )\ cindex(arithmetic evaluation) cindex(evaluation, arithmetic) -An ability to perform integer arithmetic is provided with the builtin tt(let). findex(let, use of) -Evaluations are performed using em(long) arithmetic. +The shell can perform integer arithmetic, either using the builtin tt(let), +or via a substitution of the form tt($((...))). Usually arithmetic is +performed with em(long) integers; however, on certain systems where a +em(long) has 4-byte precision, zsh may be compiled to use 8-byte precision +instead. This can be tested, for example, by giving the command +`tt(print - $(( 12345678901 )))'; if the number appears unchanged, the +precision is at least 8 bytes. + +The tt(let) builtin command takes arithmetic expressions as arguments; each +is evaluated separately. Since many of the arithmetic operators, as well +as spaces, require quoting, an alternative form is provided: for any +command which begins with a `tt(LPAR()LPAR())', all the characters until a +matching `tt(RPAR()RPAR())' are treated as a quoted expression and +arithmetic expansion performed as for an argument of tt(let). More +precisely, `tt(LPAR()LPAR())var(...)tt(RPAR()RPAR())' is equivalent to +`tt(let ")var(...)tt(")'. For example, the following statement + +example((( val = 2 + 1 ))) + +is equivalent to + +example(let "val = 2 + 1") + +both assigning the value 3 to the shell variable tt(foo) and returning a +zero status. + +cindex(bases, in |