1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-27 16:50:58 +01:00

zsh-3.1.6-dev-20

This commit is contained in:
Tanaka Akira 2000-03-25 00:21:44 +00:00
parent d770c43f14
commit d8f7030273
33 changed files with 802 additions and 302 deletions

544
ChangeLog
View file

@ -1,3 +1,547 @@
2000-03-23 Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
* Tanaka Akira: 10234, 10236: Completion/X/_xwit: _message passing.
* Tanaka Akira; 10232: Test/comptest, Test/ztst.zsh, ChangeLog(!):
minor test fixes and typo.
* Sven: 10226: Completion/Core/_path_files: quoting problem.
* Sven: 10225: Completion/Core/_path_files: dot problems with
files.
* Tanaka Akira: 10223: Completion/Base/_regex_arguments,
Completion/X/_x_colormapid, Completion/X/_xwit:
new X completions.
* Bart: 10218: Src/prompt.c: possible realloc() in
putpromptchar().
2000-03-22 Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
* Sven: 10215: Completion/User/_nedit: and this one.
* Sven: 10214: Completion/Builtins/_cd,
Completion/Builtins/_zstyle, Completion/User/_pbm,
Completion/User/_pspdf, Completion/User/_tiff,
Completion/User/_zdump: some _path_files calls now need loop for
tags.
* Sven: 10210: Completion/Commands/_next_tags,
Completion/Core/_main_complete, Completion/Core/compinit,
Doc/Zsh/compsys.yo: _next_tags doesn't need to be in completer
list any more; $compprefuncs array does pre-completion functions.
* Sven: 10209: Completion/Core/_loop, Completion/Core/_try:
missing functions form 10195.
* 10204: Completion/Base/_arguments, Completion/Base/_values,
Completion/Core/_alternative, Completion/Core/_tags,
Completion/Core/_wanted, Src/Zle/computil.c: additions to 10195.
* Sven: 10195: Completion/Base/_arguments,
Completion/Base/_brace_parameter, Completion/Base/_condition,
Completion/Base/_default, Completion/Base/_describe,
Completion/Base/_first, Completion/Base/_jobs,
Completion/Base/_math, Completion/Base/_parameter,
Completion/Base/_subscript, Completion/Base/_tilde,
Completion/Base/_values, Completion/Builtins/_arrays,
Completion/Builtins/_autoload, Completion/Builtins/_bindkey,
Completion/Builtins/_builtin, Completion/Builtins/_cd,
Completion/Builtins/_command, Completion/Builtins/_compdef,
Completion/Builtins/_echotc, Completion/Builtins/_functions,
Completion/Builtins/_hash, Completion/Builtins/_limits,
Completion/Builtins/_pids, Completion/Builtins/_popd,
Completion/Builtins/_sched, Completion/Builtins/_signals,
Completion/Builtins/_stat, Completion/Builtins/_vars,
Completion/Builtins/_zftp, Completion/Builtins/_zle,
Completion/Builtins/_zmodload, Completion/Builtins/_zpty,
Completion/Builtins/_zstyle, Completion/Commands/_next_tags,
Completion/Core/_alternative, Completion/Core/_files,
Completion/Core/_main_complete, Completion/Core/_multi_parts,
Completion/Core/_options, Completion/Core/_parameters,
Completion/Core/_path_files, Completion/Core/_requested,
Completion/Core/_sep_parts, Completion/Core/_set_options,
Completion/Core/_setup, Completion/Core/_tags,
Completion/Core/_unset_options, Completion/Core/_wanted,
Completion/Debian/_apt, Completion/Debian/_deb_packages,
Completion/Linux/_rpm, Completion/User/_archie,
Completion/User/_cvs, Completion/User/_dd,
Completion/User/_domains, Completion/User/_gcc,
Completion/User/_gdb, Completion/User/_getconf,
Completion/User/_gprof, Completion/User/_groups,
Completion/User/_gs, Completion/User/_hosts, Completion/User/_lp,
Completion/User/_mailboxes, Completion/User/_make,
Completion/User/_man, Completion/User/_mh, Completion/User/_mount,
Completion/User/_mutt, Completion/User/_mysql_utils,
Completion/User/_netscape, Completion/User/_nslookup,
Completion/User/_pbm, Completion/User/_perl_basepods,
Completion/User/_perl_builtin_funcs,
Completion/User/_perl_modules, Completion/User/_ports,
Completion/User/_rcs, Completion/User/_rlogin,
Completion/User/_socket, Completion/User/_ssh,
Completion/User/_stty, Completion/User/_tar,
Completion/User/_telnet, Completion/User/_tiff,
Completion/User/_urls, Completion/User/_user_at_host,
Completion/User/_users, Completion/User/_users_on,
Completion/User/_whois, Completion/User/_yp,
Completion/X/_x_color, Completion/X/_x_cursor,
Completion/X/_x_display, Completion/X/_x_extension,
Completion/X/_x_font, Completion/X/_x_keysym,
Completion/X/_x_modifier, Completion/X/_x_window,
Completion/X/_xmodmap, Completion/X/_xutils, Doc/Zsh/compsys.yo,
Doc/Zsh/mod_zutil.yo, Etc/completion-style-guide,
Functions/Zftp/zfcd_match, Functions/Zftp/zfget_match,
Src/Modules/zutil.c, Src/Zle/computil.c: implement tag aliases,
which allows neat tricks with styles.
* Sven: 10197: Src/exec.c, Src/init.c: %_ sometimes got cmdstack
wrong in source(); $(...) didn't show up at all.
* Bart: 10193: Src/prompt.c: prompttrunc() didn't track realloc()'s.
* Bart: 10181: Functions/Prompts/prompt_bart_setup: Bart's Theme
and Variations.
* Sven: 10178: Completion/Commands/_next_tags, Doc/Zsh/compsys.yo:
don't bind _next_tags by default and add some more docs.
* Sven: 10176: Src/Zle/compresult.c, Src/init.c, Src/parse.c:
optimize list-packed.
* Sven: 10174: Doc/Zsh/compsys.yo, Doc/Zsh/compwid.yo: tweaks on
completer and -V.
* Bart: 10173: Functions/Prompts/prompt_bart_setup,
Functions/Prompts/promptinit: Bart's Theme.
* Sven: 10172: Completion/Core/_main_complete: typo.
* Bart: 10168: Src/init.c: move hbegin() to get it right in
precmd.
* Oliver: 10166: Completion/X/_xt_arguments,
Completion/User/_nedit: new and improved.
* Bart: 10165: Doc/Zsh/builtins.yo, Doc/Zsh/compsys.yo: move doc
for using a completer twice; zcompile doc tweak.
* Oliver: 10162: Completion/Core/_expand: use nullglob option
instead of (N) so that user's qualifiers work.
* Sven: 10159: Src/Zle/compresult.c: wrong calculation of display
length when not using zsh/complist.
* Sven: 10156: Src/exec.c: possible invalid field in function
definition when loading.
* Zefram: 10152: Src/mem.c: fix ordering ambiguity ANSI wouldn't
have liked.
* Bart: 10150: Src/exec.c, Test/51xtrace.ztst: `one last' xtrace
redirection fix.
* Sven: 10149: Doc/Zsh/builtins.yo, Src/builtin.c, Src/exec.c,
Src/parse.c: allows native and ksh-like wordcode function styles.
* Sven: 10148: Src/Zle/comp.h, Src/Zle/compcore.c, Src/mem.c:
optimization for added matches where things didn't change.
* Sven: 10146: Completion/Core/_sort_tags, Completion/Core/_tags,
Doc/Zsh/compsys.yo: return value of function called by _tags used
to decide dispositions.
* Sven: 10145: Doc/Zsh/mod_zle.yo: confess to users that zle input
is on a stack.
* Sven: 10144: Doc/Zsh/builtins.yo, Src/Modules/parameter.c,
Src/builtin.c, Src/exec.c, Src/linklist.c, Src/parse.c: dump
functions from current shell.
* Sven: 10143: Src/init.c, Src/math.c: better ignoring of bits
that shouldn't get evaluated in math expressions.
* Sven: 10135: Doc/Zsh/compsys.yo, Src/Zle/computil.c: complex
argument handling expressions.
* Sven: 10131: Src/Modules/stat.c, Src/Modules/zpty.c,
Src/Modules/zutil.c, Src/Zle/compctl.c, Src/Zle/complete.c,
Src/Zle/computil.c, Src/Zle/zle_main.c, Src/Zle/zle_thingy.c,
Src/parse.c: more consistent zerrnam/zwarnnam usage.
* Sven: 10129: Doc/Zsh/builtins.yo, Src/builtin.c, Src/parse.c:
autoload -w can mark all functions in .zwc files for autoloading.
* Sven: 10128: Doc/Zsh/zle.yo, Src/Zle/zle_main.c, Src/init.c,
Src/signals.c, Src/zsh.h: zle parameters available readonly in
traps.
* Sven: 10127: Doc/Zsh/zle.yo, Src/Zle/compresult.c,
Src/Zle/iwidgets.list, Src/Zle/zle_main.c, Src/Zle/zle_misc.c,
Src/Zle/zle_refresh.c, Src/Zle/zle_thingy.c, Src/Zle/zle_tricky.c:
end-of-list widget to display prompt under command line, plus
$MARK documentation.
* Sven: 10126: Src/Zle/compcore.c: quotes in $PREFIX and $SUFFIX.
* Sven: 10125: Src/math.c, Src/params.c: restore old cruddy
behaviour removed in 10104, but using recursion counter.
* Sven: 10120: Src/exec.c, Src/loop.c, Src/parse.c: state not
tested properly in some constructs.
* Sven: 10117: Doc/Zsh/mod_zle.yo, Src/Zle/zle_params.c,
Src/Zle/zle_thingy.c: zle on its own returns zle status;
MARK parameter; disallow widgets in traps.
* Oliver: 10116: Completion/Builtins/_source: wasn't looking
through the path.
* Sven: 10112: Completion/Base/_condition, Src/Zle/zle_tricky.c:
fix up altmodische _condition; `[[ ... && ' thought it was in
command position for completion.
* Sven: 10108: Completion/Commands/.distfiles,
Completion/Commands/_next_tags, Completion/Core/_files,
Completion/Core/_main_complete, Completion/Core/_requested,
Completion/Core/_wanted, Doc/Zsh/compsys.yo,
Functions/Misc/.distfiles: _next_tags allows you to cycle through
sets of completions according to the tags.
* Sven: 10107: Doc/Zsh/compwid.yo, Src/Zle/complete.c,
Src/Zle/compmatch.c: ** in match spec allows matching including
the anchor as well.
* Sven: 10106: Functions/Misc/zrecompile, Src/exec.c, Src/parse.c,
Src/zsh.h: recompilation of wordcode files and related bugs.
* Sven: 10105: Src/lex.c: single exclamation marks in conditions.
* Sven: 10104: Src/math.c, Src/params.c: retrieve parameters in
math evaluations more directly rather than recursively calling
matheval(), which was kind of stupid, so stupid I could quite
possible have put it in myself, but I don't think I did this time.
* Sven: 10103: Src/glob.c: bad handling of ./ and ../ in
closures.
* Bart: 10098: configure.in, Src/cond.c: check for AIX's
faccessx() and neaten configure library function tests.
* Oliver: 10088: Completion/User/_groups,
Completion/Base/_condition: better handling of files after
conditions, checking of use of NIS.
* Adam: 10087: Completion/User/_perl_modules,
Completion/User/_perl: new and enhanced perl completions.
* Oliver: 10073: Src/cond.c: /dev/fd emulation for access tests.
* Adam: 10072: Completion/User/_mysql_utils: new completion
function for something with suspcicious `SQL' bit in its name.
* Bart: 10071: Src/exec.c: xtrace output redirection problem.
* Sven: 10059: Src/builtin.c, Src/lex.c, Src/parse.c, Src/text.c,
Src/zsh.h: bugs found by ksh tests: typeset -Ai didn't create
assocs (still doesn't create ints), some heredoc difficulties, |&
difficulties.
* Alexandre: 10058: Completion/User/_prcs, Completion/User/_diff,
Completion/User/_diff_options: another solution for the GNU diff
completion problem.
* Bart: 10056: Etc/MACHINES: RLIM_INFINITY incompatibility with
some Linux/GNU libraries.
* Sven: 10044: Completion/User/_diff, Completion/User/_use_lo:
gdiff should use diff completion, pretty obviously.
* Sven: 10041: Doc/Zsh/builtins.yo, Doc/Zsh/files.yo,
Doc/Zsh/func.yo, Src/init.c, Src/parse.c: enhancements for digest
files including digests of sourced files. Or maybe digestion of
sauce.
* Sven: 10040: Completion/User/_diff_options: can test for GNU
diff.
* Oliver: 10029: Src/utils.c: bad handling of '^^' in keystring
parsing.
* Andrej: 10028: Completion/Builtins/_cd: remove local directory
from cdpath.
* Sven: 10025: Functions/Misc/nslookup, Src/Modules/zpty.c:
optimizations for pty reads.
* Sven: 10017: Doc/Zsh/builtins.yo, Src/lex.c, Src/parse.c:
fix buffer problem for autoloading and unportable macro.
* Oliver: 10013: Completion/Builtins/_compdef,
Completion/Builtins/_zpty, Completion/User/_getconf: two new
functions and one updated.
* Andrej: 10011: Completion/User/_sudo: options for recent sudo.
* Bart: 10009: Completion/Base/_subscript: didn't get arrays the
right length.
* Bart: 10006: configure.in, Src/utils.c: use mktemp() if
available.
* Bart: 9992: Functions/Zle/predict-on: tweaks.
* Bart: 9990: Test/07cond.ztst: compatibility fix for chmod g+s.
* Bart: 9982: Test/53completion.ztst, Test/Makefile.in,
Test/comptest, Test/ztst.zsh: better handling of uninstalled
modules.
* Andrej: 9981: Src/Modules/zpty.c: SYSV-related pty stuff.
* Bart: 9980: Src/Makefile.in: separate mymods.conf and xmods.conf
dependencies.
* Sven: 9966: Doc/Zsh/builtins.yo, Doc/Zsh/func.yo, Src/parse.c:
require .zwc ending for digest files.
* Bart: 9963: Test/11glob.ztst: existing globbing tests run under
new test harness.
* Bart: 9961: INSTALL, Src/Makefile.in, Test/53completion.ztst,
Test/comptest: errors trying to load zpty for static shell in
tests; INSTALL didn't describe mymods.conf properly.
* Tanaka Akira: 9960: Test/comptest, Test/53completion.ztst: avoid
zpty timing problem.
* Sven: 9958: Src/parse.c: sharing strings made test fail with
new wordcode.
* Tanaka Akira: 9957: Test/comptest: clear to end.
* Sven: 9953: Src/Zle/complist.c: was incorrectly omitting some
display sequences.
* Tanaka Akira: 9952: Test/comptest: compatibility, quoting and
debugging fixes.
* Sven: 9951: Completion/Core/_multi_parts: was producing
mysterious blank entries.
* Sven: 9948: Src/exec.c, Src/parse.c: stripkshdef() was broken.
* Sven: 9947: Completion/Core/compdump, Completion/Core/compinit,
Doc/Zsh/builtins.yo, Doc/Zsh/func.yo, Src/builtin.c, Src/cond.c,
Src/exec.c, Src/glob.c, Src/lex.c, Src/loop.c, Src/math.c,
Src/mem.c, Src/parse.c, Src/text.c, Src/utils.c, Src/zsh.h:
Wordcode compilation for functions using .zwc or `digest
functions' in $fpath.
* Bart: 9946: Src/subst.c: return type in 9937.
* Bart: 9945: Src/prompt.c: truncation messed up non-literal
parts of the prompt.
* Bart: 9942: Src/prompt.c: truncation in true part of ternary
expression incorrectly showed false part and closing parenthesis.
* Sven: 9937: Src/subst.c: parsing problem with parameter
substitution which showed up in file completion.
* Sven: 9938: Src/Modules/parameter.c: problem assigning to
dirstack.
* Tanaka Akira: 9936: Src/Zle/complist.c, Test/comptest,
Test/53completion.ztst: tests for completion using zpty.
* Tanaka Akira: 9935: Test/52zregexparse.ztst: tests for
zregexparse.
2000-03-21 Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
* Sven: 9920: Completion/Core/.distfiles, Completion/Core/_call:
the function needed for 9897.
* Bart: 9912: Completion/User/_mailboxes: further improvements.
* Sven: 9904: Src/utils.c: getquery() and rmstarsilent.
* Sven: 9902: Completion/Core/_path_files: _files -g problem.
* Sven: 9900, 9903: Src/exec.c: parsing oddity in here documents.
* 9897: Completion/Base/_arguments, Completion/Builtins/_pids,
Completion/Linux/_rpm, Completion/User/_a2ps,
Completion/User/_archie, Completion/User/_diff_options,
Completion/User/_finger, Completion/User/_groups,
Completion/User/_gs, Completion/User/_killall,
Completion/User/_lp, Completion/User/_telnet,
Completion/User/_users_on, Completion/User/_yp,
Completion/X/_x_font, Completion/X/_x_window, Doc/Zsh/compsys.yo:
use _call function and `command' style to override command
used in various completions.
* Sven: 9895: Completion/Base/_combination,
Completion/Builtins/_zstyle, Completion/User/_telnet,
Doc/Zsh/compsys.yo: usage of combination styles.
* Sven: 9893: Completion/Core/_multi_parts: return values.
* Sven: 9892: Completion/Core/_main_complete,
Completion/Core/_path_files, Completion/Core/compdump,
Completion/Core/compinit: improved fix for 9886; typo in
_main_complete; compdump uses (q) flag; remove compstyle; update
compconf.
* Bart: 9891: Completion/User/_cvs: kshautoload problem.
* Bart: 9889: acconfig.h, configure.in, Src/exec.c,
Src/prototypes.h: from 3.0.8: detect mknod(), minor redirection
tweaks.
* Bart: 9886: Completion/Core/_path_files: matcher problem.
* Tanaka Akira: 9885: Completion/User/_dvi, Completion/User/_lynx,
Completion/X/_xutils: extra arguments for completion functions.
* Alexandre: 9882: Completion/User/_prcs: error messages.
* Sven: 9880: Completion/Core/_path_files: error message with
~unknown.
* Sven: 9879: Completion/User/_tilde_files: use of magicequalsubst
with completion.
* Sven: 9877: Src/parse.c: wordcode bug in functions with failed
builtins.
* Sven: 9876: Completion/Base/_combination,
Completion/User/_rlogin, Completion/User/_ssh,
Completion/User/_user_at_host, Doc/Zsh/compsys.yo: more flexible
handling of separators in combinations.
* Sven: 9870: Completion/Core/_path_files,
Completion/User/.distfiles, Completion/User/_dd,
Completion/User/_tilde_files, Src/Zle/compresult.c: better
handling of paths beginning ~ in various places.
* Sven: 9865: Completion/Builtins/_zstyle,
Completion/Core/_main_complete, Completion/Core/_setup,
Doc/Zsh/compsys.yo, Src/Zle/compcore.c, Src/Zle/compresult.c:
implement prefer-ignored style to prefer alternative matches
to going on to another completer.
* Sven: 9863: Src/parse.c, Src/text.c: wordcode problems, using
old code.
* Sven: 9861: Completion/Core/_main_complete: interaction of
_main_complete and _oldlist.
* Sven: 9860: Src/Zle/compctl.c: storing of match and display list.
* Sven: 9855: Completion/Core/_multi_parts, Doc/Zsh/compsys.yo:
_multi_parts accepts -f.
2000-02-23 Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
* Sven: 9845: Functions/Zle/incremental-complete-word: another
context change.
* Sven: 9844: Functions/Zle/predict-on: rationalize 9837.
* Sven: 9840: config.sub: test for alphaev6 systems.
* Sven: 9839: Src/Builtins/sched.c, Src/Modules/example.c,
Src/Modules/mapfile.c, Src/Modules/parameter.c,
Src/Modules/zftp.c, Src/Modules/zprof.c, Src/Modules/zpty.c,
Src/Modules/zutil.c, Src/Zle/compcore.c, Src/Zle/compctl.c,
Src/Zle/complete.c, Src/Zle/complist.c, Src/Zle/compresult.c,
Src/Zle/computil.c, Src/Zle/zle_hist.c, Src/Zle/zle_main.c,
Src/Zle/zle_misc.c, Src/Zle/zle_thingy.c, Src/Zle/zle_tricky.c,
Src/Zle/zleparameter.c, Src/builtin.c, Src/cond.c, Src/exec.c,
Src/glob.c, Src/hist.c, Src/init.c, Src/jobs.c, Src/lex.c,
Src/linklist.c, Src/loop.c, Src/main.c, Src/math.c, Src/mem.c,
Src/module.c, Src/params.c, Src/parse.c, Src/pattern.c,
Src/prompt.c, Src/signals.c, Src/subst.c, Src/utils.c, Src/zsh.h:
Eliminate `useheap' variable and consequent HEAPALLOC/PERMALLOC
usage throughout the shell (hooray!) All memory allocation is
either explicitly on the heap or permanent.
* Sven: 9838: Src/Modules/parameter.c, Src/Zle/computil.c,
Src/Zle/zle_main.c, 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/params.c, Src/parse.c,
Src/signals.c, Src/signals.h, Src/subst.c, Src/text.c,
Src/version.h, Src/zsh.h: parser now emits wordcode directly; a
whole heap of optimisations of the execution tree.
* Sven: 9837: Completion/User/_gunzip, Functions/Zle/predict-on:
no. of colons in predict-on, typo in _gunzip.
* Sven: 9835: Completion/Builtins/_zstyle,
Completion/Core/_main_complete, Doc/Zsh/compsys.yo: document
single-ignored style, better handling of descriptions with
warnings about no matches.
* Bart: 2930: Completion/User/_ssh: basic completion for remote
files.
2000-02-22 Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
* Sven: 9831: Completion/Core/_multi_parts: better separator
removal.
* Sven: 9830: Completion/X/_x_arguments: reverse 9824, but use
_default instead of _files if no special arguments.
* Bart: 9828: Completion/User/_mailboxes: $i -> "$i" missed out.
2000-02-21 Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
* Clint: 9824: Completion/X/_x_arguments: `*/X11/*' was too broad
a definition for X commands taking standard arguments to be
useful.
* Clint: 9823: configure.in: open fifo read/write in test to avoid
possible (unconfirmed) hang.
* Bart: 9822: Completion/User/_mailboxes: add completions for mush
and tkrat; allow pine to complete mh folders.
* Sven: 9816: Completion/Core/_multi_parts,
Completion/User/_mailboxes: improved version of 9812/9815.
* Bart: 9812, 9815: Completion/User/_mailboxes,
Completion/User/_mutt: improved mailbox completion for all sorts
of types, currently only used for mutt.
* Sven: 9810: Completion/Core/_multi_parts: difficulties with
separator as initial character.
* Sven: 9809: Completion/Builtins/_popd,
Completion/Core/_approximate, Doc/Zsh/compsys.yo: documentation
improvements and typo fixes.
* Tanaka Akira/Sven: 9807: Completion/Core/_main_complete:
single-ignored style, as yet undocumented, for handling of
alternate match set.
* Sven: 9806: Completion/Core/_multi_parts: problems with literal
(parenthesised) arrays.
* Sven: 9805: Completion/Core/_path_files: difficulties with
suffixes when expanding paths.
* Sven: 9802: Src/utils.c: no need to quote !'s in ${(qq)...}
because they're not active in single quotes.
* Bart: 9799: Src/utils.c: better interpretation of typeahead when
querying user e.g. for spell checking.
* Adam: 9798: Doc/Makefile.in: use `texi' and `html' for targets
to avoid duplicated name complaint by gmake.
2000-02-20 Peter Stephenson <pws@pwstephenson.fsnet.co.uk> 2000-02-20 Peter Stephenson <pws@pwstephenson.fsnet.co.uk>
* pws: Config/version.mk: 3.1.6-dev-19. * pws: Config/version.mk: 3.1.6-dev-19.

View file

@ -1,8 +1,8 @@
DISTFILES_SRC=' DISTFILES_SRC='
.distfiles .distfiles
_aliases _arrays _autoload _bg_jobs _bindkey _builtin _cd _command _aliases _arrays _autoload _bg_jobs _bindkey _builtin _cd _command
_compdef _disable _echotc _enable _fc _fg_jobs _functions _hash _kill _compdef _disable _echotc _enable _fc _fg_jobs _functions
_limits _nothing _pids _popd _sched _set _setopt _source _stat _trap _hash _kill _limits _nothing _pids _popd _sched _set _setopt _source
_unhash _unsetopt _vars _vars_eq _wait _which _zftp _zle _zmodload _stat _trap _unhash _unsetopt _vars _vars_eq _wait _which _zftp _zle
_signals _zstyle _zmodload _zpty _signals _zstyle
' '

View file

@ -49,13 +49,13 @@ styles=(
packageset c:packageset packageset c:packageset
path 'c:_wanted directories expl directory _path_files -/' path 'c:_wanted directories expl directory _path_files -/'
ports c:_ports ports c:_ports
prefer-ignored c:bool
prefix-hidden c:bool prefix-hidden c:bool
prefix-needed c:bool prefix-needed c:bool
prompt c: prompt c:
remove-all-dups c:bool remove-all-dups c:bool
single-ignored c:single-ignored single-ignored c:single-ignored
sort c:bool sort c:bool
tag-aliases c:tag
tag-order c:tag tag-order c:tag
special-dirs c:sdirs special-dirs c:sdirs
squeeze-slashes c:bool squeeze-slashes c:bool
@ -215,7 +215,7 @@ while [[ -n $state ]]; do
;; ;;
single-ignored) single-ignored)
_wanted values expl 'how to handle a single ignored match' \ _wanted values expl 'how to handle single alternate match' \
compadd - show menu compadd - show menu
;; ;;

View file

@ -46,7 +46,7 @@ _next_tags_pre() {
# Helper function for sorting tags. Most of this is copied from _tags. # Helper function for sorting tags. Most of this is copied from _tags.
_next_tags_sort() { _next_tags_sort() {
local order tags tag nodef tmp tmp2 local order tags tag nodef
if ! zstyle -a ":completion:${curcontext}:" tag-order order; then if ! zstyle -a ":completion:${curcontext}:" tag-order order; then
if (( $+_comp_default_tags )); then if (( $+_comp_default_tags )); then
@ -69,49 +69,12 @@ _next_tags_sort() {
case $tag in case $tag in
-) nodef=yes;; -) nodef=yes;;
*\(\)) "${${tag%%[ ]#\(\)}##[ ]#}" "$@";; *\(\)) "${${tag%%[ ]#\(\)}##[ ]#}" "$@";;
\!*) comptry "${(@)argv:#(${(j:|:)~${=~tag[2,-1]}})}";; \!*) comptry "${(@)argv:#(${(j:|:)~${=tag[2,-1]}})}";;
?*) tmp=( ${${(s: :)${tag//\\\\ /$'\0'}}//$'\0'/ } ) tmp2=() tmp3=() ?*) comptry ${=tag};;
for tag in "$tmp[@]"; do
if [[ "$tag" = *:* ]]; then
tmp2=( "$tmp2[@]" "${(@M)^argv:#${~tag%%:*}}:${tag#*:}" )
else
for atag in "${(@M)argv:#${~tag}}"; do
if zstyle -a ":completion:${curcontext}:${atag}" tag-aliases als; then
tmp3=( "$tmp3[@]" "$als[@]" )
tmp=( "${(@)tmp:#${atag}}" )
else
tmp2=( "$tmp2[@]" "$atag" )
fi
done
fi
done
comptry "${(@)tmp2:#(${(j:|:)~${(q)tmp%%:*}})}" "$tmp3[@]" "$tmp[@]"
;;
esac esac
done done
if [[ -z "$nodef" ]]; then [[ -z "$nodef" ]] && comptry "$@"
if (( $+_comp_default_tags )); then
for tag in "$_comp_default_tags[@]"; do
if zstyle -a ":completion:${curcontext}:${tag}" tag-aliases als; then
comptry "$als[@]"
else
comptry "$tag"
fi
done
else
tmp2=()
for tag; do
if zstyle -a ":completion:${curcontext}:${tag}" tag-aliases als; then
tmp2=( "$tmp2[@]" "$als[@]" )
else
tmp2=( "$tmp2[@]" "$tag" )
fi
done
comptry "$tmp2[@]"
fi
fi
} }
[[ -o kshautoload ]] || _next_tags "$@" [[ -o kshautoload ]] || _next_tags "$@"

View file

@ -1,10 +1,10 @@
DISTFILES_SRC=' DISTFILES_SRC='
.distfiles .distfiles
_alternative _approximate _call _compalso _complete _correct _description _alternative _approximate _call _compalso _complete _correct _description
_expand _files _funcall _list _main_complete _match _expand _files _funcall _list _loop _main_complete _match
_menu _multi_parts _message _normal _oldlist _options _menu _multi_parts _message _normal _oldlist _options
_parameters _path_files _prefix _requested _sep_parts _parameters _path_files _prefix _requested _sep_parts
_set_options _setup _sort_tags _tags _set_options _setup _sort_tags _tags _try
_unset_options _wanted _unset_options _wanted
compdump compinit compinstall compdump compinit compinstall
' '

View file

@ -29,9 +29,8 @@ zstyle -s ":completion:${curcontext}:$1" matcher match &&
opts=($opts -M "${(q)match}") opts=($opts -M "${(q)match}")
[[ -n "$_matcher" ]] && opts=($opts -M "${(q)_matcher}") [[ -n "$_matcher" ]] && opts=($opts -M "${(q)_matcher}")
if [[ -z "$_comp_no_ignore" ]] && if zstyle -a ":completion:${curcontext}:$1" ignored-patterns _comp_ignore; then
zstyle -a ":completion:${curcontext}:$1" ignored-patterns _comp_ignore; then opts=( $opts -F _comp_ignore)
opts=( $opts -F _comp_ignore )
else else
_comp_ignore=() _comp_ignore=()
fi fi

View file

@ -19,7 +19,7 @@
setopt localoptions nullglob rcexpandparam extendedglob setopt localoptions nullglob rcexpandparam extendedglob
unsetopt markdirs globsubst shwordsplit nounset ksharrays unsetopt markdirs globsubst shwordsplit nounset ksharrays
local func funcs ret=1 tmp _compskip format _comp_ignore \ local ctxt func funcs ret=1 tmp _compskip format _comp_ignore \
_completers _completer _completer_num curtag \ _completers _completer _completer_num curtag \
_matchers _matcher _matcher_num _comp_tags \ _matchers _matcher _matcher_num _comp_tags \
context state line opt_args val_args curcontext="$curcontext" \ context state line opt_args val_args curcontext="$curcontext" \
@ -61,8 +61,7 @@ _last_menu_style=()
# Get the names of the completers to use in the positional parameters. # Get the names of the completers to use in the positional parameters.
(( $# )) || zstyle -a ":completion:${curcontext}:" completer argv || (( $# )) || zstyle -a ":completion:${curcontext}:" completer argv || set _complete
set _complete
# And now just call the completer functions defined. # And now just call the completer functions defined.
@ -78,8 +77,14 @@ for func in "$funcs[@]"; do
done done
for _completer; do for _completer; do
ctxt=":completion:${curcontext/::/:${_completer[2,-1]}-${(M)#_completers[1,_completer_num]:#$_completer}:}:"
zstyle -a ":completion:${curcontext/::/:${_completer[2,-1]}-${(M)#_completers[1,_completer_num]:#$_completer}:}:" matcher-list _matchers || if zstyle -t "$ctxt" prefer-ignored && (( $compstate[alternate_nmatches] )); then
ret=0
break;
fi
zstyle -a "$ctxt" matcher-list _matchers ||
_matchers=( '' ) _matchers=( '' )
_matcher_num=1 _matcher_num=1
@ -93,9 +98,26 @@ for _completer; do
(( _completer_num++ )) (( _completer_num++ ))
done done
if zstyle -s ":completion:${curcontext}:" single-ignored tmp &&
[[ $compstate[old_list] != shown &&
$compstate[alternate_nmatches] = 1 ]]; then
case "$tmp" in
show) compstate[insert]='' compstate[list]='list force' tmp='' ;;
menu)
local expl
compstate[insert]='menu'
_description original expl original
compadd "$expl[@]" -a -S '' - "$PREFIX$SUFFIX"
;;
*) tmp='' ;;
esac
fi
if [[ -n "$tmp" || $compstate[old_list] = keep || if [[ -n "$tmp" || $compstate[old_list] = keep ||
$compstate[nmatches] -gt 1 ]]; then $compstate[nmatches]+$compstate[alternate_nmatches] -gt 1 ]]; then
[[ _last_nmatches -ge 0 && _last_nmatches -ne $compstate[nmatches] ]] && [[ _last_nmatches -ge 0 &&
_last_nmatches -ne $compstate[nmatches]+$compstate[alternate_nmatches] ]] &&
_menu_style=( "$_last_menu_style[@]" "$_menu_style[@]" ) _menu_style=( "$_last_menu_style[@]" "$_menu_style[@]" )
if [[ "$compstate[insert]" = "$_saved_insert" ]]; then if [[ "$compstate[insert]" = "$_saved_insert" ]]; then
@ -148,7 +170,7 @@ if [[ -n "$tmp" || $compstate[old_list] = keep ||
fi fi
fi fi
fi fi
elif [[ $compstate[nmatches] -eq 0 && elif [[ $compstate[nmatches]+$compstate[alternate_nmatches] -eq 0 &&
$#_lastdescr -ne 0 && $compstate[old_list] != keep ]] && $#_lastdescr -ne 0 && $compstate[old_list] != keep ]] &&
zstyle -s ":completion:${curcontext}:warnings" format format; then zstyle -s ":completion:${curcontext}:warnings" format format; then

View file

@ -142,9 +142,8 @@ eorig="$orig"
# If given no `-F' option, we may want to use $fignore, turned into patterns. # If given no `-F' option, we may want to use $fignore, turned into patterns.
[[ -z "$_comp_no_ignore" && $#ignore -eq 0 && [[ $#ignore -eq 0 && ( -z $gopt || "$pats" = \ #\*\ # ) && -n $FIGNORE ]] &&
( -z $gopt || "$pats" = \ #\*\ # ) && -n $FIGNORE ]] && ignore=( "?*${^fignore[@]}" )
ignore=( "?*${^fignore[@]}" )
if (( $#ignore )); then if (( $#ignore )); then
_comp_ignore=( "$_comp_ignore[@]" "$ignore[@]" ) _comp_ignore=( "$_comp_ignore[@]" "$ignore[@]" )
@ -351,7 +350,7 @@ for prepath in "$prepaths[@]"; do
continue 2 continue 2
fi fi
if [[ -z "$_comp_no_ignore" && "$tpre$tsuf" != */* && $#tmp1 -ne 0 ]] && if [[ "$tpre$tsuf" != */* && $#tmp1 -ne 0 ]] &&
zstyle -s ":completion:${curcontext}:files" ignore-parents rem && zstyle -s ":completion:${curcontext}:files" ignore-parents rem &&
[[ ( "$rem" != *dir* || "$pats" = '*(-/)' ) && [[ ( "$rem" != *dir* || "$pats" = '*(-/)' ) &&
( "$rem" != *..* || "$tmp1" = *../* ) ]]; then ( "$rem" != *..* || "$tmp1" = *../* ) ]]; then

View file

@ -7,7 +7,7 @@
local curcontext="${curcontext/:[^:]#:/:prefix-${(M)#_completers[1,_completer_num]:#_prefix}:}" comp i local curcontext="${curcontext/:[^:]#:/:prefix-${(M)#_completers[1,_completer_num]:#_prefix}:}" comp i
zstyle -a ":completion:${curcontext}:" completer comp || zstyle -a ":completion:${curcontext}:" completer comp ||
comp=( "${(@)_completers[1,_completer_num-1][(R)_prefix,-1]}" ) comp=( "${(@)_completers[1,_completer_num][(R)_prefix,-1]}" )
if zstyle -t ":completion:${curcontext}:" add-space; then if zstyle -t ":completion:${curcontext}:" add-space; then
ISUFFIX=" $SUFFIX" ISUFFIX=" $SUFFIX"

View file

@ -54,7 +54,7 @@ fi
_menu_style=( "$_last_menu_style[@]" "$_menu_style[@]" ) _menu_style=( "$_last_menu_style[@]" "$_menu_style[@]" )
if zstyle -a ":completion:${curcontext}:$1" menu val; then if zstyle -a ":completion:${curcontext}:$1" menu val; then
_last_nmatches=$nm _last_nmatches=$(( $nm + $compstate[alternate_nmatches] ))
_last_menu_style=( "$val[@]" ) _last_menu_style=( "$val[@]" )
else else
_last_nmatches=-1 _last_nmatches=-1

View file

@ -16,7 +16,7 @@ if (( $# )); then
# We have arguments: the tags supported in this context. # We have arguments: the tags supported in this context.
local curcontext="$curcontext" order tag nodef tmp tmp2 tmp3 als atag local curcontext="$curcontext" order tag nodef
if [[ "$1" = -C?* ]]; then if [[ "$1" = -C?* ]]; then
curcontext="${curcontext%:*}:${1[3,-1]}" curcontext="${curcontext%:*}:${1[3,-1]}"
@ -51,13 +51,7 @@ if (( $# )); then
if [[ -n "$_sort_tags" ]]; then if [[ -n "$_sort_tags" ]]; then
"$_sort_tags" "$@" "$_sort_tags" "$@"
else elif zstyle -a ":completion:${curcontext}:" tag-order order; then
zstyle -a ":completion:${curcontext}:" tag-order order ||
if [[ "$*" = *(arguments|values)* || "$*" = *options* ]] ;then
order=( 'arguments values' options )
else
order=()
fi
for tag in $order; do for tag in $order; do
case $tag in case $tag in
@ -67,49 +61,33 @@ if (( $# )); then
break break
fi fi
;; ;;
\!*) comptry "${(@)argv:#(${(j:|:)~${=~tag[2,-1]}})}";; \!*) comptry "${(@)argv:#(${(j:|:)~${=tag[2,-1]}})}";;
?*) tmp=( ${${(s: :)${tag//\\\\ /$'\0'}}//$'\0'/ } ) tmp2=() tmp3=() ?*) comptry ${${(ps: :)${tag//\\\\ /$'\0'}}//$'\0'/ };;
for tag in "$tmp[@]"; do
if [[ "$tag" = *:* ]]; then
tmp2=( "$tmp2[@]" "${(@M)^argv:#${~tag%%:*}}:${tag#*:}" )
else
for atag in "${(@M)argv:#${~tag}}"; do
if zstyle -a ":completion:${curcontext}:${atag}" tag-aliases als; then
tmp3=( "$tmp3[@]" "$als[@]" )
tmp=( "${(@)tmp:#${atag}}" )
else
tmp2=( "$tmp2[@]" "$atag" )
fi
done
fi
done
comptry "${(@)tmp2:#(${(j:|:)~${(q)tmp%%:*}})}" "$tmp3[@]" "$tmp[@]"
;;
esac esac
done done
if [[ -z "$nodef" ]]; then if [[ -z "$nodef" ]]; then
if (( $+_comp_default_tags )); then if (( $+_comp_default_tags )); then
for tag in "$_comp_default_tags[@]"; do for tag in "$_comp_default_tags[@]"; do
if zstyle -a ":completion:${curcontext}:${tag}" tag-aliases als; then comptry "$tag"
comptry "$als[@]"
else
comptry "$tag"
fi
done done
else else
tmp2=() comptry "$@"
for tag; do
if zstyle -a ":completion:${curcontext}:${tag}" tag-aliases als; then
tmp2=( "$tmp2[@]" "$als[@]" )
else
tmp2=( "$tmp2[@]" "$tag" )
fi
done
comptry "$tmp2[@]"
fi fi
fi fi
else
# Use default tags...
if (( $+_comp_default_tags )); then
for tag in "$_comp_default_tags[@]"; do
comptry "$tag"
done
else
comptry arguments values
comptry options
fi
comptry "$@"
fi fi
# Return non-zero if at least one set of tags should be used. # Return non-zero if at least one set of tags should be used.

View file

@ -2,10 +2,10 @@ DISTFILES_SRC='
.distfiles .distfiles
_a2ps _archie _bison _bunzip2 _bzip2 _chown _compress _a2ps _archie _bison _bunzip2 _bzip2 _chown _compress
_configure _cvs _dd _diff _diff_options _dir_list _dirs _configure _cvs _dd _diff _diff_options _dir_list _dirs
_domains _dvi _find _finger _flex _gcc _gdb _gprof _groups _domains _dvi _find _finger _flex _gcc _gdb _getconf _gprof _groups
_gs _gunzip _gv _gzip _hosts _ispell _killall _lp _lynx _gs _gunzip _gv _gzip _hosts _ispell _killall _lp _lynx
_mailboxes _make _man _mh _mount _mutt _my_accounts _mailboxes _make _man _mh _mount _mutt _my_accounts _mysql_utils _nedit
_netscape _nslookup _other_accounts _pack _patch _pbm _pdf _netscape _nslookup _other_accounts _pack _patch _pbm _pdf _perl
_perl_basepods _perl_builtin_funcs _perl_modules _perldoc _perl_basepods _perl_builtin_funcs _perl_modules _perldoc
_ports _prcs _prompt _ps _pspdf _psutils _rcs _rlogin _sh _socket _ports _prcs _prompt _ps _pspdf _psutils _rcs _rlogin _sh _socket
_ssh _strip _stty _su _sudo _tar _tar_archive _telnet _tex _texi _ssh _strip _stty _su _sudo _tar _tar_archive _telnet _tex _texi

View file

@ -6,8 +6,7 @@ _wanted groups || return 1
if ! zstyle -a ":completion:${curcontext}:" groups groups; then if ! zstyle -a ":completion:${curcontext}:" groups groups; then
(( $+_cache_groups )) || (( $+_cache_groups )) ||
if (( ${+commands[ypcat]} )) && if (( ${+commands[ypcat]} )) && tmp=$(ypcat group.byname); then
tmp=$(_call groups ypcat group.byname); then
: ${(A)_cache_groups:=${${(f)tmp}%%:*}} # If you use YP : ${(A)_cache_groups:=${${(f)tmp}%%:*}} # If you use YP
else else
: ${(A)_cache_groups:=${${(s: :)$(</etc/group)}%%:*}} : ${(A)_cache_groups:=${${(s: :)$(</etc/group)}%%:*}}

View file

@ -63,6 +63,7 @@ _mailbox_cache () {
setopt localoptions nullglob setopt localoptions nullglob
[[ -f ${~muttrc:-.} ]] && [[ -f ${~muttrc:-.} ]] &&
_mutt_cache=( ${$(grep mailboxes ${~muttrc})[2,-1]} ) _mutt_cache=( ${$(grep mailboxes ${~muttrc})[2,-1]} )
@ -76,11 +77,11 @@ _mailbox_cache () {
shift dirboxes shift dirboxes
if [[ -d "$i/cur" ]]; then if [[ -d "$i/cur" ]]; then
_maildir_cache=( "${_maildir_cache[@]}" "$i" ) _maildir_cache=( "${_maildir_cache[@]}" "$i" )
elif j=( $i/<1-> ) && [[ -n "$j" ]]; then elif j=( "$i"/<1-> ) && [[ -n "$j" ]]; then
_mh_cache=( "${_mh_cache[@]}" "$i" ) _mh_cache=( "${_mh_cache[@]}" "$i" )
else else
_mbox_cache=( "${_mbox_cache[@]}" "$i"/*(.) ) _mbox_cache=( "${_mbox_cache[@]}" "$i"/*(.) )
dirboxes=( $dirboxes $i/*(/) ) dirboxes=( $dirboxes "$i"/*(/) )
fi fi
done done

View file

@ -1,7 +1,7 @@
DISTFILES_SRC=' DISTFILES_SRC='
.distfiles .distfiles
_x_arguments _x_borderwidth _x_color _x_cursor _x_display _x_extension _x_arguments _x_borderwidth _x_color _x_colormapid _x_cursor _x_display
_x_font _x_geometry _x_keysym _x_locale _x_modifier _x_name _x_resource _x_extension _x_font _x_geometry _x_keysym _x_locale _x_modifier
_x_selection_timeout _x_title _x_window _xdvi _xfig _xmodmap _xrdb _x_name _x_resource _x_selection_timeout _x_title _x_window _xdvi _xfig
_xt_arguments _xt_session_id _xterm _xutils _xv _xmodmap _xrdb _xt_arguments _xt_session_id _xterm _xutils _xv _xwit
' '

View file

@ -2,7 +2,7 @@
local expl list desc local expl list desc
_wanted colormapids || return 1 _wanted colormapids expl 'colormap id' || return 1
list=(${(f)"$(xprop -root -f RGB_COLOR_MAP 32xcccccccxx ': $0\n'|awk -F'[ ():]' '/^[a-zA-Z_]+\(RGB_COLOR_MAP\)/ {print $5, "--", $1}')"}) list=(${(f)"$(xprop -root -f RGB_COLOR_MAP 32xcccccccxx ': $0\n'|awk -F'[ ():]' '/^[a-zA-Z_]+\(RGB_COLOR_MAP\)/ {print $5, "--", $1}')"})
@ -12,4 +12,4 @@ else
desc=() desc=()
fi fi
_loop colormapids expl 'colormap id' compadd "$@" "$desc[@]" - "${(@)list%% *}" compadd "$expl[@]" "$@" "$desc[@]" - "${(@)list%% *}"

View file

@ -16,8 +16,8 @@ _xwit_guard () {
_xwit_compopts () { _xwit_compopts () {
local expl local expl
_wanted options expl option compadd - ${(k)no[(R)*~0]} || _description options expl option
_loop options expl option compadd - ${(k)no} compadd "$expl[@]" - ${(k)no[(R)*~0]} || compadd "$expl[@]" - ${(k)no}
} }
_regex_arguments _xwit_parse \ _regex_arguments _xwit_parse \

View file

@ -27,5 +27,5 @@
# This must also serve as a shell script, so do not add spaces around the # This must also serve as a shell script, so do not add spaces around the
# `=' signs. # `=' signs.
VERSION=3.1.6-dev-19 VERSION=3.1.6-dev-20
VERSION_DATE='February 20, 2000' VERSION_DATE='February 23, 2000'

View file

@ -979,9 +979,8 @@ if the value contains the string tt(directory), then the tests will
only be performed if only names of directories are completed. only be performed if only names of directories are completed.
Note that names of directories ignored because of one of the tests Note that names of directories ignored because of one of the tests
will be ignored in the same way as the matches ignored because of the will be placed in the alternate set of completions so that they will
tt(ignored-patterns) style. I.e. by using the tt(_ignored) completer be completed if there are no other possible completions.
it is possible to complete these directories nonetheless.
) )
item(tt(ignored-patterns))( item(tt(ignored-patterns))(
This style is used with the tags used when adding matches and defines a This style is used with the tags used when adding matches and defines a
@ -1284,6 +1283,26 @@ A style holding the service names of ports to complete. If this is
not set by the user, the service names from `tt(/etc/services)' will not set by the user, the service names from `tt(/etc/services)' will
be used. be used.
) )
item(tt(prefer-ignored))(
This style is tested by the main completion function before calling a
completer. The context name is formed in the same way as for the
tt(matcher-list) style, i.e. it contains the name of the completer
that will be called plus a hyphen and the number of the call to that
completer.
If the style is set to true and completion did not generate any normal
matches yet, but there are matches that were ignored because they
matched one of the patterns given with the tt(fignore) array or the
tt(ignored-patterns) style, these ignored matches are used immediatly
and no other completer will be called.
It is sometimes useful to set this style for the tt(correct) or
tt(approximate) completer so that ignored matches are prefered over
corrections.
example(zstyle ':completion:*:complete-2:*' prefer-ignored yes
zstyle ':completion:*:(correct|approximate)-1:*' prefer-ignored yes)
)
item(tt(prefix-hidden))( item(tt(prefix-hidden))(
This is used when matches with a common prefix are added (e.g. option This is used when matches with a common prefix are added (e.g. option
names). If it is `true', this prefix will not be shown in the list of names). If it is `true', this prefix will not be shown in the list of
@ -1311,8 +1330,11 @@ matches have no common prefix different from the word on the line or
if there is such a common prefix, respectively. The sequence `tt(%c)' if there is such a common prefix, respectively. The sequence `tt(%c)'
is replaced by the name of the completer function that generated the is replaced by the name of the completer function that generated the
matches (without the leading underscore). Finally, `tt(%n)' is matches (without the leading underscore). Finally, `tt(%n)' is
replaced by the number of matches generated replaced by the number of matches generated, `tt(%a)' is replaced by
and if the tt(list) style is set, `tt(%l)' is an empty string if the matches are in the normal set (i.e. the one
without file names with one of the suffixes from the
tt(ignored-suffixes) style) and with `tt( -alt-)' if the matches are
in the alternate set, and if the tt(list) style is set, `tt(%l)' is
replaced by `tt(...)' if the list of matches is too long to fit on the replaced by `tt(...)' if the list of matches is too long to fit on the
screen and with an empty string otherwise. If the tt(list) style is screen and with an empty string otherwise. If the tt(list) style is
`false', `tt(%l)' will always be removed. `false', `tt(%l)' will always be removed.
@ -1323,9 +1345,12 @@ all duplicate matches should be removed, rather than just consecutive
duplicates. duplicates.
) )
item(tt(single-ignored))( item(tt(single-ignored))(
This is used by the tt(_ignored) completer. It allows to specify what Using styles like tt(ignored-patterns) allows one to put some matches
should be done if it can generate only one match, which is often a in the alternate set of matches which is only used if there are no
special case. If its value is tt(show), the single match will only be shown, `normal' matches. Having only one such normally ignored match is often
a special case because one probably doesn't want that match to be
inserted immediatly. This style allows to configure what to do in such
a case. If its value is tt(show), the single match will only be shown,
not inserted. If the value is tt(menu), then the single match and the not inserted. If the value is tt(menu), then the single match and the
original string are both added as matches and menucompletion is original string are both added as matches and menucompletion is
started so that one can easily select either of them. started so that one can easily select either of them.
@ -1388,34 +1413,6 @@ example(zstyle ':completion:*:expand:::' substitute '${NUMERIC:-1} != 1')
substitution will be performed only if given an explicit numeric substitution will be performed only if given an explicit numeric
argument other than `tt(1)', as by typing `tt(ESC 2 TAB)'. argument other than `tt(1)', as by typing `tt(ESC 2 TAB)'.
) )
item(tt(tag-aliases))(
This allows to give aliases for tags that are to be used whenever the
tag this style is set for is used (see the tt(tag-order) style below
for a description of tag aliases).
The value is a list of strings of the same form used by the
tt(tag-order) style: `var(tag)tt(:)var(alias)', optionally followed by
a second colon and a description.
The effect of using this style is that the var(tag) is offered more
than once, once for each alias. For example, together with the
tt(ignored-patterns) style this allows to split the matches for the
tag into different groups, as in:
example(zstyle ':completion:*:options' tag-aliases \
'options:-long:long options' \
'options:-short:short options' \
'options:-single-letter:single letter options'
zstyle ':completion:*:options-long' ignored-patterns '[-+](|-|[^-]*)'
zstyle ':completion:*:options-short' ignored-patterns '--*' '[-+]?'
zstyle ':completion:*:options-single-letter' ignored-patterns '???*')
With the tt(group-names) style set, this makes options beginning with
`tt(-)tt(-)', options beginning with a single `tt(-)' or `tt(+)' but
containing multiple characters and single-letter options be displayed
in separate groups with different descriptions.
)
item(tt(tag-order))( item(tt(tag-order))(
This provides a mechanism for sorting how the tags available in a This provides a mechanism for sorting how the tags available in a
particular context will be used. particular context will be used.
@ -1448,20 +1445,22 @@ to specify tag aliases instead of only tags. These are of the form
by the completion function for the current context and var(alias) is a by the completion function for the current context and var(alias) is a
name. For this, the completion function will generate matches in the name. For this, the completion function will generate matches in the
same way as for the var(tag) but it will use the var(alias) in place same way as for the var(tag) but it will use the var(alias) in place
of the tag in the context names used to look up styles. If the of the tag in the context names used to look up styles. This can be
var(alias) starts with a hyphen, the var(tag) is prepended to the
var(alias) to form the name used for lookup. This can be
used to make the completion system try a certain tag more than once, used to make the completion system try a certain tag more than once,
supplying different style settings for each attempt. For example, supplying different style settings for each attempt. For example,
example(zstyle ':completion:*:*:-command-:*' tag-order 'functions:-non-comp' example(zstyle ':completion:*:*:-command-:*' tag-order 'functions:-non-comp'
zstyle ':completion:*:functions-non-comp' ignored-patterns '_*') zstyle '*:-non-comp' ignored-patterns '_*')
Makes completion in command position first try only names of shell Makes completion in command position first try only names of shell
functions that don't match the pattern `tt(_*)'. If that generates no functions that don't match the pattern `tt(_*)'. If that generates no
matches, the default of trying all the other things that can be matches, the default of trying all the other things that can be
completed in command position is used, including the names of all completed in command position is used, including the names of all
shell functions. shell functions. Note that the var(alias) used in this example
`tt(-non-comp)' with the hyphen at the bginning is not in any way
special to the completion system. But since no other tag starts with a
hyphen, using such a name allows to use a context pattern as short as
the one in the second line without making it ambiguous.
The var(alias) may optionally be followed by a second colon and a The var(alias) may optionally be followed by a second colon and a
description. This description will then be used for the `tt(%d)' in description. This description will then be used for the `tt(%d)' in
@ -1471,53 +1470,6 @@ be quoted by preceding them with a backslash and a `tt(%d)' appearing
in the description is replaced with the description given by the in the description is replaced with the description given by the
completion function. completion function.
In each of the cases above, the tag may also be a pattern. In this
case all of the offered tags matching this pattern will be used except
for those that are given explicitly in the same string. There are
probably two main uses of this. One is the case where one wants to try
one of the tags more than once, setting other styles differently for
each try, but still wants to use all the other tags without having to
bother to repeat them all. For example, to make completion of function
names in command position first ignore all the completion functions
starting with an underscore one could do:
example(zstyle ':completion:*:*:-command-:*' tag-order \
'functions:-non-comp *' functions
zstyle ':completion:*:functions-non-comp' ignored-patterns '_*')
Here, the completion system will first try all tags offered, but will
use the tag alias tt(functions-non-comp) when looking up styles for
the function names completed. For this, the tt(ignored-patterns) style
is set to make functions starting with an underscore be not considered
as possible matches. If none of the generated matches match the string
on the line, the completion system will use the second value of the
tt(tag-order) style and complete functions names again, but this time
using so name tt(functions) to look up styles, so that the
tt(ignored-patterns) style will not be used and all function names
will be considered.
The second interesting use of patterns is the case where one wants to
try multiple match specifications one after another. The
tt(atcher-list) style offers something similar, but it is tested very
early in the completion system and hence can't be set for single
commands or even more specific contexts. So, to make completion for
the arguments of the command tt(foo) and only for this command first
try normal completion with out any match specification and, if that
generates no matches, try again with case-insensitive matching, one
could do:
example(zstyle ':completion:*:*:foo:*' tag-order '*' '*:-case'
zstyle ':completion:*-case' matcher 'm:{a-z}={A-Z}')
This will make the completion system first try all the tags offered
when completing after tt(foo) and use the tags to do the lookup. If
that generates no matches, the second value of tt(tag-order) is
used. This will make all tags be tried again, but this time using the
names of the tags with the tt(-case) appended to them for lookup of
styles. I.e. in this second attempt, the value for the tt(matcher)
style from the second call to tt(zstyle) in the example will be used
to make completion case-insensitive.
Strings in the value may also be of the form `var(func)tt(())'. In Strings in the value may also be of the form `var(func)tt(())'. In
this case the function var(func) will be called which can then define this case the function var(func) will be called which can then define
in which order tags are to be used based on additional context in which order tags are to be used based on additional context
@ -1589,6 +1541,10 @@ item(tt(users-hosts-ports))(
Like tt(users-hosts) but used for commands like tt(telnet) and Like tt(users-hosts) but used for commands like tt(telnet) and
containing strings of the form `var(user)tt(@)var(host)tt(:)var(port)'. containing strings of the form `var(user)tt(@)var(host)tt(:)var(port)'.
) )
item(tt(users-hosts-ports))(
Like tt(users-hosts) but used for commands like tt(telnet) and
containing strings of the form `var(user)tt(@)var(host)tt(:)var(port)'.
)
item(tt(verbose))( item(tt(verbose))(
This is used in several contexts to decide if only a simple or a This is used in several contexts to decide if only a simple or a
verbose list of matches should be generated. For example some commands verbose list of matches should be generated. For example some commands
@ -1885,20 +1841,6 @@ tt(COMPLETE_IN_WORD) option is set. Because otherwise the cursor will
be set after the word before the completion code is called and hence be set after the word before the completion code is called and hence
there will be no suffix. there will be no suffix.
) )
findex(_ignored)
item(tt(_ignored))(
Using the tt(ignored-patterns) style it is possible to make some
matches be ignored. This completer allows to complete these matches as
if no tt(ignored-patterns) style were set. Which completers are called
for this is determined in the same way as for the tt(_prefix)
completer.
Finally, tt(_ignored) uses the tt(single-ignored) style if only one
match could be generated. It can be set to tt(show) to make that match
be only displayed, not inserted into the line or it can be set to
tt(menu) to make the single match and the original string from the
line be offered in a menucompletion.
)
findex(_menu) findex(_menu)
item(tt(_menu))( item(tt(_menu))(
This completer is a simple example function implemented to show how This completer is a simple example function implemented to show how

View file

@ -197,13 +197,16 @@ level.
) )
item(tt(nmatches))( item(tt(nmatches))(
The number of matches generated and accepted by the completion code so The number of matches generated and accepted by the completion code so
far. far, excluding those matches that are only accepted by ignoring the
) tt(fignore) parameter and the tt(-a) option of the tt(compadd) builtin
item(tt(ignored))(
The number of words that were ignored because they matched one of the
patterns given with the tt(-F) option to the tt(compadd) builtin
command. command.
) )
item(tt(alternate_nmatches))(
Like tt(nmatches), but counts only matches in the alternate set. I.e. file
names with one of the suffixes from the tt(fignore) array and matches
put into the alternate set using the tt(-a) option of the tt(compadd)
builtin command (see below) are not counted.
)
item(tt(restore))( item(tt(restore))(
This is set to tt(auto) before a function is entered, which forces the This is set to tt(auto) before a function is entered, which forces the
special parameters mentioned above (tt(words), tt(CURRENT), tt(PREFIX), special parameters mentioned above (tt(words), tt(CURRENT), tt(PREFIX),
@ -515,9 +518,23 @@ with any prefix specified by the tt(-p) option to form a complete filename
for testing. Hence it is only useful if combined with the tt(-f) flag, as for testing. Hence it is only useful if combined with the tt(-f) flag, as
the tests will not otherwise be performed. the tests will not otherwise be performed.
) )
item(tt(-a))(
The completion code may build two sets of matches: the normal and the
alternate set. Normally only the matches in the first set are used,
but if this set is empty, the words from the alternate set are
used. The completion code uses this mechanism, for example, to make
filenames without one of the suffixes defined with the tt(fignore)
shell parameter be preferred over filenames with one of these
suffixes.
With the tt(-a)-flag given, the var(words) are stored in the alternate
set unless this flag is overridden by the tt(-F) option.
)
item(tt(-F) var(array))( item(tt(-F) var(array))(
Specifies an array containing patterns. Words matching one of these Specifies an array containing patterns.
patterns are ignored, i.e. not considered to be possible matches. Words matching one of these patterns are stored in
the alternate set of matches and words that match none of the patterns
are stored in the normal set.
The var(array) may be the name of an array parameter or a list of The var(array) may be the name of an array parameter or a list of
literal patterns enclosed in parentheses and quoted, as in `tt(-F "(*?.o literal patterns enclosed in parentheses and quoted, as in `tt(-F "(*?.o

View file

@ -18,6 +18,10 @@ The format of entries is thus:
Machines Machines
-------- --------
Apple/NeXT OpenStep 4.2 for i386.
Reported to work at least with gcc 2.8.1 and gawk 2.15 patchlevel
6, but not with the bundled cc 2.7.2.1 and awk.
Cray: Unicos (C90 and T90) Cray: Unicos (C90 and T90)
Should build `out-of-the-box'. Should build `out-of-the-box'.
@ -66,7 +70,7 @@ IBM: AIX 3.2, 4.1
4.1, though native cc works. More information about this problem 4.1, though native cc works. More information about this problem
would be appreciated. would be appreciated.
Linux: Linux (i386) [3.1.4] Linux: Linux (i[345]86,various Pentia,AMD K6/2)
Should build `out-of-the-box'. Should build `out-of-the-box'.
If you are using an early minor version of libc 5, then a bug If you are using an early minor version of libc 5, then a bug
@ -80,6 +84,13 @@ Linux: Linux (i386) [3.1.4]
on Linux Alpha with egcs 1.0.3a and 1.1.1 using -O1 or greater, on Linux Alpha with egcs 1.0.3a and 1.1.1 using -O1 or greater,
the completion code is not correctly compiled. the completion code is not correctly compiled.
Some versions of glibc2 have a conflict with <asm/resource.h>
which causes a redefinition warning on RLIM_INFINITY. This
causes configure to decide that <sys/resource.h> is not present,
which can cause compilation errors in zsh's rlimit code. The
best solution is to edit config.h after running configure and
#define HAS_SYS_RESOURCE_H.
NetBSD: NetBSD 1.* NetBSD: NetBSD 1.*
Should build `out-of-the-box'. Should build `out-of-the-box'.

View file

@ -1,6 +1,6 @@
DISTFILES_SRC=' DISTFILES_SRC='
.distfiles .distfiles
prompt_elite2_setup prompt_adam1_setup prompt_fade_setup prompt_elite2_setup prompt_adam1_setup prompt_bart_setup prompt_fade_setup
prompt_elite_setup prompt_redhat_setup prompt_adam2_setup prompt_elite_setup prompt_redhat_setup prompt_adam2_setup
prompt_fire_setup prompt_suse_setup prompt_bigfade_setup prompt_fire_setup prompt_suse_setup prompt_bigfade_setup
prompt_oliver_setup prompt_off_setup prompt_zefram_setup prompt_oliver_setup prompt_off_setup prompt_zefram_setup

View file

@ -17,7 +17,7 @@ incremental-complete-word() {
unsetopt autolist menucomplete automenu # doesn't work well unsetopt autolist menucomplete automenu # doesn't work well
local key lbuf="$LBUFFER" rbuf="$RBUFFER" pmpt pstr word local key lbuf="$LBUFFER" rbuf="$RBUFFER" pmpt pstr word
local lastl lastr wid twid num post toolong local lastl lastr wid twid num alt post toolong
local curcontext="${curcontext}" stop brk local curcontext="${curcontext}" stop brk
[[ -z "$curcontext" ]] && curcontext=::: [[ -z "$curcontext" ]] && curcontext=:::
@ -41,6 +41,10 @@ incremental-complete-word() {
LBUFFER="$lbuf" LBUFFER="$lbuf"
RBUFFER="$rbuf" RBUFFER="$rbuf"
num=$_lastcomp[nmatches] num=$_lastcomp[nmatches]
if (( ! num )); then
num="${_lastcomp[alternate_nmatches]}"
alt=' -alt-'
fi
if (( ! num )); then if (( ! num )); then
word='' word=''
state='-no match-' state='-no match-'
@ -51,7 +55,7 @@ incremental-complete-word() {
word="${_lastcomp[unambiguous]}" word="${_lastcomp[unambiguous]}"
state='' state=''
fi fi
zformat -f pstr "$pmpt" "u:${word}" "s:$state" "n:$num" \ zformat -f pstr "$pmpt" "u:${word}" "s:$state" "n:$num" "a:$alt" \
"l:$toolong" "c:${_lastcomp[completer][2,-1]}" "l:$toolong" "c:${_lastcomp[completer][2,-1]}"
zle -R "$pstr" zle -R "$pstr"
read -k key read -k key
@ -83,6 +87,12 @@ incremental-complete-word() {
LBUFFER="$lastl" LBUFFER="$lastl"
RBUFFER="$lastr" RBUFFER="$lastr"
num=$_lastcomp[nmatches] num=$_lastcomp[nmatches]
if (( ! num )); then
num="${_lastcomp[alternate_nmatches]}"
alt=' -alt-'
else
alt=''
fi
if (( ! num )); then if (( ! num )); then
word='' word=''
state='-no match-' state='-no match-'
@ -93,7 +103,7 @@ incremental-complete-word() {
word="${_lastcomp[unambiguous]}" word="${_lastcomp[unambiguous]}"
state='' state=''
fi fi
zformat -f pstr "$pmpt" "u:${word}" "s:$state" "n:$num" \ zformat -f pstr "$pmpt" "u:${word}" "s:$state" "n:$num" "a:$alt" \
"l:$toolong" "c:${_lastcomp[completer][2,-1]}" "l:$toolong" "c:${_lastcomp[completer][2,-1]}"
zle -R "$pstr" zle -R "$pstr"
read -k key read -k key

View file

@ -131,7 +131,7 @@ predict-limit-list() {
then then
compstate[list]='' compstate[list]=''
compstate[force_list]=yes compstate[force_list]=yes
elif zstyle -t ":completion:::predict::" list always elif zstyle -t ":completion:predict::::" list always
then then
compstate[force_list]=yes compstate[force_list]=yes
fi fi

View file

@ -165,7 +165,7 @@ get_pty(int *master, int *slave)
#else /* ! __osf__ */ #else /* ! __osf__ */
#if defined(__SVR4) || defined(sinix) #if __SVR4
#include <sys/stropts.h> #include <sys/stropts.h>
@ -174,12 +174,11 @@ get_pty(int *master, int *slave)
{ {
int mfd, sfd; int mfd, sfd;
char *name; char *name;
int ret;
if ((mfd = open("/dev/ptmx", O_RDWR)) < 0) if ((mfd = open("/dev/ptmx", O_RDWR)) < 0)
return 1; return 1;
if (grantpt(mfd) || unlockpt(mfd) || !(name = ptsname(mfd))) { if (!(name = ptsname(mfd)) || grantpt(mfd) || unlockpt(mfd)) {
close(mfd); close(mfd);
return 1; return 1;
} }
@ -187,31 +186,31 @@ get_pty(int *master, int *slave)
close(mfd); close(mfd);
return 1; return 1;
} }
if ((ret = ioctl(sfd, I_FIND, "ptem")) != 1) if ((ret = ioctl(sfd, I_FIND, "ptem")) != 1)
if (ret == -1 || ioctl(sfd, I_PUSH, "ptem") == -1) { if (ret == -1 || ioctl(sfd, I_PUSH, "ptem") == -1) {
close(mfd); close(mfd);
close(sfd); close(sfd);
return 1; return 1;
} }
if ((ret = ioctl(sfd, I_FIND, "ldterm")) != 1) if ((ret = ioctl(sfd, I_FIND, "ldterm")) != 1)
if (ret == -1 || ioctl(sfd, I_PUSH, "ldterm") == -1) { if (ret == -1 || ioctl(sfd, I_PUSH, "ldterm") == -1) {
close(mfd); close(mfd);
close(sfd); close(sfd);
return 1; return 1;
} }
if ((ret = ioctl(sfd, I_FIND, "ttcompat")) != 1) if ((ret = ioctl(sfd, I_FIND, "ttcompat")) != 1)
if (ret == -1 || ioctl(sfd, I_PUSH, "ttcompat") == -1) { if (ret == -1 || ioctl(sfd, I_PUSH, "ttcompat") == -1) {
close(mfd); close(mfd);
close(sfd); close(sfd);
return 1; return 1;
} }
*master = mfd; *master = mfd;
*slave = sfd; *slave = sfd;
return 0; return 0;
} }
#else /* ! (defined(__SVR4) || defined(sinix)) */ #else /* ! (defined(__SVR4) || defined(sinix)) */
static int static int
get_pty(int *master, int *slave) get_pty(int *master, int *slave)

View file

@ -229,9 +229,10 @@ struct menuinfo {
#define CAF_QUOTE 1 #define CAF_QUOTE 1
#define CAF_NOSORT 2 #define CAF_NOSORT 2
#define CAF_MATCH 4 #define CAF_ALT 4
#define CAF_UNIQCON 8 #define CAF_MATCH 8
#define CAF_UNIQALL 16 #define CAF_UNIQCON 16
#define CAF_UNIQALL 32
/* Data for compadd and addmatches() */ /* Data for compadd and addmatches() */
@ -350,12 +351,12 @@ typedef void (*CLPrintFunc)(Cmgroup, Cmatch *, int, int, int, int,
#define CP_OLDINS (1 << CPN_OLDINS) #define CP_OLDINS (1 << CPN_OLDINS)
#define CPN_VARED 20 #define CPN_VARED 20
#define CP_VARED (1 << CPN_VARED) #define CP_VARED (1 << CPN_VARED)
#define CPN_LISTLINES 21 #define CPN_ANMATCHES 21
#define CP_ANMATCHES (1 << CPN_ANMATCHES)
#define CPN_LISTLINES 22
#define CP_LISTLINES (1 << CPN_LISTLINES) #define CP_LISTLINES (1 << CPN_LISTLINES)
#define CPN_QUOTES 22 #define CPN_QUOTES 23
#define CP_QUOTES (1 << CPN_QUOTES) #define CP_QUOTES (1 << CPN_QUOTES)
#define CPN_IGNORED 23
#define CP_IGNORED (1 << CPN_IGNORED)
#define CP_KEYPARAMS 24 #define CP_KEYPARAMS 24
#define CP_ALLKEYS ((unsigned int) 0xffffff) #define CP_ALLKEYS ((unsigned int) 0xffffff)

View file

@ -307,7 +307,6 @@ do_completion(Hookdef dummy, Compldat dat)
hasmatched = hasunmatched = 0; hasmatched = hasunmatched = 0;
minmlen = 1000000; minmlen = 1000000;
maxmlen = -1; maxmlen = -1;
compignored = 0;
/* Make sure we have the completion list and compctl. */ /* Make sure we have the completion list and compctl. */
if (makecomplist(s, incmd, lst)) { if (makecomplist(s, incmd, lst)) {
@ -1464,7 +1463,7 @@ addmatches(Cadata dat, char **argv)
int lpl, lsl, pl, sl, bcp = 0, bcs = 0, bpadd = 0, bsadd = 0; int lpl, lsl, pl, sl, bcp = 0, bcs = 0, bpadd = 0, bsadd = 0;
int ppl = 0, psl = 0; int ppl = 0, psl = 0;
int llpl = 0, llsl = 0, nm = mnum, gflags = 0, ohp = haspattern; int llpl = 0, llsl = 0, nm = mnum, gflags = 0, ohp = haspattern;
int isexact, doadd, ois = instring, oib = inbackt; int oisalt = 0, isalt, isexact, doadd, ois = instring, oib = inbackt;
Cline lc = NULL, pline = NULL, sline = NULL; Cline lc = NULL, pline = NULL, sline = NULL;
Cmatch cm; Cmatch cm;
struct cmlist mst; struct cmlist mst;
@ -1744,6 +1743,7 @@ addmatches(Cadata dat, char **argv)
} else } else
dat->prpre = dupstring(dat->prpre); dat->prpre = dupstring(dat->prpre);
/* Select the set of matches. */ /* Select the set of matches. */
oisalt = (dat->aflags & CAF_ALT);
if (dat->remf) { if (dat->remf) {
dat->remf = dupstring(dat->remf); dat->remf = dupstring(dat->remf);
@ -1761,7 +1761,7 @@ addmatches(Cadata dat, char **argv)
/* Walk through the matches given. */ /* Walk through the matches given. */
obpl = bpl; obpl = bpl;
obsl = bsl; obsl = bsl;
if (aign || pign) { if (!oisalt && (aign || pign)) {
int max = 0; int max = 0;
char **ap = argv; char **ap = argv;
@ -1780,8 +1780,9 @@ addmatches(Cadata dat, char **argv)
disp = NULL; disp = NULL;
} }
sl = strlen(s); sl = strlen(s);
if (aign || pign) { isalt = oisalt;
int il = ppl + sl + psl, addit = 1; if (!isalt && (aign || pign)) {
int il = ppl + sl + psl;
if (ppl) if (ppl)
memcpy(ibuf, dat->ppre, ppl); memcpy(ibuf, dat->ppre, ppl);
@ -1795,19 +1796,15 @@ addmatches(Cadata dat, char **argv)
char **pt = aign; char **pt = aign;
int filell; int filell;
for (; addit && *pt; pt++) for (isalt = 0; !isalt && *pt; pt++)
addit = !((filell = strlen(*pt)) < il && isalt = ((filell = strlen(*pt)) < il &&
!strcmp(*pt, ibuf + il - filell)); !strcmp(*pt, ibuf + il - filell));
} }
if (addit && pign) { if (!isalt && pign) {
Patprog *pt = pign; Patprog *pt = pign;
for (; addit && *pt; pt++) for (isalt = 0; !isalt && *pt; pt++)
addit = !pattry(*pt, ibuf); isalt = pattry(*pt, ibuf);
}
if (!addit) {
compignored++;
continue;
} }
} }
if (!(dat->aflags & CAF_MATCH)) { if (!(dat->aflags & CAF_MATCH)) {
@ -1835,7 +1832,7 @@ addmatches(Cadata dat, char **argv)
for (bp = obsl; bp; bp = bp->next) for (bp = obsl; bp; bp = bp->next)
bp->curpos += bsadd; bp->curpos += bsadd;
if ((cm = add_match_data(0, ms, lc, dat->ipre, NULL, if ((cm = add_match_data(isalt, ms, lc, dat->ipre, NULL,
dat->isuf, dat->pre, dat->prpre, dat->isuf, dat->pre, dat->prpre,
dat->ppre, pline, dat->ppre, pline,
dat->psuf, sline, dat->psuf, sline,
@ -2178,8 +2175,6 @@ add_match_data(int alt, char *str, Cline line,
newmatches = 1; newmatches = 1;
mgroup->new = 1; mgroup->new = 1;
if (alt)
compignored++;
if (!complastprompt || !*complastprompt) if (!complastprompt || !*complastprompt)
dolastprompt = 0; dolastprompt = 0;

View file

@ -36,8 +36,7 @@
mod_export zlong compcurrent; mod_export zlong compcurrent;
/**/ /**/
zlong complistmax, zlong complistmax,
complistlines, complistlines;
compignored;
/**/ /**/
mod_export mod_export
@ -477,6 +476,9 @@ bin_compadd(char *name, char **argv, char *ops, int func)
sp = &(dat.prpre); sp = &(dat.prpre);
e = "string expected after -%c"; e = "string expected after -%c";
break; break;
case 'a':
dat.aflags |= CAF_ALT;
break;
case 'M': case 'M':
sp = &m; sp = &m;
e = "matching specification expected after -%c"; e = "matching specification expected after -%c";
@ -910,9 +912,9 @@ static struct compparam compkparams[] = {
{ "old_list", PM_SCALAR, VAL(compoldlist), NULL, NULL }, { "old_list", PM_SCALAR, VAL(compoldlist), NULL, NULL },
{ "old_insert", PM_SCALAR, VAL(compoldins), NULL, NULL }, { "old_insert", PM_SCALAR, VAL(compoldins), NULL, NULL },
{ "vared", PM_SCALAR, VAL(compvared), NULL, NULL }, { "vared", PM_SCALAR, VAL(compvared), NULL, NULL },
{ "alternate_nmatches", PM_INTEGER | PM_READONLY, NULL, NULL, VAL(get_anmatches) },
{ "list_lines", PM_INTEGER | PM_READONLY, NULL, NULL, VAL(get_listlines) }, { "list_lines", PM_INTEGER | PM_READONLY, NULL, NULL, VAL(get_listlines) },
{ "all_quotes", PM_SCALAR | PM_READONLY, VAL(compqstack), NULL, NULL }, { "all_quotes", PM_SCALAR | PM_READONLY, VAL(compqstack), NULL, NULL },
{ "ignored", PM_INTEGER | PM_READONLY, VAL(compignored), NULL, NULL },
{ NULL, 0, NULL, NULL, NULL } { NULL, 0, NULL, NULL, NULL }
}; };
@ -1023,7 +1025,14 @@ set_compstate(Param pm, HashTable ht)
static zlong static zlong
get_nmatches(Param pm) get_nmatches(Param pm)
{ {
return (permmatches(0) ? 0 : nmatches); return num_matches(1);
}
/**/
static zlong
get_anmatches(Param pm)
{
return num_matches(0);
} }
/**/ /**/

View file

@ -1102,6 +1102,22 @@ do_ambig_menu(void)
minfo.cur = mc; minfo.cur = mc;
} }
/* Return the real number of matches. */
/**/
zlong
num_matches(int normal)
{
int alt;
alt = permmatches(0);
if (normal)
return (alt ? 0 : nmatches);
else
return (alt ? nmatches : 0);
}
/* Return the number of screen lines needed for the list. */ /* Return the number of screen lines needed for the list. */
/**/ /**/

View file

@ -2363,7 +2363,7 @@ bin_comptags(char *nam, char **args, char *ops, int func)
return 1; return 1;
} }
s->ptr = q + 1; s->ptr = q + 1;
setsparam(args[2], ztrdup(*v == '-' ? dyncat(args[1], v) : v)); setsparam(args[2], ztrdup(v));
return 0; return 0;
} }
return 1; return 1;

View file

@ -333,7 +333,7 @@ zrefresh(void)
tsetcap(TCUNDERLINEEND, 0); tsetcap(TCUNDERLINEEND, 0);
if (!clearflag) { if (!clearflag) {
if (tccan(TCCLEAREOD) && isset(ALWAYSLASTPROMPT)) if (tccan(TCCLEAREOD))
tcout(TCCLEAREOD); tcout(TCCLEAREOD);
else else
cleareol = 1; /* request: clear to end of line */ cleareol = 1; /* request: clear to end of line */

View file

@ -122,7 +122,8 @@ getpermtext(Eprog prog, Wordcode c)
tlim = tbuf + tsiz; tlim = tbuf + tsiz;
tindent = 1; tindent = 1;
tjob = 0; tjob = 0;
gettext2(&s); if (prog->len)
gettext2(&s);
*tptr = '\0'; *tptr = '\0';
untokenize(tbuf); untokenize(tbuf);
return tbuf; return tbuf;
@ -194,9 +195,6 @@ struct tstack {
struct { struct {
int par; int par;
} _cond; } _cond;
struct {
Wordcode end;
} _subsh;
} u; } u;
}; };
@ -332,10 +330,8 @@ gettext2(Estate state)
if (!s) { if (!s) {
taddstr("( "); taddstr("( ");
tindent++; tindent++;
n = tpush(code, 1); tpush(code, 1);
n->u._subsh.end = state->pc + WC_SUBSH_SKIP(code);
} else { } else {
state->pc = s->u._subsh.end;
tindent--; tindent--;
taddstr(" )"); taddstr(" )");
stack = 1; stack = 1;
@ -345,10 +341,8 @@ gettext2(Estate state)
if (!s) { if (!s) {
taddstr("{ "); taddstr("{ ");
tindent++; tindent++;
n = tpush(code, 1); tpush(code, 1);
n->u._subsh.end = state->pc + WC_CURSH_SKIP(code);
} else { } else {
state->pc = s->u._subsh.end;
tindent--; tindent--;
taddstr(" }"); taddstr(" }");
stack = 1; stack = 1;

View file

@ -3,5 +3,6 @@ DISTFILES_SRC='
ztst.zsh comptest ztst.zsh comptest
01grammar.ztst 02alias.ztst 03quoting.ztst 04redirect.ztst 01grammar.ztst 02alias.ztst 03quoting.ztst 04redirect.ztst
05command.ztst 06arith.ztst 07cond.ztst 08traps.ztst 09funcdef.ztst 05command.ztst 06arith.ztst 07cond.ztst 08traps.ztst 09funcdef.ztst
10prompt.ztst 50cd.ztst 51xtrace.ztst 52zregexparse.ztst 53completion.ztst 10prompt.ztst 11glob.ztst 50cd.ztst 51xtrace.ztst 52zregexparse.ztst
53completion.ztst
' '