mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-13 11:21:13 +02:00
zsh-3.1.6
This commit is contained in:
parent
14810d6df1
commit
61e68d70da
29 changed files with 710 additions and 240 deletions
97
ChangeLog
97
ChangeLog
|
@ -1,3 +1,100 @@
|
|||
1999-08-01 Peter Stephenson <pws@ibmth.df.unipi.it>
|
||||
|
||||
* pws: Config/version.mk: zsh 3.1.6 released.
|
||||
|
||||
1999-07-30 Peter Stephenson <pws@ibmth.df.unipi.it>
|
||||
|
||||
* pws, Bart: 7321, 7325: Src/hist.c: NO_BANG_HIST wasn't working
|
||||
at all, but be careful not to disable too much when it's
|
||||
in effect.
|
||||
|
||||
* Tanaka Akira: 7318: Completion/User/_cvs: more improvements
|
||||
|
||||
1999-07-29 Peter Stephenson <pws@ibmth.df.unipi.it>
|
||||
|
||||
* pws: 7316: Doc/Zsh/compsys.yo: mention that compctl -M control
|
||||
is available and fix some typos.
|
||||
|
||||
* pws: unposted: Doc/Zsh/metafaq.yo: sites in Italy and Poland
|
||||
(the one in Italy is not `official', but is actively mirroring
|
||||
ftp.zsh.org anyway).
|
||||
|
||||
* Felix Rosencrantz: 7311: Src/Zle/zle_tricky.c: matching control
|
||||
left dangling pointers.
|
||||
|
||||
* Tanaka Akira: 7312: Completion/User/_cvs: don't quote ignore
|
||||
patterns.
|
||||
|
||||
1999-07-28 Peter Stephenson <pws@ibmth.df.unipi.it>
|
||||
|
||||
* pws: 7308, 7309: Src/Zle/zle_tricky.c: glob patterns were
|
||||
limited to PATH_MAX and length wasn't tested.
|
||||
|
||||
* Tanaka Akira: 7307: Completion/User/_cvs: remove parentheses,
|
||||
complete argument options.
|
||||
|
||||
* pws: 7305: Doc/Zsh/zftpsys.yo, Functions/Zftp/zfanon,
|
||||
Functions/Zftp/zfget, Functions/Zftp/zfopen,
|
||||
Functions/Zftp/zftp_chpwd: use URL-style paths in opening;
|
||||
zfget -c sends output to stdout; don't delete current directory
|
||||
information if we haven't really changed directory.
|
||||
|
||||
* Bart: 7301: Completion/User/_cvs: restored .file completion
|
||||
|
||||
1999-07-27 Peter Stephenson <pws@ibmth.df.unipi.it>
|
||||
|
||||
* pws: 7300: Completion/Core/compdump: wasn't ignoring . in fpath,
|
||||
although compinit was.
|
||||
|
||||
* pws: 7299: configure.in: don't use gcc -pedantic any more, since
|
||||
there are too many messages about `long long' and variable-sized
|
||||
arrays not being available in ISO C.
|
||||
|
||||
* pws: 7298: Src/Zle/zle_tricky.c: missing dupstring() in
|
||||
comp_match.
|
||||
|
||||
* pws: 7297: Completion/Core/_path_files, Doc/Zsh/compsys.yo:
|
||||
path_keepdir config key required for 7141 to come into effect
|
||||
due to significant side effects.
|
||||
|
||||
* Tanaka Akira: 7290, 7292: Completion/User/_cvs: condensed
|
||||
version of all _cvs completion stuff; completes files if not
|
||||
under CVS control; use compgen -p to work around problem with
|
||||
quoted characters.
|
||||
|
||||
* Andrej: 7827: Etc/Machines: Siemens info
|
||||
|
||||
* Bart: 7285, applied by hand: Completion/User/_cvs: parameter
|
||||
fixes, commit bug.
|
||||
|
||||
* Tanaka Akira: 7284: Completion/Core/compdump: careful when
|
||||
two shells start at once.
|
||||
|
||||
* Tanaka Akira: 7282: Completion/User/_cvs,
|
||||
Completion/User/_cvsaddp, Completion/User/_cvsentries_modified,
|
||||
Completion/User/_cvsprefix, Completion/User/_cvsremovep,
|
||||
Completion/User/_cvstargets, Completion/User/_cvstargets_modified:
|
||||
handle modified files using stat module.
|
||||
|
||||
1999-07-26 Peter Stephenson <pws@ibmth.df.unipi.it>
|
||||
|
||||
* Tanaka Akira: 7278: Completion/Base/_complete_opts:
|
||||
less verbosity
|
||||
|
||||
1999-07-25 Peter Stephenson <pws@ibmth.df.unipi.it>
|
||||
|
||||
* Tanaka Akira: 7276, 7277, 7279: Completion/User/{_cvs, _cvsaddp,
|
||||
_cvsentries, _cvsprefix, _cvsremovep, _cvsrepositories,
|
||||
_cvsrevisions, _cvstargets, _cvstest}, Misc/compctl-examples:
|
||||
more modular cvs new completion support including CVS/Entries;
|
||||
bug fix for old CVS completion.
|
||||
|
||||
* Bart: 7275: Doc/intro.ms: now works with groff.
|
||||
|
||||
* Bart: 7274: Src/Zle/zle_tricky.c: don't go beyond end of line
|
||||
|
||||
* pws: from Bart: Etc/CONTRIBUTORS, Etc/NEWS: updates for 3.0.6
|
||||
|
||||
1999-07-24 Peter Stephenson <pws@ibmth.df.unipi.it>
|
||||
|
||||
* pws: version 3.1.6-test-3
|
||||
|
|
|
@ -81,7 +81,9 @@ case "${#no_arg}-${#with_arg}" in
|
|||
esac
|
||||
|
||||
if [[ -z "$done" ]]; then
|
||||
compadd - -${(k)^option_pairs:gs/://}
|
||||
if (( $+complete_opts_verbose )); then
|
||||
compadd - -${(k)^option_pairs:gs/://}
|
||||
fi
|
||||
false
|
||||
else
|
||||
true
|
||||
|
|
|
@ -260,7 +260,14 @@ for prepath in "$prepaths[@]"; do
|
|||
# original string in such a case so that the command line doesn't
|
||||
# change but other completers still think there are matches.
|
||||
|
||||
if [[ -z "$tpre$tsuf" && "$pre" = */ && -z "$suf" ]]; then
|
||||
# Problem: this seems to stop _files from finding directory
|
||||
# completions if there were no file completions, for
|
||||
# example `_files *(*)' no longer completes subdirectories after
|
||||
# a /. For now, make this a configuration option, but
|
||||
# probably it needs to be done better.
|
||||
|
||||
if [[ -n "$compconfig[path_keepdir]" && -z "$tpre$tsuf" &&
|
||||
"$pre" = */ && -z "$suf" ]]; then
|
||||
compadd -nQS '' - "$linepath$donepath$orig"
|
||||
tmp4=-
|
||||
fi
|
||||
|
|
|
@ -17,10 +17,10 @@ emulate -L zsh
|
|||
|
||||
typeset _d_file _d_f _d_bks _d_line _d_als
|
||||
|
||||
_d_file=${compconfig[dumpfile]-${0:h}/compinit.dump}
|
||||
_d_file=${compconfig[dumpfile]-${0:h}/compinit.dump}.$HOST.$$
|
||||
|
||||
typeset -U _d_files
|
||||
_d_files=( ${^~fpath}/_(|*[^~])(N:t) )
|
||||
_d_files=( ${^~fpath:/.}/_(|*[^~])(N:t) )
|
||||
|
||||
print "#files: $#_d_files" > $_d_file
|
||||
|
||||
|
@ -88,5 +88,7 @@ done >> $_d_file
|
|||
|
||||
print >> $_d_file
|
||||
|
||||
mv $_d_file ${_d_file%.$HOST.$$}
|
||||
|
||||
unfunction compdump
|
||||
autoload -U compdump
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
DISTFILES_SRC='
|
||||
.distfiles
|
||||
_a2ps _bzip2 _bunzip2 _chown _compress _configure _cvs _dd _dvi _find
|
||||
_gdb _groups _gunzip _gzip
|
||||
_a2ps _bzip2 _bunzip2 _chown _compress _configure
|
||||
_cvs _dd _dvi _find _gdb _groups _gunzip _gzip
|
||||
_hosts _use_lo _make _man _mh _pdf _ps
|
||||
_rcs _rlogin _sh _strip _stty _su
|
||||
_tar _tar_archive _tex _uncompress _x_options _xfig
|
||||
|
|
|
@ -1,141 +1,333 @@
|
|||
#compdef cvs
|
||||
|
||||
setopt localoptions extendedglob
|
||||
_cvs () {
|
||||
setopt localoptions extendedglob
|
||||
|
||||
typeset -A commands
|
||||
commands=(add "ad new" admin "adm rcs" annotate ann
|
||||
checkout "co get" commit "ci com" diff "di dif"
|
||||
edit "" editors "" export "exp ex"
|
||||
history "hi his" import "im imp" init ""
|
||||
log "lo rlog" login "logon lgn" logout ""
|
||||
rdiff patch release "re rel" remove "rm delete"
|
||||
status "st stat" rtag "rt rfreeze" tag "ta freeze"
|
||||
unedit "" update "up upd" watch ""
|
||||
watchers "")
|
||||
typeset -A commands
|
||||
commands=(add "ad new" admin "adm rcs" annotate ann
|
||||
checkout "co get" commit "ci com" diff "di dif"
|
||||
edit "" editors "" export "exp ex"
|
||||
history "hi his" import "im imp" init ""
|
||||
log "lo rlog" login "logon lgn" logout ""
|
||||
rdiff patch release "re rel" remove "rm delete"
|
||||
status "st stat" rtag "rt rfreeze" tag "ta freeze"
|
||||
unedit "" update "up upd" watch ""
|
||||
watchers "")
|
||||
|
||||
local com="${words[(i)(${(j:|:)${(kv)=commands}})]}"
|
||||
local com="${words[(i)(${(j:|:)${(kv)=commands}})]}"
|
||||
|
||||
local showlist='compstate[list]=list; compstate[force_list]=yes'
|
||||
local showhint="$showlist ; compstate[insert]=''"
|
||||
local complete_D="compadd yesterday week\\ ago month\\ ago"
|
||||
local complete_k="compadd kv kvl k o b v"
|
||||
local complete_r="compadd -UX 'Enter tag name or rev number' ''; $showhint"
|
||||
local complete_m="compadd -UX 'Enter log message' -n ''; $showhint"
|
||||
local showlist='compstate[list]=list; compstate[force_list]=yes'
|
||||
local showhint="$showlist ; compstate[insert]=''"
|
||||
local complete_D="compadd today yesterday week\\ ago month\\ ago"
|
||||
local complete_k="compadd kv kvl k o b v"
|
||||
local complete_r="_cvsrevisions"
|
||||
local complete_m="compadd -UX 'Enter log message' -n ''; $showhint"
|
||||
|
||||
if (( com < CURRENT )); then
|
||||
case "$words[$com]" in
|
||||
add|ad|new) # "+k:m:"
|
||||
_complete_opts k: "$complete_k" m: "$complete_m" || _cvsaddp
|
||||
;;
|
||||
admin|adm|rcs) # "+ib::c:a:A:e:l::u::LUn:N:m:o:s:t::IqxV:k:"
|
||||
_complete_opts i '' b:: '' c: '' a: '' A: '' e: '' l:: '' u:: '' L '' \
|
||||
U '' n: '' N: '' m: "$complete_m" o: '' s: '' t:: '' I '' q '' x '' \
|
||||
V: '' k: "$complete_k" ||
|
||||
_cvstargets
|
||||
;;
|
||||
annotate|ann) # "+lr:D:fR"
|
||||
_complete_opts l '' r: "$complete_r" D: "$complete_D" f '' R '' ||
|
||||
_cvstargets
|
||||
;;
|
||||
checkout|co|get) # "+ANnk:d:flRpQqcsr:D:j:P"
|
||||
_complete_opts A '' N '' n '' k: "$complete_k" d: '_files -/' f '' \
|
||||
l '' R '' p '' Q '' q '' c '' s '' r: "$complete_r" D: "$complete_D" \
|
||||
j: "$complete_r" P '' ||
|
||||
_cvsrepositories
|
||||
;;
|
||||
commit|ci|com) # "+nlRm:fF:r:"
|
||||
_complete_opts n '' l '' R '' m: "$complete_m" f '' F: _files \
|
||||
r: "$complete_r" ||
|
||||
_cvstargets_modified
|
||||
;;
|
||||
diff|di|dif) # "+abcdefhilnpstuw0123456789BHNRC:D:F:I:L:U:V:W:k:r:"
|
||||
_complete_opts a '' b '' c '' d '' e '' f '' h '' i '' l '' n '' p '' \
|
||||
s '' t '' u '' w '' 0 '' 1 '' 2 '' 3 '' 4 '' 5 '' 6 '' 7 '' 8 '' \
|
||||
9 '' B '' H '' N '' R '' C: '' D: "$complete_D" F: '' I: '' L: '' \
|
||||
U: '' V: '' W: '' k: "$complete_k" r: "$complete_r" ||
|
||||
_cvstargets_modified || _cvstargets
|
||||
;;
|
||||
edit) # "+lRa:"
|
||||
_complete_opts l '' R '' a: 'compadd edit unedit commit all none' ||
|
||||
_cvstargets
|
||||
;;
|
||||
editors) # "+lR"
|
||||
_complete_opts l '' R '' || _cvstargets
|
||||
;;
|
||||
export|exp|ex) # "+Nnk:d:flRQqr:D:"
|
||||
_complete_opts N '' n '' k: "$complete_k" d: '_files -/' f '' l '' \
|
||||
R '' Q '' q '' r: "$complete_r" D: "$complete_D" ||
|
||||
_cvsrepositories
|
||||
;;
|
||||
history|hi|his) # "+Tacelow?D:b:f:m:n:p:r:t:u:x:X:z:"
|
||||
_complete_opts T '' a '' c '' e '' l '' o '' w '' \? '' \
|
||||
D: "$complete_D" b: '' f: '' m: "$complete_m" n: '' p: '' r: '' \
|
||||
t: '' u: '' x: '' X: '' z: '' ||
|
||||
_cvstargets
|
||||
;;
|
||||
import|im|imp) # "+Qqdb:m:I:k:W:"
|
||||
_complete_opts Q '' q '' d '' b: '' m: "$complete_m" I: _files \
|
||||
k: "$complete_k" W: '' ||
|
||||
case $[CURRENT-com] in
|
||||
1) _cvsrepositories;;
|
||||
2) compadd -UX "Enter vendor tag name" -n '' && eval "$showhint";;
|
||||
3) compadd -UX "Enter release tag name" -n '' && eval "$showhint";;
|
||||
*) compadd -UX "No futher arguments used" -n '' && eval "$showhint";;
|
||||
esac
|
||||
;;
|
||||
init)
|
||||
break
|
||||
;;
|
||||
login|logon|lgn|logout)
|
||||
_complete_opts || _files
|
||||
;;
|
||||
rdiff|patch|pa) # "+V:k:cuftsQqlRD:r:"
|
||||
_complete_opts V: '' k: "$complete_k" c '' u '' f '' t '' s '' Q '' \
|
||||
q '' l '' R '' D: "$complete_D" r: "$complete_r" ||
|
||||
_cvstargets
|
||||
;;
|
||||
release|re|rel) # "+Qdq"
|
||||
_complete_opts Q '' d '' q '' || _files -/
|
||||
;;
|
||||
remove|rm|delete) # "+flR"
|
||||
_complete_opts f '' l '' R '' || _cvsremovep
|
||||
;;
|
||||
status|st|stat) # "+vlR"
|
||||
_complete_opts v '' l '' R '' || _cvstargets
|
||||
;;
|
||||
tag|ta|freeze) # "+FQqlRcdr:D:bf"
|
||||
_complete_opts F '' Q '' q '' l '' R '' c '' d '' r: "$complete_r" \
|
||||
D: "$complete_D" b '' f '' ||
|
||||
_cvstargets
|
||||
;;
|
||||
unedit) # "+lR"
|
||||
_complete_opts l '' R '' || _cvstargets
|
||||
;;
|
||||
update|up|upd) # "+ApPflRQqduk:r:D:j:I:W:"
|
||||
_complete_opts A '' p '' P '' f '' l '' R '' Q '' q '' d '' u '' \
|
||||
k: "$complete_k" r: "$complete_r" D: "$complete_D" j: "$complete_r" \
|
||||
I: '' W: '' ||
|
||||
_cvstargets
|
||||
;;
|
||||
watch)
|
||||
if (( CURRENT == com + 1 )); then
|
||||
compadd on off add remove
|
||||
else
|
||||
case "$words[com+1]" in
|
||||
on|off) # "+lR"
|
||||
_complete_opts l '' R '' || _cvstargets
|
||||
;;
|
||||
add|remove) # "+lRa:"
|
||||
_complete_opts l '' R '' \
|
||||
a: 'compadd edit unedit commit all none' || \
|
||||
_cvstargets
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
watchers) # "+lR"
|
||||
_complete_opts l '' R '' || _cvstargets
|
||||
;;
|
||||
*) _files;;
|
||||
esac
|
||||
return
|
||||
fi
|
||||
|
||||
if (( com < CURRENT )); then
|
||||
case "$words[$com]" in
|
||||
add|ad|new) # "+k:m:"
|
||||
_complete_opts k: "$complete_k" m: "$complete_m" || _files
|
||||
;;
|
||||
admin|adm|rcs) # "+ib::c:a:A:e:l::u::LUn:N:m:o:s:t::IqxV:k:"
|
||||
_complete_opts i '' b:: '' c: '' a: '' A: '' e: '' l:: '' u:: '' L '' U '' n: '' N: '' m: "$complete_m" o: '' s: '' t:: '' I '' q '' x '' V: '' k: "$complete_k" || _files
|
||||
;;
|
||||
annotate|ann) # "+lr:D:fR"
|
||||
_complete_opts l '' r: '' D: '' f '' R '' || _files
|
||||
;;
|
||||
checkout|co|get) # "+ANnk:d:flRpQqcsr:D:j:P"
|
||||
_complete_opts A '' N '' n '' k: "$complete_k" d: '' f '' l '' R '' p '' Q '' q '' c '' s '' r: "$complete_r" D: "$complete_D" j: '' P '' || compadd MODULE
|
||||
;;
|
||||
commit|ci|com) # "+nlRm:fF:r:"
|
||||
_complete_opts n '' l '' R '' m: "$complete_m" f '' F: '' r: "$complete_r" || _files
|
||||
;;
|
||||
diff|di|dif) # "+abcdefhilnpstuw0123456789BHNRC:D:F:I:L:U:V:W:k:r:"
|
||||
_complete_opts a '' b '' c '' d '' e '' f '' h '' i '' l '' n '' p '' s '' t '' u '' w '' 0 '' 1 '' 2 '' 3 '' 4 '' 5 '' 6 '' 7 '' 8 '' 9 '' B '' H '' N '' R '' C: '' D: "$complete_D" F: '' I: '' L: '' U: '' V: '' W: '' k: "$complete_k" r: "$complete_r" || _files
|
||||
;;
|
||||
edit) # "+lRa:"
|
||||
_complete_opts l '' R '' a: '' || _files
|
||||
;;
|
||||
editors) # "+lR"
|
||||
_complete_opts l '' R '' || _files
|
||||
;;
|
||||
export|exp|ex) # "+ANnk:d:flRpQqcsr:D:j:P"
|
||||
_complete_opts A '' N '' n '' k: "$complete_k" d: '' f '' l '' R '' p '' Q '' q '' c '' s '' r: "$complete_r" D: "$complete_D" j: '' P '' || compadd MODULE
|
||||
;;
|
||||
history|hi|his) # "+Tacelow?D:b:f:m:n:p:r:t:u:x:X:z:"
|
||||
_complete_opts T '' a '' c '' e '' l '' o '' w '' \? '' D: "$complete_D" b: '' f: '' m: "$complete_m" n: '' p: '' r: '' t: '' u: '' x: '' X: '' z: '' || _files
|
||||
;;
|
||||
import|im|imp) # "+Qqdb:m:I:k:W:"
|
||||
_complete_opts Q '' q '' d '' b: '' m: "$complete_m" I: '' k: "$complete_k" W: '' || case $[CURRENT-com] in
|
||||
1) if [[ "${+CVSROOT}" == 1 && "$CVSROOT" != :* ]]; then
|
||||
compgen -X "Enter repository name" -W "$CVSROOT" -g '*~*CVSROOT(/)' -s ''
|
||||
else
|
||||
compadd -UX "Enter repository name" -n '' && eval "$showhint"
|
||||
fi
|
||||
;;
|
||||
2) compadd -UX "Enter vendor tag name" -n '' && eval "$showhint";;
|
||||
3) compadd -UX "Enter release tag name" -n '' && eval "$showhint";;
|
||||
*) compadd -UX "No futher arguments used" -n '' && eval "$showhint";;
|
||||
esac
|
||||
;;
|
||||
init)
|
||||
break
|
||||
;;
|
||||
login|logon|lgn|logout)
|
||||
_complete_opts || _files
|
||||
;;
|
||||
rdiff|patch|pa) # "+V:k:cuftsQqlRD:r:"
|
||||
_complete_opts V: '' k: "$complete_k" c '' u '' f '' t '' s '' Q '' q '' l '' R '' D: "$complete_D" r: "$complete_r" || _files
|
||||
;;
|
||||
release|re|rel) # "+Qdq"
|
||||
_complete_opts Q '' d '' q '' || _files -/
|
||||
;;
|
||||
remove|rm|delete) # "+flR"
|
||||
_complete_opts f '' l '' R '' || _files
|
||||
;;
|
||||
status|st|stat) # "+vlR"
|
||||
_complete_opts v '' l '' R '' || _files
|
||||
;;
|
||||
tag|ta|freeze) # "+FQqlRcdr:D:bf"
|
||||
_complete_opts F '' Q '' q '' l '' R '' c '' d '' r: "$complete_r" D: "$complete_D" b '' f '' || _files
|
||||
;;
|
||||
unedit) # "+lR"
|
||||
_complete_opts l '' R '' || _files
|
||||
;;
|
||||
update|up|upd) # "+ApPflRQqduk:r:D:j:I:W:"
|
||||
_complete_opts A '' p '' P '' f '' l '' R '' Q '' q '' d '' u '' k: "$complete_k" r: "$complete_r" D: "$complete_D" j: '' I: '' W: '' || _files
|
||||
;;
|
||||
watch)
|
||||
if (( CURRENT == com + 1 )); then
|
||||
compadd on off add remove
|
||||
else
|
||||
case "$words[com+1]" in
|
||||
on|off) # "+lR"
|
||||
_complete_opts l '' R '' || _files
|
||||
;;
|
||||
add|remove) # "+lRa:"
|
||||
_complete_opts l '' R '' a: '' || _files
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
watchers) # "+lR"
|
||||
_complete_opts l '' R '' || _files
|
||||
;;
|
||||
*) _files;;
|
||||
esac
|
||||
return
|
||||
_complete_opts \
|
||||
H '' Q '' q '' r '' w '' l '' n '' t '' v '' f '' a '' \
|
||||
b: "compadd /usr/local/bin" \
|
||||
T: "compadd $TMPPREFIX:h $TMPDIR /tmp" \
|
||||
e: "compadd vi" \
|
||||
d: "compadd $_cvs_roots || _files -/" \
|
||||
z: "compadd 9'" \
|
||||
s: "_cvs_user_variable" \
|
||||
||
|
||||
compadd ${(k)commands} ||
|
||||
compadd ${(kv)=commands}
|
||||
}
|
||||
|
||||
_cvsrevisions () {
|
||||
compadd - ${${${(M)${(f)"$(cvs -q status -vl .)"}:# *}##[ ]##}%%[ ]*}
|
||||
}
|
||||
|
||||
_cvsrepositories () {
|
||||
local root=$CVSROOT
|
||||
[[ -f CVS/Root ]] && root=$(<CVS/Root)
|
||||
|
||||
if [[ $root = :* || ! -d $root ]]; then
|
||||
compadd -UX "Enter repository name" -n '' &&
|
||||
{ compstate[list]=list; compstate[force_list]=yes; compstate[insert]='' }
|
||||
else
|
||||
compadd - \
|
||||
$root/^CVSROOT(:t) \
|
||||
${${(M)${(f)"$(<$root/CVSROOT/modules)"}:#[^#]*}%%[ ]*}
|
||||
fi
|
||||
}
|
||||
|
||||
_cvsprefix () {
|
||||
#if [[ -prefix */ ]]; then
|
||||
if [[ x"$PREFIX" == x*/* ]]; then
|
||||
qpref="${PREFIX%/*}/"
|
||||
pref=$~qpref
|
||||
else
|
||||
qpref=
|
||||
pref=./
|
||||
fi
|
||||
}
|
||||
|
||||
_cvsdirentries () {
|
||||
setopt localoptions nullglob unset
|
||||
if [[ -f ${pref}CVS/Entries ]]; then
|
||||
entries=(${${${(M)${(f)"$(<${pref}CVS/Entries)"}:#D/*}#D/}%%/*})
|
||||
else
|
||||
entries=()
|
||||
fi
|
||||
}
|
||||
|
||||
_cvsentries () {
|
||||
setopt localoptions nullglob unset
|
||||
if [[ -f ${pref}CVS/Entries ]]; then
|
||||
entries=(${${${${(f)"$(<${pref}CVS/Entries)"}:#D}#(D|)/}%%/*})
|
||||
else
|
||||
entries=()
|
||||
fi
|
||||
}
|
||||
|
||||
_cvsentries_modified () {
|
||||
if (( $+_cvsentries_modified_disable_stat )) ||
|
||||
! { zmodload -e stat || zmodload stat }; then
|
||||
_cvsentries
|
||||
return
|
||||
fi
|
||||
|
||||
entries=()
|
||||
local line Entries
|
||||
typeset -A mtime
|
||||
|
||||
if [[ -f "${pref}CVS/Entries" ]]; then
|
||||
Entries="$(<${pref}CVS/Entries)"
|
||||
else
|
||||
return
|
||||
fi
|
||||
|
||||
local LANG=C
|
||||
local OLDTZ="$TZ"; if ! (( $+TZ )); then unset OLDTZ; fi; export TZ=GMT
|
||||
|
||||
mtime=(${(s:/:)${(j:/:)${${${${(M)${(f)Entries}:#/*}#/}%/*/*}/\\/*\\///}}})
|
||||
entries=(${${${(M)${(f)Entries}:#D/*}#D/}%%/*})
|
||||
builtin stat -n +mtime -F '%a %b %e %T %Y' "$pref${(@k)^mtime}" |
|
||||
while read line
|
||||
do
|
||||
line=${line#$pref}
|
||||
if [[ x"$mtime[${line%% *}]" != x"${line#* }" ]]; then
|
||||
entries=($entries "${line%% *}")
|
||||
fi
|
||||
done
|
||||
|
||||
if (( $+OLDTZ )); then TZ="$OLDTZ"; else unset TZ; fi
|
||||
}
|
||||
|
||||
_cvsdirs () {
|
||||
if [[ -d ${pref}CVS ]]; then
|
||||
_cvsdirentries
|
||||
case $#entries in
|
||||
0) false;;
|
||||
1) compgen "$@" -g "${entries:q}";;
|
||||
*) compgen "$@" -g '('${(j:|:)entries:q}')';;
|
||||
esac
|
||||
else
|
||||
_files
|
||||
fi
|
||||
}
|
||||
|
||||
_cvstargets () {
|
||||
local qpref pref entries
|
||||
_cvsprefix
|
||||
if [[ -d ${pref}CVS ]]; then
|
||||
_cvsentries
|
||||
case $#entries in
|
||||
0) false;;
|
||||
1) compgen -g "${entries:q}";;
|
||||
*) compgen -g '('${(j:|:)entries:q}')';;
|
||||
esac
|
||||
else
|
||||
_files
|
||||
fi
|
||||
}
|
||||
|
||||
_cvstargets_modified () {
|
||||
local qpref pref entries
|
||||
_cvsprefix
|
||||
if [[ -d ${pref}CVS ]]; then
|
||||
_cvsentries_modified
|
||||
case $#entries in
|
||||
0) false;;
|
||||
1) compgen -g "${entries:q}";;
|
||||
*) compgen -g '('${(j:|:)entries:q}')';;
|
||||
esac
|
||||
else
|
||||
_files
|
||||
fi
|
||||
}
|
||||
|
||||
_cvsremovep () {
|
||||
local qpref pref entries
|
||||
_cvsprefix
|
||||
if [[ -d ${pref}CVS ]]; then
|
||||
_cvsentries
|
||||
setopt localoptions unset
|
||||
local omit
|
||||
omit=(${pref}*(D:t))
|
||||
eval 'entries=(${entries:#('${(j:|:)omit:q}')})'
|
||||
compadd -P "$qpref" - ${entries:q} ||
|
||||
_cvsdirs
|
||||
else
|
||||
_files
|
||||
fi
|
||||
}
|
||||
|
||||
_cvsaddp () {
|
||||
local qpref pref entries
|
||||
_cvsprefix
|
||||
if [[ -d ${pref}CVS ]]; then
|
||||
_cvsentries
|
||||
setopt localoptions unset
|
||||
local omit
|
||||
omit=($_cvs_ignore_default ${entries:q} ${=cvsignore})
|
||||
[[ -r ~/.cvsignore ]] && omit=($omit $(<~/.cvsignore))
|
||||
[[ -r ${pref}.cvsignore ]] && omit=($omit $(<${pref}.cvsignore))
|
||||
compgen -g '*~(*/|)('${(j:|:)omit}')(D)' ||
|
||||
compgen -g '*~(*/|)('${(j:|:)entries:q}')(D)' ||
|
||||
_cvsdirs
|
||||
else
|
||||
_files
|
||||
fi
|
||||
}
|
||||
|
||||
if (( ! $+_cvs_ignore_default )); then
|
||||
_cvs_ignore_default=(
|
||||
RCS SCCS CVS CVS.adm RCSLOG 'cvslog.*' tags TAGS .make.state .nse_depinfo
|
||||
'*\~' '\#*' '.\#*' ',*' '_$*' '*$' '*.old' '*.bak' '*.BAK' '*.orig' '*.rej'
|
||||
'.del-*' '*.a' '*.olb' '*.o' '*.obj' '*.so' '*.exe' '*.Z' '*.elc' '*.ln'
|
||||
core
|
||||
)
|
||||
fi
|
||||
|
||||
case ${+cvs_roots} in
|
||||
0)
|
||||
cvs_roots=()
|
||||
if [[ -f ~/.cvspass ]]; then
|
||||
cvs_roots=(
|
||||
$(cut -d ' ' -f 1 ~/.cvspass)
|
||||
)
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if (( ! $+_cvs_roots )); then
|
||||
if [[ -f ~/.cvspass ]]; then
|
||||
_cvs_roots=(${${(f)"$(<~/.cvspass)"}%% *})
|
||||
else
|
||||
_cvs_roots=()
|
||||
fi
|
||||
fi
|
||||
|
||||
_complete_opts \
|
||||
H '' Q '' q '' r '' w '' l '' n '' t '' v '' f '' a '' \
|
||||
b: "compadd /usr/local/bin" \
|
||||
T: "compadd $TMPPREFIX:h $TMPDIR /tmp" \
|
||||
e: "compadd vi" \
|
||||
d: "compadd $cvs_roots || _files -/" \
|
||||
z: "compadd 9'" \
|
||||
s: "_cvs_user_variable" \
|
||||
||
|
||||
compadd ${(k)commands} ||
|
||||
compadd ${(kv)=commands}
|
||||
_cvs "$@"
|
||||
|
|
|
@ -27,5 +27,5 @@
|
|||
# This must also serve as a shell script, so do not add spaces around the
|
||||
# `=' signs.
|
||||
|
||||
VERSION=3.1.6-test-3
|
||||
VERSION_DATE='July 24, 1999'
|
||||
VERSION=3.1.6
|
||||
VERSION_DATE='July 30, 1999'
|
||||
|
|
|
@ -13,6 +13,6 @@ DISTFILES_SRC='
|
|||
|
||||
DISTFILES_DOC='
|
||||
zsh.info zsh.info-[0-9]*
|
||||
zsh_toc.html zsh_[0-9]*.html
|
||||
zsh_*toc.html zsh_[0-9]*.html
|
||||
zsh.dvi zsh_us.ps zsh_a4.ps
|
||||
'
|
||||
|
|
|
@ -6,12 +6,22 @@ cindex(completion, controlling)
|
|||
sect(Description)
|
||||
|
||||
This describes the shell code for the new completion system. It consists
|
||||
of varsious shell functions; those beginning `tt(comp)' are to be called
|
||||
of various shell functions; those beginning `tt(comp)' are to be called
|
||||
directly by the user, while those beginning `tt(_)' are called by the
|
||||
completion code. The shell functions of the second set which implement
|
||||
completion behaviour and which may be bound to keystrokes, are referred to
|
||||
as `widgets'.
|
||||
|
||||
Note that with the function-based completions described here, it
|
||||
is also possible to use the `tt(compctl -M ...)' mechanism to specify
|
||||
global matching control, such as case-insensitivity (`tt(abc)' will complete
|
||||
to a string beginning `tt(ABC)'), or wildcard behaviour on
|
||||
certain anchors (`tt(a-d)' will complete to abc-def as if there were a
|
||||
`tt(*)' after the `a'). See
|
||||
ifzman(the section `Matching Control' in zmanref(zshcompctl))\
|
||||
ifnzman(noderef(Matching Control))
|
||||
for further details.
|
||||
|
||||
startmenu()
|
||||
menu(Initialization)
|
||||
menu(Control Functions)
|
||||
|
@ -728,14 +738,28 @@ These functions also accept the `tt(-J)', `tt(-V)', `tt(-X)', `tt(-P)',
|
|||
`tt(-S)', `tt(-q)', `tt(-r)', and `tt(-R)' options from the
|
||||
tt(compadd) builtin.
|
||||
|
||||
Finally, the tt(_path_files) function supports two configuration keys.
|
||||
If tt(path_expand) is set to any non-empty string, the partially
|
||||
Finally, the tt(_path_files) function supports three configuration keys.
|
||||
startitem()
|
||||
item(tt(path_expand))(
|
||||
If this is set to any non-empty string, the partially
|
||||
typed path from the line will be expanded as far as possible even if
|
||||
trailing pathname components can not be completed. And if
|
||||
tt(path_cursor) is set to a non-empty string, the cursor will be left
|
||||
trailing pathname components can not be completed.
|
||||
)
|
||||
item(tt(path_cursor))(
|
||||
If this is set to a non-empty string, the cursor will be left
|
||||
after the first ambiguous pathname component even when menucompletion
|
||||
is used.
|
||||
)
|
||||
item(tt(path_keepdir))(
|
||||
If this is set to a non-empty string, then if completion immediately after
|
||||
a slash fails, treat the original string as a successful completion. This
|
||||
prevents a valid directory being treated as a candidate for correction.
|
||||
However, it has the side effect that a pattern completion, such as
|
||||
`tt(files -g *(*))', will no longer try to complete directories in this
|
||||
position if there are no file matches.
|
||||
)
|
||||
enditem()
|
||||
)
|
||||
item(tt(_parameters))(
|
||||
This should be used to complete parameter names if you need some of the
|
||||
extra options of tt(compadd). All arguments are passed unchanged to
|
||||
|
@ -804,7 +828,7 @@ with two hyphens. The option `tt(-i) var(patterns)' can be used to
|
|||
give patterns for options which should not be completed. The patterns
|
||||
can be given as the name of an array parameter or as a literal list in
|
||||
parentheses. E.g. `tt(-i "(--(en|dis)able-FEATURE*)")' will ignore the
|
||||
options `tt(--enable-FEATURE)' and `tt(--diable-FEATURE)'. Finally,
|
||||
options `tt(--enable-FEATURE)' and `tt(--disable-FEATURE)'. Finally,
|
||||
the option `tt(-s) var(pairs)' can be used to describe options
|
||||
aliases. Each var(pair) consists of a pattern and a
|
||||
replacement. E.g. some tt(configure)-scripts describe options only as
|
||||
|
@ -829,7 +853,7 @@ standard directory where it appears.
|
|||
startitem()
|
||||
item(tt(Core))(
|
||||
The core scripts and functions. You will certainly need these, though will
|
||||
probably not need to alter them. Many of these are docmented above.
|
||||
probably not need to alter them. Many of these are documented above.
|
||||
)
|
||||
item(tt(Base))(
|
||||
Other functions you will almost certainly want if you are going to use
|
||||
|
@ -862,8 +886,8 @@ startitem()
|
|||
item(tt(_correct_filename (^XC)))(
|
||||
Correct the filename path at the cursor position. Allows up to six errors
|
||||
in the name. Can also be called with an argument to correct
|
||||
a filepath, independently of zle; the correction is printed on standard
|
||||
output.
|
||||
a filename path, independently of zle; the correction is printed on
|
||||
standard output.
|
||||
)
|
||||
item(tt(_correct_word) (^Xc))(
|
||||
Performs correction of the current argument using the usual contextual
|
||||
|
|
|
@ -18,11 +18,12 @@ the code should generally go to the mailing list.
|
|||
texinode(Availability)(Mailing Lists)(Author)(Introduction)
|
||||
sect(Availability)
|
||||
Zsh is available from the following anonymous FTP sites. These mirror
|
||||
sites are kept frequently up to date. The sites marked with em((G))
|
||||
may be mirroring tt(ftp.math.gatech.edu) instead of the primary site.
|
||||
The sites marked with em((H)) may be mirroring tt(ftp.cs.elte.hu)
|
||||
instead of the primary site.
|
||||
sites are kept frequently up to date. The sites marked with em((H)) may be
|
||||
mirroring tt(ftp.cs.elte.hu) instead of the primary site.
|
||||
|
||||
cindex(FTP sites for zsh)
|
||||
cindex(acquiring zsh by FTP)
|
||||
cindex(availability of zsh)
|
||||
startitem()
|
||||
item(Primary site)(
|
||||
nofill(tt(ftp://ftp.zsh.org/pub/zsh/)
|
||||
|
@ -31,7 +32,7 @@ tt(http://www.zsh.org/pub/zsh/))
|
|||
item(Australia)(
|
||||
nofill(tt(ftp://ftp.zsh.org/pub/zsh/)
|
||||
tt(http://www.zsh.org/pub/zsh/)
|
||||
tt(ftp://ftp.ips.gov.au/pub/packages/zsh/) em((G)) em((H)))
|
||||
tt(ftp://ftp.ips.gov.au/pub/packages/zsh/) em((H)))
|
||||
)
|
||||
item(Denmark)(
|
||||
nofill(tt(ftp://sunsite.auc.dk/pub/unix/shells/zsh/))
|
||||
|
@ -56,19 +57,24 @@ item(Israel)(
|
|||
nofill(tt(ftp://ftp.math.technion.ac.il/mirror/ftp.zsh.org/pub/zsh/)
|
||||
tt(http://www.math.technion.ac.il/mirror/ftp.zsh.org/pub/zsh/))
|
||||
)
|
||||
item(Italy)(
|
||||
nofill(tt(ftp://ftp.unina.it/pub/Unix/pkgs/shell/zsh/))
|
||||
)
|
||||
item(Japan)(
|
||||
nofill(tt(ftp://ftp.tohoku.ac.jp/mirror/zsh/) em((H))
|
||||
tt(ftp://ftp.nisiq.net/pub/shells/zsh/) em((H))
|
||||
nofill(tt(ftp://ftp.nisiq.net/pub/shells/zsh/) em((H))
|
||||
tt(ftp://ftp.win.ne.jp/pub/shell/zsh/))
|
||||
)
|
||||
item(Norway)(
|
||||
nofill(tt(ftp://ftp.uit.no/pub/unix/shells/zsh/))
|
||||
)
|
||||
item(Poland)(
|
||||
nofill(tt(ftp://sunsite.icm.edu.pl/pub/unix/shells/zsh/))
|
||||
)
|
||||
item(Romania)(
|
||||
nofill(tt(ftp://ftp.roedu.net/pub/mirrors/ftp.zsh.org/pub/zsh/))
|
||||
)
|
||||
item(Slovenia)(
|
||||
nofill(tt(ftp://ftp.siol.net/pub/unix/shells/zsh/) em((H)))
|
||||
nofill(tt(ftp://ftp.siol.net/mirrors/zsh/))
|
||||
)
|
||||
item(Sweden)(
|
||||
nofill(tt(ftp://ftp.lysator.liu.se/pub/unix/zsh/))
|
||||
|
@ -78,8 +84,7 @@ nofill(tt(ftp://ftp.net.lut.ac.uk/zsh/)
|
|||
tt(ftp://sunsite.org.uk/packages/zsh/))
|
||||
)
|
||||
item(USA)(
|
||||
nofill(tt(ftp://ftp.math.gatech.edu/pub/zsh/)
|
||||
tt(ftp://uiarchive.uiuc.edu/pub/packages/shells/zsh/)
|
||||
nofill(tt(ftp://uiarchive.uiuc.edu/pub/packages/shells/zsh/)
|
||||
tt(ftp://ftp.rge.com/pub/shells/zsh/)
|
||||
tt(ftp://foad.org/pub/zsh/)
|
||||
tt(http://foad.org/zsh/))
|
||||
|
|
|
@ -63,7 +63,7 @@ cindex(subscripts)
|
|||
pindex(KSH_ARRAYS, use of)
|
||||
|
||||
The same subscripting syntax is used for associative arrays,
|
||||
except that no arithmetic expansion is applied to var(EXP).
|
||||
except that no arithmetic expansion is applied to var(exp).
|
||||
|
||||
A subscript of the form `tt([*])' or `tt([@])' evaluates to all
|
||||
elements of an array; there is no difference between the two
|
||||
|
|
|
@ -99,6 +99,14 @@ Normally, the var(host), var(user) and var(password) are internally
|
|||
recorded for later re-opening, either by a tt(zfopen) with no arguments, or
|
||||
automatically (see below). With the option `tt(-1)', no information is
|
||||
stored.
|
||||
|
||||
Both tt(zfopen) and tt(zfanon) (but not tt(zfparams)) understand URLs of
|
||||
the form tt(ftp://)var(host)/var(path...) as meaning to connect to the
|
||||
var(host), then change directory to var(path) (which must be a directory,
|
||||
not a file). The `tt(ftp://)' can be omitted; the trailing `tt(/)' is enough
|
||||
to trigger recognition of the var(path). Note prefixes other than
|
||||
`tt(ftp:)' are not recognized, and that all characters after the first
|
||||
slash beyond tt(host) are significant in var(path).
|
||||
)
|
||||
findex(zfanon)
|
||||
item(tt(zfanon [ -1 ] var(host)))(
|
||||
|
@ -204,11 +212,13 @@ tt(zfrtime) below for more information.
|
|||
|
||||
startitem()
|
||||
findex(zfget)
|
||||
item(tt(zfget [ -Gt ] var(file1) ...))(
|
||||
item(tt(zfget [ -Gtc ] var(file1) ...))(
|
||||
Retrieve all the listed files var(file1) ... one at a time from the remote
|
||||
server. If a file contains a `tt(/)', the full name is passed to the
|
||||
remote server, but the file is stored locally under the name given by the
|
||||
part after the final `tt(/)'.
|
||||
part after the final `tt(/)'. The option tt(-c) (cat) forces all files to
|
||||
be sent as a single stream to standard output; in this case the tt(-t)
|
||||
option has no effect.
|
||||
)
|
||||
findex(zfuget)
|
||||
item(tt(zfuget [ -Gvst ] var(file1) ...))(
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
.nr PI 0
|
||||
.nr LL 6.5i
|
||||
.if \n(.g \{\
|
||||
.if "\*(.T"ascii" .ftr C R
|
||||
.if "\*(.T"latin1" .ftr C R
|
||||
.nr De \n[.ss]
|
||||
.\}
|
||||
.de Ds
|
||||
.DS I .5i
|
||||
.ft C
|
||||
|
@ -12,7 +17,8 @@
|
|||
.ft R
|
||||
.ps
|
||||
.vs
|
||||
.ss
|
||||
.ie \n(.g .ss \n(De
|
||||
.el .ss
|
||||
..
|
||||
.de Sh
|
||||
.SH
|
||||
|
|
15
Etc/BUGS
15
Etc/BUGS
|
@ -44,3 +44,18 @@ and ksh and may be removed in the future. A good fix would be to keep
|
|||
such patterns unchanged if they do not match regardless of the state of
|
||||
the nonomatch and nullglob options.
|
||||
------------------------------------------------------------------------
|
||||
Numeric ranges are still too greedy with using characters; for example,
|
||||
<1-1000>33 will not match 633 because the 633 matches the range. Some
|
||||
backtracking will be necessary.
|
||||
------------------------------------------------------------------------
|
||||
Matching control can leave the wrong thing in the line. For example,
|
||||
touch Abc-Def-Ghij.txt
|
||||
touch Abc-def.ghi.jkl_mno.pqr.txt
|
||||
touch Abc_def_ghi_jkl_mno_pqr.txt
|
||||
compctl -M 'm:{a-z}={A-Z} r:|[.,_-]=*'
|
||||
ls a<TAB>
|
||||
produces
|
||||
ls Abcdefghi
|
||||
which won't complete further. It seems to get confused over the choice of
|
||||
possible punctuation characters, and the string won't complete further.
|
||||
------------------------------------------------------------------------
|
||||
|
|
|
@ -25,20 +25,20 @@ Version 3.1.6
|
|||
additional autoloading code; general code changes for extra efficiency;
|
||||
subscripting and ordering of globbing lists.
|
||||
|
||||
* Peter Stephenson <pws@ibmth.df.unipi.it>: zftp and mapfile modules and
|
||||
zf* functions; local parameters and typeset changes; changes in autoconf
|
||||
* Peter Stephenson <pws@zsh.org>: zftp and mapfile modules and zf*
|
||||
functions; local parameters and typeset changes; changes in autoconf
|
||||
system; case-independent and approximate pattern matching; various
|
||||
options; a few completion modules; some zle changes; FAQ.
|
||||
|
||||
* Bart Schaefer <schaefer@candle.brasslantern.com>: associative array
|
||||
implementation; other parameter changes; keeping track of missing
|
||||
patches; function autoloading changes.
|
||||
* Bart Schaefer <schaefer@zsh.org>: associative array implementation; other
|
||||
parameter changes; keeping track of missing patches; function autoloading
|
||||
changes.
|
||||
|
||||
* Wayne Davison <wayne@clari.net>: History code novelties and improvements
|
||||
with new options.
|
||||
|
||||
* Geoff Wing <mason@primenet.com.au>: Zle display code fixes, mailing
|
||||
list and patch archive.
|
||||
* Geoff Wing <gcw@zsh.org>: Zle display code fixes, mailing list and patch
|
||||
archive.
|
||||
|
||||
* Zoltán Hidvégi <hzoli@cs.elte.hu>: AIX dynamic loading code.
|
||||
|
||||
|
@ -48,7 +48,7 @@ Other improvements, bug fixes and design suggestions from all the above
|
|||
plus Andrej Borsenkow, Oliver Kiddle, Tanaka Akira, Naoki Wakamatsu, Tatuso
|
||||
Furukawa, Ville Herva, Will Day, Lehti Rahmi, Larry P. Schrof, Helmut
|
||||
Jarausch, Phil Pennock, Wilfredo Sanchez, Bruce Stephens, Gene Cohler,
|
||||
Ollivier Robert.
|
||||
Ollivier Robert, Felix Rosencrantz.
|
||||
|
||||
Previous versions of zsh 3 were maintained by Zoltán Hidvégi and Andrew
|
||||
Main (Zefram).
|
||||
|
@ -69,13 +69,13 @@ Version 3.0
|
|||
8-bit clean. Made some reorganizations in exec.c. Fixed signal
|
||||
handling bugs. Fixed lots of bugs in various places.
|
||||
|
||||
* Peter W. Stephenson <pws@ifh.de> the maintainer of the zsh FAQ.
|
||||
* Peter W. Stephenson <pws@zsh.org> the maintainer of the zsh FAQ.
|
||||
Reorganizations in exec.c. Rewrote and reorganized the history code.
|
||||
Rewrote the zshcompctl manual page. Fixed several bugs related to
|
||||
programmable completion. Fixed several signal handling bugs. Rewrote
|
||||
test and read builtins. Lots of other bugfixes.
|
||||
|
||||
* Andrew Main (Zefram) <zefram@fysh.org> reorganized builtin.c.
|
||||
* Andrew Main (Zefram) <zefram@zsh.org> reorganized builtin.c.
|
||||
Rewrote large parts of the zle vi mode. Redirection fixes. Reorganized
|
||||
parts of the completion code, added some enhancements and fixed lots of
|
||||
bugs. Made zle fully 8-bit clean. Fixed several zle bugs. Reorganized
|
||||
|
@ -85,21 +85,21 @@ Version 3.0
|
|||
programmable completion code in zsh-2.5.0. Several bugfixes in exec.c
|
||||
and jobs.c. Lots of completion bugfixes and enhancements.
|
||||
|
||||
* Geoff Wing <mason@werple.net.au> rewrote most of zle_refresh.c. Some
|
||||
* Geoff Wing <gcw@zsh.org> rewrote most of zle_refresh.c. Some
|
||||
other bugfixes.
|
||||
|
||||
* Clive Messer <clive@epos.demon.co.uk> brought the texinfo documentation
|
||||
up-to-date.
|
||||
|
||||
* Mark Borges <mdb@cdc.noaa.gov> maintains the zsh web page
|
||||
(http://www.mal.com/zsh/). Several documentation fixes. Maintains the
|
||||
texinfo documentation together with Clive.
|
||||
* Mark Borges <mdb@cdc.noaa.gov> contributed several documentation fixes
|
||||
including further texinfo documentation updates and maintained the zsh
|
||||
web pages during their tenure at www.mal.com.
|
||||
|
||||
* Wayne Davison <wayne@clari.net> improved the the zle search functions
|
||||
and made them 8-bit clean. Some other little bugfixes.
|
||||
|
||||
* Bart Schaefer <schaefer@candle.brasslantern.com> submitted several
|
||||
bugfixes, reported lots of bugs and gave many very useful suggestions.
|
||||
* Bart Schaefer <schaefer@zsh.org> submitted several bugfixes, reported
|
||||
lots of bugs and gave many very useful suggestions.
|
||||
|
||||
Version 2.5
|
||||
-----------
|
||||
|
|
36
Etc/MACHINES
36
Etc/MACHINES
|
@ -56,9 +56,15 @@ HP: HP-UX 9, 10.20, 11.0
|
|||
(rather than the 10.20 shl_load() function set). More details of
|
||||
any difficulties would be appreciated.
|
||||
|
||||
IBM: AIX
|
||||
Should build `out-of-the-box'. On AIX 3.x (at least),
|
||||
--enable-zsh-mem will not work.
|
||||
IBM: AIX 3.2, 4.1
|
||||
Should build `out-of-the-box', but --enable-zsh-mem will not work.
|
||||
|
||||
On 3.2, for 64-bit integer support you need to compile with gcc, as
|
||||
the native compiler does not support ANSI simulataneously with
|
||||
`long long'. On 4.1, there appear to be problems using
|
||||
--enable-dynamic (the default) with gcc (version was 2.7.2.3) in
|
||||
4.1, though native cc works. More information about this problem
|
||||
would be appreciated.
|
||||
|
||||
Linux: Linux (i386) [3.1.4]
|
||||
Should build `out-of-the-box'.
|
||||
|
@ -81,14 +87,24 @@ Next: NextStep 3.*
|
|||
Should build `out-of-the-box', but the zsh malloc routines are
|
||||
not recommended.
|
||||
|
||||
Reliant: Reliant UNIX
|
||||
Should build `out-of-the-box'.
|
||||
SIEMENS: Reliant UNIX
|
||||
Builds `out-of-the-box'. Dynamic loading is supported.
|
||||
Large Files and 64-bit integers are supported as of version 5.44
|
||||
and CDS/CDS++ compiler.
|
||||
|
||||
Reliant: SINIX
|
||||
Should build `out-of-the-box'. There is a bad combination of
|
||||
static and shared libraries that prevents the use of dynamic
|
||||
linking; configure now detects this and will disable dynamic
|
||||
linking even if you requested it.
|
||||
SIEMENS: SINIX
|
||||
MX (Intel) plattform: SINIX-L/M 5.41
|
||||
Builds out-of-the-box with EGCS. Neither dynamic loading nor
|
||||
64-bit integers are suported. Native compiler was not tried
|
||||
mostly because GCC/EGCS builds out-of-the-box as well. If you
|
||||
succeed with native compiler, send a patch for this file
|
||||
to zsh-workers.
|
||||
|
||||
RM (MIPS) plattform: SINIX-N/Y 5.42
|
||||
Should build out-of-the-box but it was not tested. Neither
|
||||
dynamic loading nor 64-bit integers are suported.
|
||||
Note, that this version is obsolete and users are expected to
|
||||
update to Reliant UNIX.
|
||||
|
||||
SGI: IRIX 5.1.1.1, 5.2, 5.3, 6.2, 6.3, 6.5
|
||||
Should build `out-of-the-box'.
|
||||
|
|
86
Etc/NEWS
86
Etc/NEWS
|
@ -1,9 +1,11 @@
|
|||
-------------------------------------
|
||||
CHANGES FROM PREVIOUS VERSIONS OF ZSH
|
||||
-------------------------------------
|
||||
|
||||
|
||||
New features in zsh version 3.1.6 (beta version)
|
||||
------------------------------------------------
|
||||
Note also the changes for 3.0.6, which include changes between 3.1.5. and
|
||||
3.1.6.
|
||||
|
||||
New completion system via shell functions; massive degree of
|
||||
programmability and configurability:
|
||||
|
@ -27,7 +29,8 @@ Other editing changes:
|
|||
History changes: new options HIST_NO_FUNCTIONS, HIST_EXPIRE_DUPS_FIRST,
|
||||
HIST_FIND_NO_DUPS, HIST_IGNORE_ALL_DUPS, INC_APPEND_HISTORY,
|
||||
HIST_SAVE_NO_DUPS, SHARE_HISTORY, allow better control of when history is
|
||||
read and written and how duplicates are handled.
|
||||
read and written and how duplicates are handled. New format for history
|
||||
saves.
|
||||
|
||||
Associative arrays plus enhanced parameter substitutions to retrieve keys
|
||||
and values.
|
||||
|
@ -47,10 +50,9 @@ New loadable modules:
|
|||
array interface.
|
||||
|
||||
Debugging and prompt enhancements:
|
||||
- LINENO is now very much more useful in scripts and functions and has
|
||||
corresponding prompt escape %i
|
||||
- $PS4 can contain %i as well as %N for script or function names
|
||||
(default PS4 changed), also %_ for current shell structure executing;
|
||||
- $PS4 can contain %i for $LINENO as well as %N for script or function
|
||||
names (default PS4 changed), also %_ for current shell structure
|
||||
executing;
|
||||
- Prompt truncation %<...< is now more flexible: it applies to a
|
||||
whole section of the prompt, not just one escape. You need to put
|
||||
%<< after the truncated escape to get the old behaviour.
|
||||
|
@ -58,8 +60,8 @@ Debugging and prompt enhancements:
|
|||
been output, else no (e.g. for outputting extra newlines).
|
||||
|
||||
Parameter and expansion changes
|
||||
- typeset -t MYPATH mypath creates tied path/PATH-like variables
|
||||
- typeset -g allows operations on parameters without making them local
|
||||
- `typeset -t MYPATH mypath' creates tied path/PATH-like variables
|
||||
- `typeset -g' allows operations on parameters without making them local
|
||||
- New expansions
|
||||
- ${(t)param} prints type information for $param
|
||||
- ${(P)param} treats value of $param as the name of a param to
|
||||
|
@ -68,27 +70,79 @@ Parameter and expansion changes
|
|||
- ${foo/old/new} substitution, like bash; also (S) flag for shortest
|
||||
match
|
||||
- $foo[(b.2.i)bar] starts searching $foo for bar starting at 2nd match
|
||||
- more logical behaviour of nested parameters, now properly documented
|
||||
- quote only nested expansion, e.g. ${(f)"$(<file)"} reads complete
|
||||
`file', then splits lines into array.
|
||||
|
||||
Builtin and function changes
|
||||
- stat module: `stat -H hash foo' gives you e.g. $hash[mtime]
|
||||
- autoload -U autoloads functions without alias expansion.
|
||||
- `autoload -U' autoloads functions without alias expansion.
|
||||
|
||||
Other new options:
|
||||
- LOCAL_TRAPS allows signal traps to be local to functions (as in ksh).
|
||||
- NO_RCS can now be turned on at any point in initialization files.
|
||||
- NO_GLOBAL_RCS can force /etc/z* files after /etc/zshenv to be skipped.
|
||||
(Please don't use this as an excuse to stuff more into /etc/zshenv!)
|
||||
- existing MAGIC_EQUAL_SUBST option is more useful; any argument containing
|
||||
...=~...:~... will perform filename expansion on the ~.
|
||||
- Existing MAGIC_EQUAL_SUBST option is more useful; any argument containing
|
||||
...=~...:~... will perform filename expansion on the ~ (previously,
|
||||
the string before `=' had to look like a parameter name).
|
||||
|
||||
Configuration changes:
|
||||
- Generation of signal names should be more reliable
|
||||
- Customizable installation of shell functions from distribution.
|
||||
|
||||
New features in zsh version 3.0.6
|
||||
---------------------------------
|
||||
|
||||
Most of these changes are designed to improve compatibility with zsh
|
||||
version 3.1.6, the latest development release. However, this release also
|
||||
fixes all known Year 2000 (Y2K) bugs in zsh 3.0.
|
||||
|
||||
History changes:
|
||||
- whitespace between words is ignored in history searches.
|
||||
- new option HIST_REDUCE_BLANKS removes extra whitespace in the stored
|
||||
history.
|
||||
- support for reading (but not writing) version 3.1.6 history files.
|
||||
|
||||
Globbing changes:
|
||||
- the a, c, and m glob qualifiers can now test time in seconds.
|
||||
- globbing of number ranges behaves more like character ranges in that
|
||||
it can match a prefix of a number, e.g. `<1-5>*' matches 1, 2, 3, 4,
|
||||
5, 17, 23skiddoo, 5986, etc., but not 6, 7, 8ball, 911, etc.
|
||||
|
||||
Parameter and expansion changes:
|
||||
- expansion of ~ and other globbing flags via ${~param} do not depend
|
||||
upon EXTENDED_GLOB (bug fix).
|
||||
- nested parameter substitutions require braces (this was always the
|
||||
documented behavior, but previous parsers didn't enforce it).
|
||||
- quote only nested expansion, e.g. ${(f)"$(<file)"} reads complete
|
||||
`file', then splits lines into array.
|
||||
|
||||
Builtin and function changes:
|
||||
- `typeset -U' works on the colon-array version of linked parameters.
|
||||
- `typeset +f' and `functions +' output the names (only) of functions.
|
||||
- `emulate -L' has the effect of `setopt localoptions'.
|
||||
- in fn1() { local foo; unset foo; foo=bar; }, foo is restored at local
|
||||
level, whereas if the `unset foo' appeared in a nested function it
|
||||
would have been restored at global level, which was presumably wrong.
|
||||
- `foo=bar >&file' is a redirection, not a NULLCMD.
|
||||
- any single complex command, such as `case ... esac', parses as if
|
||||
semicolon-terminated (bug fix).
|
||||
- the shell function `preexec', if defined, is run after parsing each
|
||||
command line but before executing the command.
|
||||
|
||||
Other changes:
|
||||
- the option PRINT_EIGHT_BIT causes zsh to emit raw bytes in prompts
|
||||
and completion lists even if the system ctype(3) package says that
|
||||
those bytes are not "printable."
|
||||
|
||||
Debugging enhancements:
|
||||
- LINENO is now very much more useful in scripts and functions and is
|
||||
reported correctly in most error messages.
|
||||
- ERREXIT behavior is now consistent with newer Bourne-like shells,
|
||||
e.g. with respect to `if' tests that fail.
|
||||
|
||||
Configuration changes:
|
||||
- Large file and 64-bit integers on 32-bit machines supported where
|
||||
provided by OS.
|
||||
- generation of signal names should be more reliable
|
||||
- Customizable installation of shell functions from distribution.
|
||||
- a few more system features, such as getpwnam/getpwuid, are tested for.
|
||||
|
||||
|
||||
New features in zsh version 3.1 (beta version)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
emulate -L zsh
|
||||
|
||||
local opt optlist once
|
||||
local opt optlist once dir
|
||||
|
||||
while [[ $1 = -* ]]; do
|
||||
if [[ $1 = - || $1 = -- ]]; then
|
||||
|
@ -61,10 +61,20 @@ if [[ -z $EMAIL_ADDR ]]; then
|
|||
print "Using $EMAIL_ADDR as anonymous FTP password."
|
||||
fi
|
||||
|
||||
if [[ $1 = */* ]]; then
|
||||
1=${1##ftp://}
|
||||
dir=${1#*/}
|
||||
1=${1%%/*}
|
||||
fi
|
||||
|
||||
if [[ $once = 1 ]]; then
|
||||
zftp open $1 anonymous $EMAIL_ADDR
|
||||
zftp open $1 anonymous $EMAIL_ADDR || return 1
|
||||
else
|
||||
zftp params $1 anonymous $EMAIL_ADDR
|
||||
zftp open
|
||||
zftp open || return 1
|
||||
fi
|
||||
|
||||
if [[ -n $dir ]]; then
|
||||
zfcd $dir
|
||||
fi
|
||||
# }
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
# function zfget {
|
||||
# Get files from remote server. Options:
|
||||
# -c cat: dump files to stdout.
|
||||
# alias zfcat="zfget -c"
|
||||
# zfpage() { zfget -c "$@" | eval $PAGER }
|
||||
# are sensible things to do, but aren't done for you. Note the
|
||||
# second doesn't work on all OS's.
|
||||
# -G don't to remote globbing, else do
|
||||
# -t update the local file times to the same time as the remote.
|
||||
# Currently this only works if you have the `perl' command,
|
||||
# and that perl is version 5 with the standard library.
|
||||
# See the function zfrtime for more gory details.
|
||||
# See the function zfrtime for more gory details. This has
|
||||
# no effect with the -c option.
|
||||
#
|
||||
# If the connection is not currently open, try to open it with the current
|
||||
# parameters (set by a previous zfopen or zfparams), then close it after
|
||||
|
@ -13,7 +19,7 @@
|
|||
|
||||
emulate -L zsh
|
||||
|
||||
local loc rem optlist opt nglob remlist time
|
||||
local loc rem optlist opt nglob remlist time cat
|
||||
integer stat do_close
|
||||
|
||||
while [[ $1 == -* ]]; do
|
||||
|
@ -29,6 +35,8 @@ while [[ $1 == -* ]]; do
|
|||
;;
|
||||
t) time=1
|
||||
;;
|
||||
c) cat=1
|
||||
;;
|
||||
*) print option $opt not recognised >&2
|
||||
;;
|
||||
esac
|
||||
|
@ -48,11 +56,16 @@ for remlist in $*; do
|
|||
fi
|
||||
if (( $#remlist )); then
|
||||
for rem in $remlist; do
|
||||
loc=${rem:t}
|
||||
if zftp get $rem >$loc; then
|
||||
[[ $time = 1 ]] && zfrtime $rem $loc
|
||||
if [[ -n $cat ]]; then
|
||||
zftp get $rem
|
||||
stat=$?
|
||||
else
|
||||
stat=1
|
||||
loc=${rem:t}
|
||||
if zftp get $rem >$loc; then
|
||||
[[ $time = 1 ]] && zfrtime $rem $loc
|
||||
else
|
||||
stat=1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
emulate -L zsh
|
||||
|
||||
local optlist opt once
|
||||
local optlist opt once dir
|
||||
|
||||
while [[ $1 = -* ]]; do
|
||||
if [[ $1 = - || $1 = -- ]]; then
|
||||
|
@ -31,12 +31,22 @@ done
|
|||
# both .netrc and .ncftp/bookmarks . We could even try saving
|
||||
# the info in their for new hosts, like ncftp does.
|
||||
|
||||
if [[ $1 = */* ]]; then
|
||||
1=${1##ftp://}
|
||||
dir=${1#*/}
|
||||
1=${1%%/*}
|
||||
fi
|
||||
|
||||
if [[ $once = 1 ]]; then
|
||||
zftp open $*
|
||||
zftp open $* || return 1
|
||||
else
|
||||
# set parameters, but only if there was at least a host
|
||||
(( $# > 0 )) && zfparams $*
|
||||
# now call with no parameters
|
||||
zftp open
|
||||
zftp open || return 1
|
||||
fi
|
||||
|
||||
if [[ -n $dir ]]; then
|
||||
zfcd $dir
|
||||
fi
|
||||
# }
|
||||
|
|
|
@ -1,13 +1,16 @@
|
|||
# function zftp_chpwd {
|
||||
# You may want to alter chpwd to call this when $ZFTP_USER is set.
|
||||
|
||||
# Cancel the filename cache for the current directory.
|
||||
zftp_fcache=()
|
||||
# ...and also empty the stored directory listing cache.
|
||||
# As this function is called when we close the connection, this
|
||||
# is the only place we need to do these two things.
|
||||
[[ -n $zfcurdir && -f $zfcurdir ]] && rm -f $zfcurdir
|
||||
zfotherargs=
|
||||
# If the directory really changed...
|
||||
if [[ $ZFTP_PWD != $zflastdir ]]; then
|
||||
# Cancel the filename cache for the current directory.
|
||||
zftp_fcache=()
|
||||
# ...and also empty the stored directory listing cache.
|
||||
# As this function is called when we close the connection, this
|
||||
# is the only place we need to do these two things.
|
||||
[[ -n $zfcurdir && -f $zfcurdir ]] && rm -f $zfcurdir
|
||||
zfotherargs=
|
||||
fi
|
||||
|
||||
if [[ -z $ZFTP_USER ]]; then
|
||||
# last call, after an FTP logout
|
||||
|
|
|
@ -563,7 +563,7 @@ cvsprefix() {
|
|||
cvsentries() {
|
||||
setopt localoptions nullglob unset
|
||||
if [[ -f ${pref}CVS/Entries ]]; then
|
||||
reply=( "${pref}${^${(@)${(@)${(f@)$(<${pref}CVS/Entries)}:#D*}#/}%%/*}" )
|
||||
reply=( "${pref}${(@)^${(@)${(@)${(f@)$(<${pref}CVS/Entries)}:#D*}#/}%%/*}" )
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ clwords
|
|||
clwpos
|
||||
clwsize
|
||||
cmatcher
|
||||
compcommand
|
||||
compcontext
|
||||
compctltab
|
||||
compcurrent
|
||||
|
@ -33,7 +32,6 @@ compoldins
|
|||
compparameter
|
||||
comppatinsert
|
||||
comppatmatch
|
||||
comppms
|
||||
compprefix
|
||||
compredirect
|
||||
compqiprefix
|
||||
|
@ -55,7 +53,6 @@ freecompctl
|
|||
getcpatptr
|
||||
incompctlfunc
|
||||
incompfunc
|
||||
instring
|
||||
makecomplistcallptr
|
||||
makecomplistctlptr
|
||||
makecompparamsptr
|
||||
|
|
|
@ -27,8 +27,6 @@ lmatches
|
|||
menuacc
|
||||
menucmp
|
||||
menucomplete
|
||||
menucur
|
||||
menugrp
|
||||
minfo
|
||||
newkeymap
|
||||
nlnct
|
||||
|
|
|
@ -568,6 +568,8 @@ acceptlast(void)
|
|||
cs = minfo.pos + minfo.len + minfo.insc - (*(minfo.cur))->qisl;
|
||||
if (cs < l)
|
||||
foredel(l - cs);
|
||||
else if (cs > ll)
|
||||
cs = ll;
|
||||
inststrlen(" ", 1, 1);
|
||||
if (parpre)
|
||||
inststr(parpre);
|
||||
|
@ -2121,6 +2123,7 @@ abort_match(void)
|
|||
{
|
||||
free_cline(matchparts);
|
||||
free_cline(matchsubs);
|
||||
matchparts = matchsubs = NULL;
|
||||
}
|
||||
|
||||
/* This adds a new string in the static char buffer. The arguments are
|
||||
|
@ -2615,6 +2618,7 @@ comp_match(char *pfx, char *sfx, char *w, Comp cp,
|
|||
chuck(r);
|
||||
/* We still break it into parts here, trying to build a sensible
|
||||
* cline list for these matches, too. */
|
||||
w = dupstring(w);
|
||||
wl = strlen(w);
|
||||
*clp = bld_parts(w, wl, wl, NULL);
|
||||
*exact = 0;
|
||||
|
@ -6280,8 +6284,8 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
|
|||
gen_matches_files(1, 0, 0);
|
||||
/* The compctl has a glob pattern (compctl -g). */
|
||||
if (cc->glob) {
|
||||
int ns, pl = strlen(prpre), o;
|
||||
char *g = dupstring(cc->glob), pa[PATH_MAX];
|
||||
int ns, pl = strlen(prpre), o, paalloc;
|
||||
char *g = dupstring(cc->glob), *pa;
|
||||
char *p2, *p3;
|
||||
int ne = noerrs, md = opts[MARKDIRS];
|
||||
|
||||
|
@ -6295,8 +6299,9 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
|
|||
}
|
||||
noerrs = 1;
|
||||
addwhat = -6;
|
||||
o = strlen(prpre);
|
||||
pa = (char *)zalloc(paalloc = o + PATH_MAX);
|
||||
strcpy(pa, prpre);
|
||||
o = strlen(pa);
|
||||
opts[MARKDIRS] = 0;
|
||||
|
||||
/* The compctl -g string may contain more than *
|
||||
|
@ -6335,6 +6340,10 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
|
|||
else {
|
||||
/* It's a simple pattern, so append it to *
|
||||
* the path we have on the command line. */
|
||||
int minlen = o + strlen(g);
|
||||
if (minlen >= paalloc)
|
||||
pa = (char *)
|
||||
zrealloc(pa, paalloc = minlen+1);
|
||||
strcpy(pa + o, g);
|
||||
addlinknode(l, dupstring(pa));
|
||||
}
|
||||
|
@ -6380,6 +6389,8 @@ makecomplistflags(Compctl cc, char *s, int incmd, int compadd)
|
|||
glob_pre = glob_suf = NULL;
|
||||
noerrs = ne;
|
||||
opts[MARKDIRS] = md;
|
||||
|
||||
zfree(pa, paalloc);
|
||||
}
|
||||
}
|
||||
dirs++;
|
||||
|
|
|
@ -3023,7 +3023,7 @@ matchonce(Comp c)
|
|||
if (exclend) {
|
||||
exclsav = *exclend;
|
||||
*exclend = '\0';
|
||||
}
|
||||
}
|
||||
if ((ret = doesmatch(c->left))) {
|
||||
if (exclend)
|
||||
*exclend = exclsav;
|
||||
|
|
|
@ -700,7 +700,7 @@ hbegin(int dohist)
|
|||
{
|
||||
isfirstln = isfirstch = 1;
|
||||
errflag = histdone = spaceflag = 0;
|
||||
stophist = (dohist ? ((!interact || unset(SHINSTDIN)) << 1) : 2);
|
||||
stophist = (!dohist || !interact || unset(SHINSTDIN)) ? 2 : 0;
|
||||
if (stophist == 2 || (inbufflags & INP_ALIAS)) {
|
||||
chline = hptr = NULL;
|
||||
hlinesz = 0;
|
||||
|
@ -721,6 +721,8 @@ hbegin(int dohist)
|
|||
hwbegin = ihwbegin;
|
||||
hwend = ihwend;
|
||||
addtoline = iaddtoline;
|
||||
if (!isset(BANGHIST))
|
||||
stophist = 4;
|
||||
}
|
||||
chwordpos = 0;
|
||||
|
||||
|
|
|
@ -76,7 +76,6 @@ file_type
|
|||
filesub
|
||||
filesubstr
|
||||
findcmd
|
||||
firsthist
|
||||
freearray
|
||||
freeheap
|
||||
freelinklist
|
||||
|
@ -112,8 +111,6 @@ haswilds
|
|||
hcalloc
|
||||
hgetc
|
||||
hgetline
|
||||
histentarr
|
||||
histentct
|
||||
hist_ring
|
||||
hist_skip_flags
|
||||
holdintr
|
||||
|
@ -196,7 +193,6 @@ promptexpand
|
|||
pushheap
|
||||
putshout
|
||||
pwd
|
||||
quietgetevent
|
||||
quietgethist
|
||||
quotedzputs
|
||||
readoutput
|
||||
|
|
|
@ -254,7 +254,7 @@ dnl else use -O
|
|||
if test -n "$auto_cflags"; then
|
||||
if test "${enable_zsh_debug}" = yes; then
|
||||
if test -n "$GCC"; then
|
||||
CFLAGS="$CFLAGS -Wall -Wno-implicit -Wmissing-prototypes -pedantic -ggdb"
|
||||
CFLAGS="$CFLAGS -Wall -Wno-implicit -Wmissing-prototypes -ggdb"
|
||||
else
|
||||
CFLAGS="$CFLAGS -g"
|
||||
fi
|
||||
|
|
Loading…
Reference in a new issue