mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-12-28 16:15:02 +01:00
unposted: force latest version of files from vendor to main branch
This commit is contained in:
parent
6fa964914d
commit
876fa2c44e
25 changed files with 310 additions and 194 deletions
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
||||||
|
2007-07-03 Peter Stephenson <pws@csr.com>
|
||||||
|
|
||||||
|
* unposted: Doc/Zsh/mod_cap.yo, Doc/Zsh/mod_complete.yo,
|
||||||
|
Doc/Zsh/mod_example.yo, Doc/Zsh/mod_files.yo,
|
||||||
|
Doc/Zsh/mod_mapfile.yo, Doc/Zsh/mod_zleparameter.yo, Doc/intro.ms,
|
||||||
|
Doc/zshzftpsys.yo, Etc/Makefile.in,
|
||||||
|
Functions/Prompts/prompt_adam1_setup,
|
||||||
|
Functions/Prompts/prompt_redhat_setup,
|
||||||
|
Functions/Prompts/prompt_suse_setup, Functions/Zftp/zfrglob,
|
||||||
|
Functions/Zftp/zftp_chpwd, Misc/.distfiles, Misc/bash2zshprompt,
|
||||||
|
Misc/c2z, Misc/compctl-examples, Misc/globtests.ksh,
|
||||||
|
Misc/job-control-tests, Misc/lete2ctl, Src/Zle/.distfiles,
|
||||||
|
Util/preconfig, aclocal.m4: jiggery pokery to force files
|
||||||
|
onto main branch (1.X) from vendor branch (1.1.1.X).
|
||||||
|
|
||||||
2007-07-03 Clint Adams <clint@zsh.org>
|
2007-07-03 Clint Adams <clint@zsh.org>
|
||||||
|
|
||||||
* 23645: Functions/Zftp/zfautocheck: use == instead of =.
|
* 23645: Functions/Zftp/zfautocheck: use == instead of =.
|
||||||
|
|
|
@ -1,107 +1,3 @@
|
||||||
The subdirectories contain code for the new function-based completion
|
The subdirectories contain code for a shell-based system of command-line
|
||||||
system. Broadly speaking, this uses shell functions defined for each
|
completion. This is considerably more powerful than the old `compctl'
|
||||||
command to determine how the arguments of a command should be completed.
|
method. For details, see the compsys(1) manual page (`man zshcompsys').
|
||||||
|
|
||||||
You should copy all the files you need or want to a directory of your own,
|
|
||||||
which should be included in your autoload path as defined by $fpath. Then
|
|
||||||
in your .zshrc you should source the file which appears here in
|
|
||||||
Core/compinit. It is recommnded that you use the -d option, which outputs
|
|
||||||
a file containing the necessary variables, bindkeys etc., making later
|
|
||||||
loading much faster. For example,
|
|
||||||
[[ -f ~/completion/compinit ]] && . ~/completion/compinit -d
|
|
||||||
This will rebind any keys which do completion to use the new system.
|
|
||||||
For more detailed instructions, including how to add new completions, see
|
|
||||||
the top of Core/compinit .
|
|
||||||
|
|
||||||
The subdirectories contain:
|
|
||||||
|
|
||||||
Core:
|
|
||||||
The basic functions and files to be sourced. You will certainly need
|
|
||||||
these, and will most likely not feel like altering them (or, in some
|
|
||||||
cases, even reading them, unless you are a shell wizard). The files are:
|
|
||||||
compinit
|
|
||||||
As already described, this is not a function, but is sourced once
|
|
||||||
(with the `source' or `.' commands) to set up the completion system.
|
|
||||||
compdump
|
|
||||||
This dumps the completions status for faster initialisation. The
|
|
||||||
easiest way of doing this is to use the -d option to compinit rather
|
|
||||||
than calling compdump directly.
|
|
||||||
_comp_parts
|
|
||||||
Utility used for completing words with multiple separate parts, such as
|
|
||||||
`<user>@<host>'
|
|
||||||
_compalso
|
|
||||||
Utility for calling a function to add additional completions to an
|
|
||||||
already existing set.
|
|
||||||
_files
|
|
||||||
A frontend to _path_files which will default to any old file if the
|
|
||||||
specified file was not found.
|
|
||||||
_main_complete
|
|
||||||
The main entry point called by the key bindings which compinit sets
|
|
||||||
up (the main `completion widget' in zsh jargon).
|
|
||||||
_normal
|
|
||||||
The function called by _main_complete to handle the most common
|
|
||||||
cases, such as completing a command name or its arguments. This
|
|
||||||
function dispatches to the various other functions for individual
|
|
||||||
commands. (Actually, the system is fairly context-sensitive, so
|
|
||||||
it is wider than just command+argument.)
|
|
||||||
_path_files
|
|
||||||
The function usually called to complete filenames and directories. It
|
|
||||||
replaces the standard -f and -/ options for the basic completion
|
|
||||||
commands: it can do various extra tricks, such as expanding a whole
|
|
||||||
path at once, e.g. F/C/C/_p<TAB> -> Functions/Completion/Core/_path_files
|
|
||||||
Base:
|
|
||||||
You will almost certainly want these files, too, which handle standard
|
|
||||||
tasks like completing files. However, you may want to edit them for
|
|
||||||
your own particular setup. Files are:
|
|
||||||
_command_names
|
|
||||||
This handles completion of the command word, i.e. the first thing
|
|
||||||
on the command line. You may want to alter this, for example,
|
|
||||||
to complete parameters to assign to.
|
|
||||||
_condition
|
|
||||||
This handles completing inside [[ ... ]] .
|
|
||||||
_default
|
|
||||||
This handles completion of command arguments when no special function
|
|
||||||
exists. Usually this means completing files, but you can modify this
|
|
||||||
as you wish.
|
|
||||||
_match_pattern
|
|
||||||
_match_test
|
|
||||||
These are used by Base/_path_files (and hence also Base/_files) for
|
|
||||||
file completion with control over matching (whether to complete
|
|
||||||
case-insensitively, or to allow insertion before `.', etc.) See
|
|
||||||
_match_test for instructions. Note _path_files expects these files
|
|
||||||
to be present.
|
|
||||||
_precommand
|
|
||||||
Allows completion when the first word on the line has to be ignored,
|
|
||||||
for example `noglob ...' should ignore the noglob and just complete
|
|
||||||
as if it wasn't there. Add other such commands to the top line.
|
|
||||||
_redirect
|
|
||||||
Completes after `<' or `<': this version calls _files.
|
|
||||||
_subscript
|
|
||||||
For completion in subscripts of parameters, e.g $foo[...].
|
|
||||||
_vars
|
|
||||||
Completion for commands which need variables (so this could also be in
|
|
||||||
the Builtins directory), but also in math environments such as ((...)).
|
|
||||||
Builtins:
|
|
||||||
Define completions for various shell builtins. The top line of each file
|
|
||||||
says which builtins they apply to; in many cases you can guess from the
|
|
||||||
name. Note in particular that _zftp defines completions for all commands
|
|
||||||
beginning `zf', not just for the module command zftp. This is only
|
|
||||||
really useful if you use zftp with the zf* function suite (zfopen, zfget,
|
|
||||||
...).
|
|
||||||
User:
|
|
||||||
This contains a pot pourri of completions for various external commands.
|
|
||||||
Not all will work unmodified on your system.
|
|
||||||
Commands:
|
|
||||||
These functions define separate completion commands which do not use
|
|
||||||
the usual context information, and hence have to be bound separately
|
|
||||||
to keys. As they appear, they have bindings which you can change or
|
|
||||||
delete by altering the top line of the file. To bind a function
|
|
||||||
(strictly speaking, the corresponding completion widget) yourself
|
|
||||||
after completion is loaded, use `bindkey '<key-string>' <_function_name>'.
|
|
||||||
The files are:
|
|
||||||
_correct_filename, bound to \C-xc
|
|
||||||
Correct the word under the cursor as a filename. This is significantly
|
|
||||||
more powerful than the standard \e$ (spell-word) binding.
|
|
||||||
_most_recent_file, bound to \C-xm
|
|
||||||
Insert the name of the most recent file matching the pattern
|
|
||||||
so far on the command line.
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
texinode(The cap Module)(The clone Module)()(Zsh Modules)
|
COMMENT(!MOD!zsh/cap
|
||||||
sect(The cap Module)
|
Builtins for manipulating POSIX.1e (POSIX.6) capability (privilege) sets.
|
||||||
The tt(cap) module is used for manipulating POSIX.1e (POSIX.6) capability
|
!MOD!)
|
||||||
|
The tt(zsh/cap) module is used for manipulating POSIX.1e (POSIX.6) capability
|
||||||
sets. If the operating system does not support this interface, the
|
sets. If the operating system does not support this interface, the
|
||||||
builtins defined by this module will do nothing.
|
builtins defined by this module will do nothing.
|
||||||
The builtins in this module are:
|
The builtins in this module are:
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
texinode(The complete Module)(The compctl Module)(The clone Module)(Zsh Modules)
|
COMMENT(!MOD!zsh/complete
|
||||||
sect(The complete Module)
|
The basic completion code.
|
||||||
The tt(compctl) module makes available several builtin commands which
|
!MOD!)
|
||||||
|
The tt(zsh/complete) module makes available several builtin commands which
|
||||||
can be used in user-defined completion widgets, see
|
can be used in user-defined completion widgets, see
|
||||||
ifzman(zmanref(zshcompwid))\
|
ifzman(zmanref(zshcompwid))\
|
||||||
ifnzman(noderef(Completion Widgets))\
|
ifnzman(noderef(Completion Widgets))\
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
texinode(The example Module)(The files Module)(The deltochar Module)(Zsh Modules)
|
COMMENT(!MOD!zsh/example
|
||||||
sect(The example Module)
|
An example of how to write a module.
|
||||||
The tt(example) module makes available one builtin command:
|
!MOD!)
|
||||||
|
The tt(zsh/example) module makes available one builtin command:
|
||||||
|
|
||||||
startitem()
|
startitem()
|
||||||
findex(example)
|
findex(example)
|
||||||
|
|
|
@ -1,9 +1,52 @@
|
||||||
texinode(The files Module)(The sched Module)(The example Module)(Zsh Modules)
|
COMMENT(!MOD!zsh/files
|
||||||
sect(The files Module)
|
Some basic file manipulation commands as builtins.
|
||||||
|
!MOD!)
|
||||||
cindex(files, manipulating)
|
cindex(files, manipulating)
|
||||||
The tt(files) module makes some standard commands available as builtins:
|
The tt(zsh/files) module makes some standard commands available as builtins:
|
||||||
|
|
||||||
startitem()
|
startitem()
|
||||||
|
findex(chgrp)
|
||||||
|
item(tt(chgrp) [ tt(-Rs) ] var(group) var(filename) ...)(
|
||||||
|
Changes group of files specified. This is equivalent to tt(chown) with
|
||||||
|
a var(user-spec) argument of `tt(:)var(group)'.
|
||||||
|
)
|
||||||
|
findex(chown)
|
||||||
|
item(tt(chown) [ tt(-Rs) ] var(user-spec) var(filename) ...)(
|
||||||
|
Changes ownership and group of files specified.
|
||||||
|
|
||||||
|
The var(user-spec) can be in four forms:
|
||||||
|
|
||||||
|
startsitem()
|
||||||
|
sitem(var(user))(change owner to var(user); do not change group)
|
||||||
|
sitem(var(user)tt(::))(change owner to var(user); do not change group)
|
||||||
|
sitem(var(user)tt(:))(change owner to var(user); change group to var(user)'s primary group)
|
||||||
|
sitem(var(user)tt(:)var(group))(change owner to var(user); change group to var(group))
|
||||||
|
sitem(tt(:)var(group))(do not change owner; change group to var(group))
|
||||||
|
endsitem()
|
||||||
|
|
||||||
|
In each case, the `tt(:)' may instead be a `tt(.)'. The rule is that
|
||||||
|
if there is a `tt(:)' then the separator is `tt(:)', otherwise
|
||||||
|
if there is a `tt(.)' then the separator is `tt(.)', otherwise
|
||||||
|
there is no separator.
|
||||||
|
|
||||||
|
Each of var(user) and var(group) may be either a username (or group name, as
|
||||||
|
appropriate) or a decimal user ID (group ID). Interpretation as a name
|
||||||
|
takes precedence, if there is an all-numeric username (or group name).
|
||||||
|
|
||||||
|
The tt(-R) option causes tt(chown) to recursively descend into directories,
|
||||||
|
changing the ownership of all files in the directory after
|
||||||
|
changing the ownership of the directory itself.
|
||||||
|
|
||||||
|
The tt(-s) option is a zsh extension to tt(chown) functionality. It enables
|
||||||
|
paranoid behaviour, intended to avoid security problems involving
|
||||||
|
a tt(chown) being tricked into affecting files other than the ones
|
||||||
|
intended. It will refuse to follow symbolic links, so that (for example)
|
||||||
|
``tt(chown luser /tmp/foo/passwd)'' can't accidentally chown tt(/etc/passwd)
|
||||||
|
if tt(/tmp/foo) happens to be a link to tt(/etc). It will also check
|
||||||
|
where it is after leaving directories, so that a recursive chown of
|
||||||
|
a deep directory tree can't end up recursively chowning tt(/usr) as
|
||||||
|
a result of directories being moved up the tree.
|
||||||
|
)
|
||||||
findex(ln)
|
findex(ln)
|
||||||
xitem(tt(ln) [ tt(-dfis) ] var(filename) var(dest))
|
xitem(tt(ln) [ tt(-dfis) ] var(filename) var(dest))
|
||||||
item(tt(ln) [ tt(-dfis) ] var(filename) ... var(dir))(
|
item(tt(ln) [ tt(-dfis) ] var(filename) ... var(dir))(
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
texinode(The mapfile Module)(The parameter Module)(The files Module)(Zsh Modules)
|
COMMENT(!MOD!zsh/mapfile
|
||||||
sect(The mapfile Module)
|
Access to external files via a special associative array.
|
||||||
|
!MOD!)
|
||||||
cindex(parameter, file access via)
|
cindex(parameter, file access via)
|
||||||
The tt(mapfile) module provides one special associative array parameter of
|
The tt(zsh/mapfile) module provides one special associative array parameter of
|
||||||
the same name.
|
the same name.
|
||||||
|
|
||||||
startitem()
|
startitem()
|
||||||
|
@ -34,11 +35,13 @@ handled, zsh's internal memory management may be arbitrarily baroque. Thus
|
||||||
it should not automatically be assumed that use of tt(mapfile) represents a
|
it should not automatically be assumed that use of tt(mapfile) represents a
|
||||||
gain in efficiency over use of other mechanisms. Note in particular that
|
gain in efficiency over use of other mechanisms. Note in particular that
|
||||||
the whole contents of the file will always reside physically in memory when
|
the whole contents of the file will always reside physically in memory when
|
||||||
accessed (possibly multiple times, due to standard parameter subsitution
|
accessed (possibly multiple times, due to standard parameter substitution
|
||||||
operations).
|
operations). In particular, this means handling of sufficiently long files
|
||||||
|
(greater than the machine's swap space, or than the range of the pointer
|
||||||
|
type) will be incorrect.
|
||||||
|
|
||||||
No errors are printed or flagged for non-existent, unreadable, or
|
No errors are printed or flagged for non-existent, unreadable, or
|
||||||
unwriteable files, as the parameter mechanism is too low in the shell
|
unwritable files, as the parameter mechanism is too low in the shell
|
||||||
execution hierarchy to make this convenient.
|
execution hierarchy to make this convenient.
|
||||||
|
|
||||||
It is unfortunate that the mechanism for loading modules does not yet allow
|
It is unfortunate that the mechanism for loading modules does not yet allow
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
texinode(The zleparameter Module)()(The zle Module)(Zsh Modules)
|
COMMENT(!MOD!zsh/zleparameter
|
||||||
sect(The zleparameter Module)
|
Access to internals of the Zsh Line Editor via parameters.
|
||||||
|
!MOD!)
|
||||||
cindex(parameters, special)
|
cindex(parameters, special)
|
||||||
The tt(zleparameter) module defines two special parameters that can be
|
The tt(zsh/zleparameter) module defines two special parameters that can be
|
||||||
used to access internal information of the Zsh Line Editor (see
|
used to access internal information of the Zsh Line Editor (see
|
||||||
ifzman(zmanref(zshzle))\
|
ifzman(zmanref(zshzle))\
|
||||||
ifnzman(noderef(Zsh Line Editor))\
|
ifnzman(noderef(Zsh Line Editor))\
|
||||||
).
|
).
|
||||||
|
|
||||||
startitem()
|
startitem()
|
||||||
vindex(zlekeymaps)
|
vindex(keymaps)
|
||||||
item(tt(zlekeymaps))(
|
item(tt(keymaps))(
|
||||||
This array contains the names of the keymaps currently defined.
|
This array contains the names of the keymaps currently defined.
|
||||||
)
|
)
|
||||||
vindex(zlewidgets)
|
vindex(widgets)
|
||||||
item(tt(zlewidgets))(
|
item(tt(widgets))(
|
||||||
This associative array contains one entry per widget defined. The name
|
This associative array contains one entry per widget defined. The name
|
||||||
of the widget is the key and the value gives information about the
|
of the widget is the key and the value gives information about the
|
||||||
widget. It is either the string `tt(builtin)' for builtin widgets, a
|
widget. It is either the string `tt(builtin)' for builtin widgets, a
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
.nr PI 0
|
.nr PI 0
|
||||||
.nr LL 6.5i
|
.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
|
.de Ds
|
||||||
.DS I .5i
|
.DS I .5i
|
||||||
.ft C
|
.ft C
|
||||||
|
@ -12,7 +17,8 @@
|
||||||
.ft R
|
.ft R
|
||||||
.ps
|
.ps
|
||||||
.vs
|
.vs
|
||||||
.ss
|
.ie \n(.g .ss \n(De
|
||||||
|
.el .ss
|
||||||
..
|
..
|
||||||
.de Sh
|
.de Sh
|
||||||
.SH
|
.SH
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
manpage(ZSHZFTPSYS)(1)(date())(zsh version())
|
||||||
|
manpagename(zshzftpsys)(zftp function front-end)
|
||||||
|
includefile(Zsh/zftpsys.yo)
|
|
@ -28,8 +28,15 @@ subdir = Etc
|
||||||
dir_top = ..
|
dir_top = ..
|
||||||
SUBDIRS =
|
SUBDIRS =
|
||||||
|
|
||||||
@@version.mk@@
|
@VERSION_MK@
|
||||||
@@defs.mk@@
|
|
||||||
|
# source/build directories
|
||||||
|
VPATH = @srcdir@
|
||||||
|
sdir = @srcdir@
|
||||||
|
sdir_top = @top_srcdir@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
|
||||||
|
@DEFS_MK@
|
||||||
|
|
||||||
# ========== DEPENDENCIES FOR BUILDING ==========
|
# ========== DEPENDENCIES FOR BUILDING ==========
|
||||||
|
|
||||||
|
@ -43,7 +50,7 @@ FAQ.html: FAQ.yo
|
||||||
|
|
||||||
# ========== DEPENDENCIES FOR CLEANUP ==========
|
# ========== DEPENDENCIES FOR CLEANUP ==========
|
||||||
|
|
||||||
@@clean.mk@@
|
@CLEAN_MK@
|
||||||
|
|
||||||
mostlyclean-here:
|
mostlyclean-here:
|
||||||
rm -f FAQ.html
|
rm -f FAQ.html
|
||||||
|
@ -56,4 +63,4 @@ realclean-here:
|
||||||
|
|
||||||
# ========== DEPENDENCIES FOR MAINTENANCE ==========
|
# ========== DEPENDENCIES FOR MAINTENANCE ==========
|
||||||
|
|
||||||
@@config.mk@@
|
@CONFIG_MK@
|
||||||
|
|
|
@ -1,7 +1,30 @@
|
||||||
# adam1 prompt theme
|
# adam1 prompt theme
|
||||||
|
|
||||||
|
prompt_adam1_help () {
|
||||||
|
cat <<'EOF'
|
||||||
|
This prompt is color-scheme-able. You can invoke it thus:
|
||||||
|
|
||||||
|
prompt adam1 [<color1> [<color2> [<color3>]]]
|
||||||
|
|
||||||
|
where the colors are for the user@host background, current working
|
||||||
|
directory, and current working directory if the prompt is split over
|
||||||
|
two lines respectively. The default colors are blue, cyan and green.
|
||||||
|
This theme works best with a dark background.
|
||||||
|
|
||||||
|
Recommended fonts for this theme: nexus or vga or similar. If you
|
||||||
|
don't have any of these, then specify the `plain' option to use 7-bit
|
||||||
|
replacements for the 8-bit characters.
|
||||||
|
|
||||||
|
And you probably thought adam1 was overkill.
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
prompt_adam1_setup () {
|
prompt_adam1_setup () {
|
||||||
base_prompt="%{$bg_no_bold_blue%}%n@%m%{$reset_color%} "
|
prompt_adam1_color1=${1:-'blue'}
|
||||||
|
prompt_adam1_color2=${2:-'cyan'}
|
||||||
|
prompt_adam1_color3=${3:-'green'}
|
||||||
|
|
||||||
|
base_prompt="%{$bg_no_bold[$prompt_adam1_color1]%}%n@%m%{$reset_color%} "
|
||||||
post_prompt="%{$reset_color%}"
|
post_prompt="%{$reset_color%}"
|
||||||
|
|
||||||
base_prompt_no_color=$(echo "$base_prompt" | perl -pe "s/%{.*?%}//g")
|
base_prompt_no_color=$(echo "$base_prompt" | perl -pe "s/%{.*?%}//g")
|
||||||
|
@ -20,10 +43,10 @@ prompt_adam1_precmd () {
|
||||||
base_prompt_etc=$(print -P "$base_prompt%(4~|...|)%3~")
|
base_prompt_etc=$(print -P "$base_prompt%(4~|...|)%3~")
|
||||||
prompt_length=${#base_prompt_etc}
|
prompt_length=${#base_prompt_etc}
|
||||||
if [[ $prompt_length -lt 40 ]]; then
|
if [[ $prompt_length -lt 40 ]]; then
|
||||||
path_prompt="%{$fg_bold_cyan%}%(4~|...|)%3~%{$fg_bold_white%}"
|
path_prompt="%{$fg_bold[$prompt_adam1_color2]%}%(4~|...|)%3~%{$fg_bold[white]%}"
|
||||||
else
|
else
|
||||||
space_left=$(( $COLUMNS - $#base_prompt_expanded_no_color - 2 ))
|
space_left=$(( $COLUMNS - $#base_prompt_expanded_no_color - 2 ))
|
||||||
path_prompt="%{$fg_bold_green%}%${space_left}<...<%~$prompt_newline%{$fg_bold_white%}"
|
path_prompt="%{$fg_bold[$prompt_adam1_color3]%}%${space_left}<...<%~$prompt_newline%{$fg_bold_white%}"
|
||||||
fi
|
fi
|
||||||
PS1="$base_prompt$path_prompt %# $post_prompt"
|
PS1="$base_prompt$path_prompt %# $post_prompt"
|
||||||
PS2="$base_prompt$path_prompt %_> $post_prompt"
|
PS2="$base_prompt$path_prompt %_> $post_prompt"
|
||||||
|
|
|
@ -6,6 +6,7 @@ prompt_redhat_setup () {
|
||||||
PS1="[%n@%m %1~]\\$ "
|
PS1="[%n@%m %1~]\\$ "
|
||||||
PS2="> "
|
PS2="> "
|
||||||
|
|
||||||
|
prompt_opts=( cr percent )
|
||||||
precmd () { }
|
precmd () { }
|
||||||
preexec () { }
|
preexec () { }
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ prompt_suse_setup () {
|
||||||
PS1="%n@%m:%~/ > "
|
PS1="%n@%m:%~/ > "
|
||||||
PS2="> "
|
PS2="> "
|
||||||
|
|
||||||
|
prompt_opts=( cr percent )
|
||||||
precmd () { }
|
precmd () { }
|
||||||
preexec () { }
|
preexec () { }
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,8 @@
|
||||||
# stick with a single directory. This is the default.
|
# stick with a single directory. This is the default.
|
||||||
# (2) Use remote globbing, i.e. pass it to ls at the site.
|
# (2) Use remote globbing, i.e. pass it to ls at the site.
|
||||||
# Faster, but only works with UNIX, and only basic globbing.
|
# Faster, but only works with UNIX, and only basic globbing.
|
||||||
# We do this if $zfrglob is non-null.
|
# We do this if the remote-glob style (or $zfrglob for
|
||||||
|
# backward compatibility) is set.
|
||||||
|
|
||||||
# There is only one argument, the variable containing the
|
# There is only one argument, the variable containing the
|
||||||
# pattern to be globbed. We set this back to an array containing
|
# pattern to be globbed. We set this back to an array containing
|
||||||
|
@ -18,7 +19,9 @@
|
||||||
emulate -L zsh
|
emulate -L zsh
|
||||||
setopt extendedglob
|
setopt extendedglob
|
||||||
|
|
||||||
local pat dir nondir files i
|
local pat dir nondir files i zfrglob
|
||||||
|
|
||||||
|
zstyle -t "$curcontext" remote-glob && zfrglob=1
|
||||||
|
|
||||||
eval pat=\$$1
|
eval pat=\$$1
|
||||||
|
|
||||||
|
@ -52,14 +55,10 @@ else
|
||||||
rm -f $tmpf
|
rm -f $tmpf
|
||||||
else
|
else
|
||||||
# we just have to do an ls and hope that's right
|
# we just have to do an ls and hope that's right
|
||||||
|
local fcache_name
|
||||||
|
zffcache
|
||||||
nondir=$pat
|
nondir=$pat
|
||||||
if (( $#zftp_fcache == 0 )); then
|
files=(${(P)fcache_name})
|
||||||
# Why does `zftp_fcache=($(zftp ls))' sometimes not work?
|
|
||||||
zftp ls >$tmpf
|
|
||||||
zftp_fcache=($(<$tmpf))
|
|
||||||
rm -f $tmpf
|
|
||||||
fi
|
|
||||||
files=($zftp_fcache)
|
|
||||||
fi
|
fi
|
||||||
# now we want to see which of the $files match $nondir:
|
# now we want to see which of the $files match $nondir:
|
||||||
# ${...:/foo} deletes occurrences of foo matching a complete word,
|
# ${...:/foo} deletes occurrences of foo matching a complete word,
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
# function zftp_chpwd {
|
# function zftp_chpwd {
|
||||||
# You may want to alter chpwd to call this when $ZFTP_USER is set.
|
# You may want to alter chpwd to call this when $ZFTP_USER is set.
|
||||||
|
|
||||||
# Cancel the filename cache for the current directory.
|
# If the directory really changed...
|
||||||
zftp_fcache=()
|
if [[ $ZFTP_PWD != $zfconfig[lastdir_$ZFTP_SESSION] ]]; then
|
||||||
# ...and also empty the stored directory listing cache.
|
# ...and also empty the stored directory listing cache.
|
||||||
# As this function is called when we close the connection, this
|
# As this function is called when we close the connection, this
|
||||||
# is the only place we need to do these two things.
|
# is the only place we need to do these two things.
|
||||||
[[ -n $zfcurdir && -f $zfcurdir ]] && rm -f $zfcurdir
|
local curdir=$zfconfig[curdir_$ZFTP_SESSION]
|
||||||
zfotherargs=
|
[[ -n $curdir && -f $curdir ]] && rm -f $curdir
|
||||||
|
zfconfig[otherargs_$ZFTP_SESSION]=
|
||||||
|
zffcache -d
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -z $ZFTP_USER ]]; then
|
if [[ -z $ZFTP_USER ]]; then
|
||||||
# last call, after an FTP logout
|
# last call, after an FTP logout
|
||||||
|
@ -15,23 +18,23 @@ if [[ -z $ZFTP_USER ]]; then
|
||||||
# delete the non-current cached directory
|
# delete the non-current cached directory
|
||||||
[[ -n $zfotherdir && -f $zfotherdir ]] && rm -f $zfotherdir
|
[[ -n $zfotherdir && -f $zfotherdir ]] && rm -f $zfotherdir
|
||||||
|
|
||||||
# don't keep zflastdir between opens (do keep zflastsession)
|
# don't keep lastdir between opens (do keep lastloc)
|
||||||
zflastdir=
|
zfconfig[lastdir_$ZFTP_SESSION]=
|
||||||
|
|
||||||
# return the display to standard
|
# return the display to standard
|
||||||
# uncomment the following line if you have a chpwd which shows directories
|
zstyle -t ":zftp$curcontext" chpwd && chpwd
|
||||||
# chpwd
|
|
||||||
else
|
else
|
||||||
[[ -n $ZFTP_PWD ]] && zflastdir=$ZFTP_PWD
|
[[ -n $ZFTP_PWD ]] && zfconfig[lastdir_$ZFTP_SESSION]=$ZFTP_PWD
|
||||||
zflastsession="$ZFTP_HOST:$ZFTP_PWD"
|
zfconfig[lastloc_$ZFTP_SESSION]="$ZFTP_HOST:$ZFTP_PWD"
|
||||||
|
zfconfig[lastuser_$ZFTP_SESSION]="$ZFTP_USER"
|
||||||
local args
|
local args
|
||||||
if [[ -t 1 && -t 2 ]]; then
|
if [[ -t 1 && -t 2 ]] && zstyle -t ":zftp$curcontext" titlebar; then
|
||||||
local str=$zflastsession
|
local str=$zfconfig[lastloc_$ZFTP_SESSION]
|
||||||
[[ ${#str} -lt 70 ]] && str="%m: %~ $str"
|
[[ ${#str} -lt 70 ]] && str="%m: %~ $str"
|
||||||
case $TERM in
|
case $TERM in
|
||||||
sun-cmd) print -n -P "\033]l$str\033\\"
|
sun-cmd) print -Pn "\033]l$str\033\\"
|
||||||
;;
|
;;
|
||||||
xterm) print -n -P "\033]2;$str\a"
|
*xterm*|rxvt|dtterm|Eterm|kterm) print -Pn "\033]2;$str\a"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
DISTFILES_SRC='
|
DISTFILES_SRC='
|
||||||
.distfiles
|
.distfiles
|
||||||
c2z compctl-examples globtests globtests.ksh lete2ctl
|
bash2zshprompt
|
||||||
|
c2z compctl-examples globtests globtests.ksh
|
||||||
|
job-control-tests lete2ctl make-zsh-urls
|
||||||
'
|
'
|
||||||
|
|
|
@ -10,7 +10,7 @@ use strict;
|
||||||
my @colours = qw/grey red green yellow blue magenta cyan white/;
|
my @colours = qw/grey red green yellow blue magenta cyan white/;
|
||||||
|
|
||||||
my @codes = ();
|
my @codes = ();
|
||||||
my %bold;
|
my %boldp;
|
||||||
my $out = '';
|
my $out = '';
|
||||||
|
|
||||||
print "# Converted to zsh prompt theme by bash2zshprompt, written by <adam\@spiers.net>\n";
|
print "# Converted to zsh prompt theme by bash2zshprompt, written by <adam\@spiers.net>\n";
|
||||||
|
@ -25,7 +25,7 @@ while (<>) {
|
||||||
# UGH
|
# UGH
|
||||||
elsif (! $seen_fn_end && $seen_fn) {
|
elsif (! $seen_fn_end && $seen_fn) {
|
||||||
s/^\s*/ /;
|
s/^\s*/ /;
|
||||||
s/^\s*}\s*$/\n precmd () { }\n preexec () { }\n}\n/ and $seen_fn_end++;
|
s/^\s*}\s*$/\n precmd () { setopt promptsubst }\n preexec () { }\n}\n/ and $seen_fn_end++;
|
||||||
}
|
}
|
||||||
|
|
||||||
s/\\\[/%{/g;
|
s/\\\[/%{/g;
|
||||||
|
@ -44,6 +44,8 @@ while (<>) {
|
||||||
s/(?<!\\)\\#/%!/g; # hmmm
|
s/(?<!\\)\\#/%!/g; # hmmm
|
||||||
s/(?<!\\)\\n/\$prompt_newline/g;
|
s/(?<!\\)\\n/\$prompt_newline/g;
|
||||||
s/(?<!\\)\\s/\$SHELL/g;
|
s/(?<!\\)\\s/\$SHELL/g;
|
||||||
|
s/(?<!\\)\\v/\$ZSH_VERSION[1]/g;
|
||||||
|
s/(?<!\\)\\V/\${ZSH_VERSION%%-*}/g;
|
||||||
s/(?<!\\)\\w/%~/g;
|
s/(?<!\\)\\w/%~/g;
|
||||||
s/(?<!\\)\\W/%1~/g;
|
s/(?<!\\)\\W/%1~/g;
|
||||||
s/(?<!\\)\\\$(?!\()/%\#/g;
|
s/(?<!\\)\\\$(?!\()/%\#/g;
|
||||||
|
@ -78,21 +80,22 @@ sub color {
|
||||||
($p[1] eq '4') ? 'bg' :
|
($p[1] eq '4') ? 'bg' :
|
||||||
'???');
|
'???');
|
||||||
|
|
||||||
$bold{$fgbg} ||= '';
|
$boldp{$fgbg} ||= '';
|
||||||
|
|
||||||
if ($p[0] =~ /^0?0$/) {
|
if ($p[0] =~ /^0?0$/) {
|
||||||
$bold{$fgbg} = '';
|
$boldp{$fgbg} = '';
|
||||||
return '$reset_color';
|
return '$reset_color';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($p[0] =~ /^0?1$/) {
|
if ($p[0] =~ /^0?1$/) {
|
||||||
$bold{$fgbg} = 'bold_';
|
$boldp{$fgbg} = 'bold_';
|
||||||
return '$bold_color';
|
return '$bold_color';
|
||||||
}
|
}
|
||||||
|
|
||||||
return '$' .
|
return '$' .
|
||||||
"${fgbg}_$bold{$fgbg}" .
|
"${fgbg}$boldp{$fgbg}\[" .
|
||||||
$colours[$p[2]];
|
$colours[$p[2]] .
|
||||||
|
']';
|
||||||
}
|
}
|
||||||
|
|
||||||
sub split_codes {
|
sub split_codes {
|
||||||
|
|
10
Misc/c2z
10
Misc/c2z
|
@ -3,6 +3,7 @@
|
||||||
# c2z - environment conversion tool
|
# c2z - environment conversion tool
|
||||||
# Contributed by Bart Schaefer
|
# Contributed by Bart Schaefer
|
||||||
# (Tweaked a bit by Paul Falstad)
|
# (Tweaked a bit by Paul Falstad)
|
||||||
|
# (Tweaked again by Bart Schaefer)
|
||||||
#
|
#
|
||||||
# This is a quick script to convert csh aliases to zsh aliases/functions.
|
# This is a quick script to convert csh aliases to zsh aliases/functions.
|
||||||
# It also converts the csh environment and local variables to zsh. c2z
|
# It also converts the csh environment and local variables to zsh. c2z
|
||||||
|
@ -81,7 +82,13 @@ grep -v ! /tmp/cz$$.1 >/tmp/cz$$.3
|
||||||
sed -e "s/'/'"\\\\"''"/g \
|
sed -e "s/'/'"\\\\"''"/g \
|
||||||
-e 's/^\([^'"$T"']*\)'"$T"'\(.*\)$/alias -- \1='"'\2'/" \
|
-e 's/^\([^'"$T"']*\)'"$T"'\(.*\)$/alias -- \1='"'\2'/" \
|
||||||
/tmp/cz$$.3
|
/tmp/cz$$.3
|
||||||
sed -e 's/![:#]*/$/g' \
|
sed -e 's/>\(&*\)!/>\1|/g' \
|
||||||
|
-e 's/!\*:q/"$@"/g' \
|
||||||
|
-e 's/\(![:#]*[^'"$T"']*\):q/"\1"/g' \
|
||||||
|
-e 's/!\([-0-9][0-9]*\)\(:x\)*/$\2(fc -nl \1)/g' \
|
||||||
|
-e 's/\$:x(fc/$=(fc/g' \
|
||||||
|
-e 's/![:#]*\([^'"$T"']\)/$==\1/g' \
|
||||||
|
-e 's/\$=\(=[^'"$T"']*\):x/$\1/g' \
|
||||||
-e 's/\$cwd/$PWD/' \
|
-e 's/\$cwd/$PWD/' \
|
||||||
-e 's/^\([^'"$T"']*\)'"$T"'\(.*\)$/\1 () { \2 }/' \
|
-e 's/^\([^'"$T"']*\)'"$T"'\(.*\)$/\1 () { \2 }/' \
|
||||||
/tmp/cz$$.2
|
/tmp/cz$$.2
|
||||||
|
@ -92,6 +99,7 @@ exec < /tmp/cz$$.e
|
||||||
# Would be nice to deal with embedded newlines, e.g. in TERMCAP, but ...
|
# Would be nice to deal with embedded newlines, e.g. in TERMCAP, but ...
|
||||||
sed -e '/^SHLVL/d' \
|
sed -e '/^SHLVL/d' \
|
||||||
-e '/^PWD/d' \
|
-e '/^PWD/d' \
|
||||||
|
-e '/^_=/d' \
|
||||||
-e "s/'/'"\\\\"''"/g \
|
-e "s/'/'"\\\\"''"/g \
|
||||||
-e "s/^\([A-Za-z0-9_]*=\)/export \1'/" \
|
-e "s/^\([A-Za-z0-9_]*=\)/export \1'/" \
|
||||||
-e "s/$/'/"
|
-e "s/$/'/"
|
||||||
|
|
|
@ -11,15 +11,15 @@
|
||||||
# page.
|
# page.
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
hosts=("${${(s: :)${(s: :)${${(f)$(</etc/hosts)}%%\#*}#*[ ]*}}:#}")
|
hosts=( ${(s: :)${(ps:\t:)${${(f)"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}} )
|
||||||
ports=( "${${${(f)$(</etc/services)}:#\#*}%%[ ]*}" )
|
ports=( "${(@)${(@)${(@f)$(</etc/services)}:#\#*}%%[ ]*}" )
|
||||||
|
|
||||||
# groups=( $(cut -d: -f1 /etc/group) )
|
# groups=( $(cut -d: -f1 /etc/group) )
|
||||||
# groups=( $(ypcat group.byname | cut -d: -f1) ) # if you use NIS
|
# groups=( $(ypcat group.byname | cut -d: -f1) ) # if you use NIS
|
||||||
|
|
||||||
# It can be done without forking, but it used too much memory in old zsh's:
|
# It can be done without forking, but it used too much memory in old zsh's:
|
||||||
groups=( "${${(f)$(</etc/group)}%%:*}" )
|
groups=( ${${(s: :)$(</etc/group)}%%:*} )
|
||||||
#groups=( "${${(f)$(ypcat groups)}%%:*}" ) # if you use NIS
|
#groups=( ${${(s: :)$(ypcat groups)}%%:*} ) # if you use NIS
|
||||||
|
|
||||||
# Completion for zsh builtins.
|
# Completion for zsh builtins.
|
||||||
compctl -z -P '%' bg
|
compctl -z -P '%' bg
|
||||||
|
@ -251,7 +251,7 @@ compctl -k ftphosts ftp
|
||||||
# Note that 'r[-exec,;]' must come first
|
# Note that 'r[-exec,;]' must come first
|
||||||
if [[ -r /proc/filesystems ]]; then
|
if [[ -r /proc/filesystems ]]; then
|
||||||
# Linux
|
# Linux
|
||||||
filesystems='"${${(f)$(</proc/filesystems)}#* }"'
|
filesystems='"${(@)${(@f)$(</proc/filesystems)}#* }"'
|
||||||
else
|
else
|
||||||
filesystems='ufs 4.2 4.3 nfs tmp mfs S51K S52K'
|
filesystems='ufs 4.2 4.3 nfs tmp mfs S51K S52K'
|
||||||
fi
|
fi
|
||||||
|
@ -563,7 +563,7 @@ cvsprefix() {
|
||||||
cvsentries() {
|
cvsentries() {
|
||||||
setopt localoptions nullglob unset
|
setopt localoptions nullglob unset
|
||||||
if [[ -f ${pref}CVS/Entries ]]; then
|
if [[ -f ${pref}CVS/Entries ]]; then
|
||||||
reply=( "${pref}${^${${${(f@)$(<${pref}CVS/Entries)}:#D*}#/}%%/*}" )
|
reply=( "${pref}${(@)^${(@)${(@)${(f@)$(<${pref}CVS/Entries)}:#D*}#/}%%/*}" )
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -574,7 +574,7 @@ cvstargets() {
|
||||||
}
|
}
|
||||||
|
|
||||||
cvsrevisions() {
|
cvsrevisions() {
|
||||||
reply=( "${${${(M)${(f)$(cvs -q status -vl .)}:# *}##[ ]##}%%[ ]*}" )
|
reply=( "${(@)${(@)${(@M)${(@f)$(cvs -q status -vl .)}:# *}##[ ]##}%%[ ]*}" )
|
||||||
}
|
}
|
||||||
|
|
||||||
cvsrepositories() {
|
cvsrepositories() {
|
||||||
|
@ -582,7 +582,7 @@ cvsrepositories() {
|
||||||
[[ -f CVS/Root ]] && root=$(<CVS/Root)
|
[[ -f CVS/Root ]] && root=$(<CVS/Root)
|
||||||
reply=(
|
reply=(
|
||||||
$root/^CVSROOT(:t)
|
$root/^CVSROOT(:t)
|
||||||
"${${(M)${(f)$(<$root/CVSROOT/modules)}:#[^#]*}%%[ ]*}"
|
"${(@)${(@M)${(@f)$(<$root/CVSROOT/modules)}:#[^#]*}%%[ ]*}"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -622,7 +622,7 @@ compctl -s '$(rpm -qa)' \
|
||||||
'c[-1,--rcfile]' -f - \
|
'c[-1,--rcfile]' -f - \
|
||||||
'p[1] s[-b]' -k '(p l c i b a)' - \
|
'p[1] s[-b]' -k '(p l c i b a)' - \
|
||||||
'c[-1,--queryformat] N[-1,{]' \
|
'c[-1,--queryformat] N[-1,{]' \
|
||||||
-s '"${${(f)$(rpm --querytags)}#RPMTAG_}"' -S '}' - \
|
-s '"${(@)${(@f)$(rpm --querytags)}#RPMTAG_}"' -S '}' - \
|
||||||
'W[1,-q*] C[-1,-([^-]*|)f*]' -f - \
|
'W[1,-q*] C[-1,-([^-]*|)f*]' -f - \
|
||||||
'W[1,-i*], W[1,-q*] C[-1,-([^-]*|)p*]' \
|
'W[1,-i*], W[1,-q*] C[-1,-([^-]*|)p*]' \
|
||||||
-/g '*.rpm' + -f -- rpm
|
-/g '*.rpm' + -f -- rpm
|
||||||
|
@ -635,7 +635,7 @@ compctl -K talkmatch talk ytalk ytalk3
|
||||||
function talkmatch {
|
function talkmatch {
|
||||||
local u
|
local u
|
||||||
reply=($(users))
|
reply=($(users))
|
||||||
for u in "${${(f)$(rwho 2>/dev/null)}%%:*}"; do
|
for u in "${(@)${(@f)$(rwho 2>/dev/null)}%%:*}"; do
|
||||||
reply=($reply ${u%% *}@${u##* })
|
reply=($reply ${u%% *}@${u##* })
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/local/bin/zsh -f
|
#!/usr/local/bin/zsh -f
|
||||||
|
|
||||||
setopt kshglob
|
setopt kshglob extendedglob
|
||||||
|
|
||||||
failed=0
|
failed=0
|
||||||
while read res str pat; do
|
while read res str pat; do
|
||||||
|
@ -68,6 +68,7 @@ t foobar !(foo)*
|
||||||
t moo.cow !(*.*).!(*.*)
|
t moo.cow !(*.*).!(*.*)
|
||||||
f mad.moo.cow !(*.*).!(*.*)
|
f mad.moo.cow !(*.*).!(*.*)
|
||||||
f mucca.pazza mu!(*(c))?.pa!(*(z))?
|
f mucca.pazza mu!(*(c))?.pa!(*(z))?
|
||||||
|
f _foo~ _?(*[^~])
|
||||||
t fff !(f)
|
t fff !(f)
|
||||||
t fff *(!(f))
|
t fff *(!(f))
|
||||||
t fff +(!(f))
|
t fff +(!(f))
|
||||||
|
@ -87,5 +88,15 @@ t zoox @(!(z*)|*x)
|
||||||
t foo *(!(foo))
|
t foo *(!(foo))
|
||||||
f foob !(foo)b*
|
f foob !(foo)b*
|
||||||
t foobb !(foo)b*
|
t foobb !(foo)b*
|
||||||
|
t fooxx (#i)FOOXX
|
||||||
|
f fooxx (#l)FOOXX
|
||||||
|
t FOOXX (#l)fooxx
|
||||||
|
f fooxx (#i)FOO@(#I)X@(#i)X
|
||||||
|
t fooXx (#i)FOO@(#I)X@(#i)X
|
||||||
|
t fooxx @((#i)FOOX)x
|
||||||
|
f fooxx @((#i)FOOX)X
|
||||||
|
f BAR @(bar|(#i)foo)
|
||||||
|
t FOO @(bar|(#i)foo)
|
||||||
|
t Modules (#i)*m*
|
||||||
EOT
|
EOT
|
||||||
print "$failed tests failed."
|
print "$failed tests failed."
|
||||||
|
|
|
@ -29,3 +29,48 @@ while true; do sed -e 's/foo/bar/' Src/builtin.c >/dev/null; done
|
||||||
# ignoring the error messages from sed.
|
# ignoring the error messages from sed.
|
||||||
# ^Z is more of a problem since you have to catch the sed.
|
# ^Z is more of a problem since you have to catch the sed.
|
||||||
while true; do sed -e 's/foo/bar/' non-existent-file >/dev/null; done
|
while true; do sed -e 's/foo/bar/' non-existent-file >/dev/null; done
|
||||||
|
|
||||||
|
# Try
|
||||||
|
# ^Z
|
||||||
|
# fg
|
||||||
|
# ^Z
|
||||||
|
# fg
|
||||||
|
fn() {
|
||||||
|
local a
|
||||||
|
while read a; do :; done
|
||||||
|
less "$@"
|
||||||
|
}
|
||||||
|
cat foo | fn bar
|
||||||
|
|
||||||
|
# Try
|
||||||
|
# ^Z
|
||||||
|
# fg
|
||||||
|
fn() {
|
||||||
|
cat builtin.c
|
||||||
|
}
|
||||||
|
fn | while read a; do :; done
|
||||||
|
|
||||||
|
# Try
|
||||||
|
# ^Z
|
||||||
|
# fg
|
||||||
|
# q
|
||||||
|
# ^Z
|
||||||
|
# fg
|
||||||
|
# q
|
||||||
|
fn() {
|
||||||
|
less builtin.c
|
||||||
|
echo done
|
||||||
|
}
|
||||||
|
x=2; while (( x-- )); do f; done
|
||||||
|
|
||||||
|
# Try
|
||||||
|
# ^C
|
||||||
|
# This won't work because zcat doesn't tell us that it received a signal.
|
||||||
|
# But
|
||||||
|
# ^Z
|
||||||
|
# fg
|
||||||
|
# ^C (probably a second ^C is needed: if the continued zcat is still running)
|
||||||
|
# works.
|
||||||
|
# (See also the file Etc/BUGS)
|
||||||
|
while true; do zcat foo.gz > /dev/null; done
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
# Runs as a filter. Should ignore anything which isn't a "complete".
|
# Runs as a filter. Should ignore anything which isn't a "complete".
|
||||||
# It expects each "complete" statement to be the first thing on a line.
|
# It expects each "complete" statement to be the first thing on a line.
|
||||||
# All the examples in the tcsh manual give sensible results.
|
# All the examples in the tcsh manual give sensible results.
|
||||||
|
# Author: Peter Stephenson <pws@ibmth.df.unipi.it>
|
||||||
#
|
#
|
||||||
# Option:
|
# Option:
|
||||||
# -x (exact): only applies in the case of command disambiguation (is
|
# -x (exact): only applies in the case of command disambiguation (is
|
||||||
|
@ -38,6 +39,11 @@
|
||||||
# (5) Make sure all command names with wildcards are processed together --
|
# (5) Make sure all command names with wildcards are processed together --
|
||||||
# they need to be lumped into one "compctl -C" or "compctl -D"
|
# they need to be lumped into one "compctl -C" or "compctl -D"
|
||||||
# statement for zsh.
|
# statement for zsh.
|
||||||
|
# (6) Group completion (complete's g flag) is not built into zsh, so
|
||||||
|
# you need perl to be available to generate the groups. If this
|
||||||
|
# script is useful, I assume that's not a problem.
|
||||||
|
# (7) I don't know what `completing completions' means, so the X
|
||||||
|
# flag to complete is not handled.
|
||||||
|
|
||||||
# Handle options
|
# Handle options
|
||||||
if (@ARGV) {
|
if (@ARGV) {
|
||||||
|
@ -113,6 +119,13 @@ sub gettype {
|
||||||
# Nothing (n) can be handled by returning nothing. (C.f. King Lear, I.i.)
|
# Nothing (n) can be handled by returning nothing. (C.f. King Lear, I.i.)
|
||||||
if ($c =~ /[abcjuv]/) {
|
if ($c =~ /[abcjuv]/) {
|
||||||
$ret = "-$c";
|
$ret = "-$c";
|
||||||
|
} elsif ($c eq 'C') {
|
||||||
|
if (defined($glob)) {
|
||||||
|
$ret = "-W $glob -/g '*(.*)'";
|
||||||
|
undef($glob);
|
||||||
|
} else {
|
||||||
|
$ret = '-c';
|
||||||
|
}
|
||||||
} elsif ($c eq 'S') {
|
} elsif ($c eq 'S') {
|
||||||
$ret = '-k signals';
|
$ret = '-k signals';
|
||||||
} elsif ($c eq 'd') {
|
} elsif ($c eq 'd') {
|
||||||
|
@ -121,18 +134,42 @@ sub gettype {
|
||||||
} else {
|
} else {
|
||||||
$ret = '-/';
|
$ret = '-/';
|
||||||
}
|
}
|
||||||
|
} elsif ($c eq 'D') {
|
||||||
|
if (defined($glob)) {
|
||||||
|
$ret = "-W $glob -/";
|
||||||
|
undef($glob);
|
||||||
|
} else {
|
||||||
|
$ret = '-/';
|
||||||
|
}
|
||||||
} elsif ($c eq 'e') {
|
} elsif ($c eq 'e') {
|
||||||
$ret = '-E';
|
$ret = '-E';
|
||||||
} elsif ($c eq 'f' && !$glob) {
|
} elsif ($c eq 'f' && !$glob) {
|
||||||
$ret = '-f';
|
$ret = '-f';
|
||||||
|
} elsif ($c eq 'F') {
|
||||||
|
if (defined($glob)) {
|
||||||
|
$ret = "-W $glob -f";
|
||||||
|
undef($glob);
|
||||||
|
} else {
|
||||||
|
$ret = '-f';
|
||||||
|
}
|
||||||
|
} elsif ($c eq 'g') {
|
||||||
|
$ret = "-s '\$(perl -e '\\''while ((\$name) = getgrent)\n" .
|
||||||
|
"{ print \$name, \"\\n\"; }'\\'')'";
|
||||||
} elsif ($c eq 'l') {
|
} elsif ($c eq 'l') {
|
||||||
$ret = q!-k "(`limit | awk '{print $1}'`)"!;
|
$ret = q!-k "(`limit | awk '{print $1}'`)"!;
|
||||||
} elsif ($c eq 'p') {
|
} elsif ($c eq 'p') {
|
||||||
$ret = "-W $glob -f", undef($glob) if defined($glob);
|
$ret = "-W $glob -f", undef($glob) if defined($glob);
|
||||||
} elsif ($c eq 's') {
|
} elsif ($c eq 's') {
|
||||||
$ret = '-p';
|
$ret = '-p';
|
||||||
} elsif ($c eq 't') {
|
} elsif ($c eq 't') {
|
||||||
$qual = '.';
|
$qual = '.';
|
||||||
|
} elsif ($c eq 'T') {
|
||||||
|
if (defined($glob)) {
|
||||||
|
$ret = "-W $glob -g '*(.)'";
|
||||||
|
undef($glob);
|
||||||
|
} else {
|
||||||
|
$ret = "-g '*(.)'";
|
||||||
|
}
|
||||||
} elsif ($c eq 'x') {
|
} elsif ($c eq 'x') {
|
||||||
$glob =~ s/'/'\\''/g;
|
$glob =~ s/'/'\\''/g;
|
||||||
$ret = "-X '$glob'";
|
$ret = "-X '$glob'";
|
||||||
|
@ -190,7 +227,7 @@ $" = " - ";
|
||||||
|
|
||||||
while (<>) {
|
while (<>) {
|
||||||
if (/^\s*complete\s/) {
|
if (/^\s*complete\s/) {
|
||||||
undef(@stuff);
|
undef(@stuff);
|
||||||
$default = '';
|
$default = '';
|
||||||
$_ = $';
|
$_ = $';
|
||||||
while (/\\$/) {
|
while (/\\$/) {
|
||||||
|
@ -211,7 +248,7 @@ while (<>) {
|
||||||
# Loop over remaining arguments to "complete".
|
# Loop over remaining arguments to "complete".
|
||||||
$sep = substr($word,1,1);
|
$sep = substr($word,1,1);
|
||||||
$sep =~ s/(\W)/\\$1/g;
|
$sep =~ s/(\W)/\\$1/g;
|
||||||
@split = split(/$sep/,$word);
|
@split = split(/$sep/,$word,4);
|
||||||
for ($i = 0; $i < 3; $i++) {
|
for ($i = 0; $i < 3; $i++) {
|
||||||
while ($split[$i] =~ /\\$/) {
|
while ($split[$i] =~ /\\$/) {
|
||||||
substr($split[$i],-1,1) = "";
|
substr($split[$i],-1,1) = "";
|
||||||
|
@ -225,7 +262,9 @@ while (<>) {
|
||||||
# The "complete" catch-all: treat this as compctl\'s
|
# The "complete" catch-all: treat this as compctl\'s
|
||||||
# default (requiring no pattern matching).
|
# default (requiring no pattern matching).
|
||||||
$default .= &gettype($type) . ' ';
|
$default .= &gettype($type) . ' ';
|
||||||
defined($suffix) && ($defsuf .= $suffix);
|
defined($suffix) &&
|
||||||
|
(defined($defsuf) ? ($defsuf .= $suffix)
|
||||||
|
: ($defsuf = $suffix));
|
||||||
} else {
|
} else {
|
||||||
$pat = &getpat($pat,$arg);
|
$pat = &getpat($pat,$arg);
|
||||||
$type = &gettype($type);
|
$type = &gettype($type);
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
DISTFILES_SRC='
|
DISTFILES_SRC='
|
||||||
.cvsignore .distfiles .exrc
|
.cvsignore .distfiles .exrc
|
||||||
comp1.mdd comp.h comp1.c
|
comp.h complete.mdd complete.c
|
||||||
compctl.mdd compctl.c
|
compcore.c compmatch.c compresult.c
|
||||||
|
compctl.mdd compctl.c compctl.h
|
||||||
|
complist.mdd complist.c
|
||||||
|
computil.mdd computil.c
|
||||||
deltochar.mdd deltochar.c
|
deltochar.mdd deltochar.c
|
||||||
|
zleparameter.mdd zleparameter.c
|
||||||
zle.mdd iwidgets.list zle.h zle_bindings.c zle_hist.c
|
zle.mdd iwidgets.list zle.h zle_bindings.c zle_hist.c
|
||||||
zle_keymap.c zle_main.c zle_misc.c zle_move.c zle_params.c
|
zle_keymap.c zle_main.c zle_misc.c zle_move.c zle_params.c
|
||||||
zle_refresh.c zle_things.sed zle_thingy.c zle_tricky.c
|
zle_refresh.c zle_things.sed zle_thingy.c zle_tricky.c
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
find . \( -name '*.*' -prune \) -o \( -name .preconfig -print \) | (
|
find . -name '?*.*' -prune -o -name .preconfig -print | (
|
||||||
while read pre; do
|
while read pre; do
|
||||||
cmd=`echo $pre | sed 's,^,cd ,;s,/\([^/]*\)$, \&\& ./\1,'`
|
cmd=`echo $pre | sed 's,^,cd ,;s,/\([^/]*\)$, \&\& ./\1,'`
|
||||||
echo >&2 "$cmd"
|
echo >&2 "$cmd"
|
||||||
|
|
Loading…
Reference in a new issue