mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-12-28 04:05:12 +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>
|
||||
|
||||
* 23645: Functions/Zftp/zfautocheck: use == instead of =.
|
||||
|
|
|
@ -1,107 +1,3 @@
|
|||
The subdirectories contain code for the new function-based completion
|
||||
system. Broadly speaking, this uses shell functions defined for each
|
||||
command to determine how the arguments of a command should be completed.
|
||||
|
||||
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.
|
||||
The subdirectories contain code for a shell-based system of command-line
|
||||
completion. This is considerably more powerful than the old `compctl'
|
||||
method. For details, see the compsys(1) manual page (`man zshcompsys').
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
texinode(The cap Module)(The clone Module)()(Zsh Modules)
|
||||
sect(The cap Module)
|
||||
The tt(cap) module is used for manipulating POSIX.1e (POSIX.6) capability
|
||||
COMMENT(!MOD!zsh/cap
|
||||
Builtins for manipulating POSIX.1e (POSIX.6) capability (privilege) sets.
|
||||
!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
|
||||
builtins defined by this module will do nothing.
|
||||
The builtins in this module are:
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
texinode(The complete Module)(The compctl Module)(The clone Module)(Zsh Modules)
|
||||
sect(The complete Module)
|
||||
The tt(compctl) module makes available several builtin commands which
|
||||
COMMENT(!MOD!zsh/complete
|
||||
The basic completion code.
|
||||
!MOD!)
|
||||
The tt(zsh/complete) module makes available several builtin commands which
|
||||
can be used in user-defined completion widgets, see
|
||||
ifzman(zmanref(zshcompwid))\
|
||||
ifnzman(noderef(Completion Widgets))\
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
texinode(The example Module)(The files Module)(The deltochar Module)(Zsh Modules)
|
||||
sect(The example Module)
|
||||
The tt(example) module makes available one builtin command:
|
||||
COMMENT(!MOD!zsh/example
|
||||
An example of how to write a module.
|
||||
!MOD!)
|
||||
The tt(zsh/example) module makes available one builtin command:
|
||||
|
||||
startitem()
|
||||
findex(example)
|
||||
|
|
|
@ -1,9 +1,52 @@
|
|||
texinode(The files Module)(The sched Module)(The example Module)(Zsh Modules)
|
||||
sect(The files Module)
|
||||
COMMENT(!MOD!zsh/files
|
||||
Some basic file manipulation commands as builtins.
|
||||
!MOD!)
|
||||
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()
|
||||
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)
|
||||
xitem(tt(ln) [ tt(-dfis) ] var(filename) var(dest))
|
||||
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)
|
||||
sect(The mapfile Module)
|
||||
COMMENT(!MOD!zsh/mapfile
|
||||
Access to external files via a special associative array.
|
||||
!MOD!)
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
accessed (possibly multiple times, due to standard parameter subsitution
|
||||
operations).
|
||||
accessed (possibly multiple times, due to standard parameter substitution
|
||||
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
|
||||
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.
|
||||
|
||||
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)
|
||||
sect(The zleparameter Module)
|
||||
COMMENT(!MOD!zsh/zleparameter
|
||||
Access to internals of the Zsh Line Editor via parameters.
|
||||
!MOD!)
|
||||
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
|
||||
ifzman(zmanref(zshzle))\
|
||||
ifnzman(noderef(Zsh Line Editor))\
|
||||
).
|
||||
|
||||
startitem()
|
||||
vindex(zlekeymaps)
|
||||
item(tt(zlekeymaps))(
|
||||
vindex(keymaps)
|
||||
item(tt(keymaps))(
|
||||
This array contains the names of the keymaps currently defined.
|
||||
)
|
||||
vindex(zlewidgets)
|
||||
item(tt(zlewidgets))(
|
||||
vindex(widgets)
|
||||
item(tt(widgets))(
|
||||
This associative array contains one entry per widget defined. The name
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = ..
|
||||
SUBDIRS =
|
||||
|
||||
@@version.mk@@
|
||||
@@defs.mk@@
|
||||
@VERSION_MK@
|
||||
|
||||
# source/build directories
|
||||
VPATH = @srcdir@
|
||||
sdir = @srcdir@
|
||||
sdir_top = @top_srcdir@
|
||||
INSTALL = @INSTALL@
|
||||
|
||||
@DEFS_MK@
|
||||
|
||||
# ========== DEPENDENCIES FOR BUILDING ==========
|
||||
|
||||
|
@ -43,7 +50,7 @@ FAQ.html: FAQ.yo
|
|||
|
||||
# ========== DEPENDENCIES FOR CLEANUP ==========
|
||||
|
||||
@@clean.mk@@
|
||||
@CLEAN_MK@
|
||||
|
||||
mostlyclean-here:
|
||||
rm -f FAQ.html
|
||||
|
@ -56,4 +63,4 @@ realclean-here:
|
|||
|
||||
# ========== DEPENDENCIES FOR MAINTENANCE ==========
|
||||
|
||||
@@config.mk@@
|
||||
@CONFIG_MK@
|
||||
|
|
|
@ -1,7 +1,30 @@
|
|||
# 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 () {
|
||||
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%}"
|
||||
|
||||
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~")
|
||||
prompt_length=${#base_prompt_etc}
|
||||
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
|
||||
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
|
||||
PS1="$base_prompt$path_prompt %# $post_prompt"
|
||||
PS2="$base_prompt$path_prompt %_> $post_prompt"
|
||||
|
|
|
@ -6,6 +6,7 @@ prompt_redhat_setup () {
|
|||
PS1="[%n@%m %1~]\\$ "
|
||||
PS2="> "
|
||||
|
||||
prompt_opts=( cr percent )
|
||||
precmd () { }
|
||||
preexec () { }
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ prompt_suse_setup () {
|
|||
PS1="%n@%m:%~/ > "
|
||||
PS2="> "
|
||||
|
||||
prompt_opts=( cr percent )
|
||||
precmd () { }
|
||||
preexec () { }
|
||||
}
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
# stick with a single directory. This is the default.
|
||||
# (2) Use remote globbing, i.e. pass it to ls at the site.
|
||||
# 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
|
||||
# pattern to be globbed. We set this back to an array containing
|
||||
|
@ -18,7 +19,9 @@
|
|||
emulate -L zsh
|
||||
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
|
||||
|
||||
|
@ -52,14 +55,10 @@ else
|
|||
rm -f $tmpf
|
||||
else
|
||||
# we just have to do an ls and hope that's right
|
||||
local fcache_name
|
||||
zffcache
|
||||
nondir=$pat
|
||||
if (( $#zftp_fcache == 0 )); then
|
||||
# Why does `zftp_fcache=($(zftp ls))' sometimes not work?
|
||||
zftp ls >$tmpf
|
||||
zftp_fcache=($(<$tmpf))
|
||||
rm -f $tmpf
|
||||
fi
|
||||
files=($zftp_fcache)
|
||||
files=(${(P)fcache_name})
|
||||
fi
|
||||
# now we want to see which of the $files match $nondir:
|
||||
# ${...:/foo} deletes occurrences of foo matching a complete word,
|
||||
|
|
|
@ -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 != $zfconfig[lastdir_$ZFTP_SESSION] ]]; then
|
||||
# ...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.
|
||||
local curdir=$zfconfig[curdir_$ZFTP_SESSION]
|
||||
[[ -n $curdir && -f $curdir ]] && rm -f $curdir
|
||||
zfconfig[otherargs_$ZFTP_SESSION]=
|
||||
zffcache -d
|
||||
fi
|
||||
|
||||
if [[ -z $ZFTP_USER ]]; then
|
||||
# last call, after an FTP logout
|
||||
|
@ -15,23 +18,23 @@ if [[ -z $ZFTP_USER ]]; then
|
|||
# delete the non-current cached directory
|
||||
[[ -n $zfotherdir && -f $zfotherdir ]] && rm -f $zfotherdir
|
||||
|
||||
# don't keep zflastdir between opens (do keep zflastsession)
|
||||
zflastdir=
|
||||
# don't keep lastdir between opens (do keep lastloc)
|
||||
zfconfig[lastdir_$ZFTP_SESSION]=
|
||||
|
||||
# return the display to standard
|
||||
# uncomment the following line if you have a chpwd which shows directories
|
||||
# chpwd
|
||||
zstyle -t ":zftp$curcontext" chpwd && chpwd
|
||||
else
|
||||
[[ -n $ZFTP_PWD ]] && zflastdir=$ZFTP_PWD
|
||||
zflastsession="$ZFTP_HOST:$ZFTP_PWD"
|
||||
[[ -n $ZFTP_PWD ]] && zfconfig[lastdir_$ZFTP_SESSION]=$ZFTP_PWD
|
||||
zfconfig[lastloc_$ZFTP_SESSION]="$ZFTP_HOST:$ZFTP_PWD"
|
||||
zfconfig[lastuser_$ZFTP_SESSION]="$ZFTP_USER"
|
||||
local args
|
||||
if [[ -t 1 && -t 2 ]]; then
|
||||
local str=$zflastsession
|
||||
if [[ -t 1 && -t 2 ]] && zstyle -t ":zftp$curcontext" titlebar; then
|
||||
local str=$zfconfig[lastloc_$ZFTP_SESSION]
|
||||
[[ ${#str} -lt 70 ]] && str="%m: %~ $str"
|
||||
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
|
||||
fi
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
DISTFILES_SRC='
|
||||
.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 @codes = ();
|
||||
my %bold;
|
||||
my %boldp;
|
||||
my $out = '';
|
||||
|
||||
print "# Converted to zsh prompt theme by bash2zshprompt, written by <adam\@spiers.net>\n";
|
||||
|
@ -25,7 +25,7 @@ while (<>) {
|
|||
# UGH
|
||||
elsif (! $seen_fn_end && $seen_fn) {
|
||||
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;
|
||||
|
@ -44,6 +44,8 @@ while (<>) {
|
|||
s/(?<!\\)\\#/%!/g; # hmmm
|
||||
s/(?<!\\)\\n/\$prompt_newline/g;
|
||||
s/(?<!\\)\\s/\$SHELL/g;
|
||||
s/(?<!\\)\\v/\$ZSH_VERSION[1]/g;
|
||||
s/(?<!\\)\\V/\${ZSH_VERSION%%-*}/g;
|
||||
s/(?<!\\)\\w/%~/g;
|
||||
s/(?<!\\)\\W/%1~/g;
|
||||
s/(?<!\\)\\\$(?!\()/%\#/g;
|
||||
|
@ -78,21 +80,22 @@ sub color {
|
|||
($p[1] eq '4') ? 'bg' :
|
||||
'???');
|
||||
|
||||
$bold{$fgbg} ||= '';
|
||||
$boldp{$fgbg} ||= '';
|
||||
|
||||
if ($p[0] =~ /^0?0$/) {
|
||||
$bold{$fgbg} = '';
|
||||
$boldp{$fgbg} = '';
|
||||
return '$reset_color';
|
||||
}
|
||||
|
||||
if ($p[0] =~ /^0?1$/) {
|
||||
$bold{$fgbg} = 'bold_';
|
||||
$boldp{$fgbg} = 'bold_';
|
||||
return '$bold_color';
|
||||
}
|
||||
|
||||
return '$' .
|
||||
"${fgbg}_$bold{$fgbg}" .
|
||||
$colours[$p[2]];
|
||||
"${fgbg}$boldp{$fgbg}\[" .
|
||||
$colours[$p[2]] .
|
||||
']';
|
||||
}
|
||||
|
||||
sub split_codes {
|
||||
|
|
10
Misc/c2z
10
Misc/c2z
|
@ -3,6 +3,7 @@
|
|||
# c2z - environment conversion tool
|
||||
# Contributed by Bart Schaefer
|
||||
# (Tweaked a bit by Paul Falstad)
|
||||
# (Tweaked again by Bart Schaefer)
|
||||
#
|
||||
# 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
|
||||
|
@ -81,7 +82,13 @@ grep -v ! /tmp/cz$$.1 >/tmp/cz$$.3
|
|||
sed -e "s/'/'"\\\\"''"/g \
|
||||
-e 's/^\([^'"$T"']*\)'"$T"'\(.*\)$/alias -- \1='"'\2'/" \
|
||||
/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/^\([^'"$T"']*\)'"$T"'\(.*\)$/\1 () { \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 ...
|
||||
sed -e '/^SHLVL/d' \
|
||||
-e '/^PWD/d' \
|
||||
-e '/^_=/d' \
|
||||
-e "s/'/'"\\\\"''"/g \
|
||||
-e "s/^\([A-Za-z0-9_]*=\)/export \1'/" \
|
||||
-e "s/$/'/"
|
||||
|
|
|
@ -11,15 +11,15 @@
|
|||
# page.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
hosts=("${${(s: :)${(s: :)${${(f)$(</etc/hosts)}%%\#*}#*[ ]*}}:#}")
|
||||
ports=( "${${${(f)$(</etc/services)}:#\#*}%%[ ]*}" )
|
||||
hosts=( ${(s: :)${(ps:\t:)${${(f)"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}} )
|
||||
ports=( "${(@)${(@)${(@f)$(</etc/services)}:#\#*}%%[ ]*}" )
|
||||
|
||||
# groups=( $(cut -d: -f1 /etc/group) )
|
||||
# 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:
|
||||
groups=( "${${(f)$(</etc/group)}%%:*}" )
|
||||
#groups=( "${${(f)$(ypcat groups)}%%:*}" ) # if you use NIS
|
||||
groups=( ${${(s: :)$(</etc/group)}%%:*} )
|
||||
#groups=( ${${(s: :)$(ypcat groups)}%%:*} ) # if you use NIS
|
||||
|
||||
# Completion for zsh builtins.
|
||||
compctl -z -P '%' bg
|
||||
|
@ -251,7 +251,7 @@ compctl -k ftphosts ftp
|
|||
# Note that 'r[-exec,;]' must come first
|
||||
if [[ -r /proc/filesystems ]]; then
|
||||
# Linux
|
||||
filesystems='"${${(f)$(</proc/filesystems)}#* }"'
|
||||
filesystems='"${(@)${(@f)$(</proc/filesystems)}#* }"'
|
||||
else
|
||||
filesystems='ufs 4.2 4.3 nfs tmp mfs S51K S52K'
|
||||
fi
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -574,7 +574,7 @@ cvstargets() {
|
|||
}
|
||||
|
||||
cvsrevisions() {
|
||||
reply=( "${${${(M)${(f)$(cvs -q status -vl .)}:# *}##[ ]##}%%[ ]*}" )
|
||||
reply=( "${(@)${(@)${(@M)${(@f)$(cvs -q status -vl .)}:# *}##[ ]##}%%[ ]*}" )
|
||||
}
|
||||
|
||||
cvsrepositories() {
|
||||
|
@ -582,7 +582,7 @@ cvsrepositories() {
|
|||
[[ -f CVS/Root ]] && root=$(<CVS/Root)
|
||||
reply=(
|
||||
$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 - \
|
||||
'p[1] s[-b]' -k '(p l c i b a)' - \
|
||||
'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,-i*], W[1,-q*] C[-1,-([^-]*|)p*]' \
|
||||
-/g '*.rpm' + -f -- rpm
|
||||
|
@ -635,7 +635,7 @@ compctl -K talkmatch talk ytalk ytalk3
|
|||
function talkmatch {
|
||||
local u
|
||||
reply=($(users))
|
||||
for u in "${${(f)$(rwho 2>/dev/null)}%%:*}"; do
|
||||
for u in "${(@)${(@f)$(rwho 2>/dev/null)}%%:*}"; do
|
||||
reply=($reply ${u%% *}@${u##* })
|
||||
done
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/local/bin/zsh -f
|
||||
|
||||
setopt kshglob
|
||||
setopt kshglob extendedglob
|
||||
|
||||
failed=0
|
||||
while read res str pat; do
|
||||
|
@ -68,6 +68,7 @@ t foobar !(foo)*
|
|||
t moo.cow !(*.*).!(*.*)
|
||||
f mad.moo.cow !(*.*).!(*.*)
|
||||
f mucca.pazza mu!(*(c))?.pa!(*(z))?
|
||||
f _foo~ _?(*[^~])
|
||||
t fff !(f)
|
||||
t fff *(!(f))
|
||||
t fff +(!(f))
|
||||
|
@ -87,5 +88,15 @@ t zoox @(!(z*)|*x)
|
|||
t foo *(!(foo))
|
||||
f foob !(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
|
||||
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.
|
||||
# ^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
|
||||
|
||||
# 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".
|
||||
# It expects each "complete" statement to be the first thing on a line.
|
||||
# All the examples in the tcsh manual give sensible results.
|
||||
# Author: Peter Stephenson <pws@ibmth.df.unipi.it>
|
||||
#
|
||||
# Option:
|
||||
# -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 --
|
||||
# they need to be lumped into one "compctl -C" or "compctl -D"
|
||||
# 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
|
||||
if (@ARGV) {
|
||||
|
@ -113,6 +119,13 @@ sub gettype {
|
|||
# Nothing (n) can be handled by returning nothing. (C.f. King Lear, I.i.)
|
||||
if ($c =~ /[abcjuv]/) {
|
||||
$ret = "-$c";
|
||||
} elsif ($c eq 'C') {
|
||||
if (defined($glob)) {
|
||||
$ret = "-W $glob -/g '*(.*)'";
|
||||
undef($glob);
|
||||
} else {
|
||||
$ret = '-c';
|
||||
}
|
||||
} elsif ($c eq 'S') {
|
||||
$ret = '-k signals';
|
||||
} elsif ($c eq 'd') {
|
||||
|
@ -121,18 +134,42 @@ sub gettype {
|
|||
} else {
|
||||
$ret = '-/';
|
||||
}
|
||||
} elsif ($c eq 'D') {
|
||||
if (defined($glob)) {
|
||||
$ret = "-W $glob -/";
|
||||
undef($glob);
|
||||
} else {
|
||||
$ret = '-/';
|
||||
}
|
||||
} elsif ($c eq 'e') {
|
||||
$ret = '-E';
|
||||
} elsif ($c eq 'f' && !$glob) {
|
||||
$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') {
|
||||
$ret = q!-k "(`limit | awk '{print $1}'`)"!;
|
||||
} 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') {
|
||||
$ret = '-p';
|
||||
$ret = '-p';
|
||||
} elsif ($c eq 't') {
|
||||
$qual = '.';
|
||||
} elsif ($c eq 'T') {
|
||||
if (defined($glob)) {
|
||||
$ret = "-W $glob -g '*(.)'";
|
||||
undef($glob);
|
||||
} else {
|
||||
$ret = "-g '*(.)'";
|
||||
}
|
||||
} elsif ($c eq 'x') {
|
||||
$glob =~ s/'/'\\''/g;
|
||||
$ret = "-X '$glob'";
|
||||
|
@ -190,7 +227,7 @@ $" = " - ";
|
|||
|
||||
while (<>) {
|
||||
if (/^\s*complete\s/) {
|
||||
undef(@stuff);
|
||||
undef(@stuff);
|
||||
$default = '';
|
||||
$_ = $';
|
||||
while (/\\$/) {
|
||||
|
@ -211,7 +248,7 @@ while (<>) {
|
|||
# Loop over remaining arguments to "complete".
|
||||
$sep = substr($word,1,1);
|
||||
$sep =~ s/(\W)/\\$1/g;
|
||||
@split = split(/$sep/,$word);
|
||||
@split = split(/$sep/,$word,4);
|
||||
for ($i = 0; $i < 3; $i++) {
|
||||
while ($split[$i] =~ /\\$/) {
|
||||
substr($split[$i],-1,1) = "";
|
||||
|
@ -225,7 +262,9 @@ while (<>) {
|
|||
# The "complete" catch-all: treat this as compctl\'s
|
||||
# default (requiring no pattern matching).
|
||||
$default .= &gettype($type) . ' ';
|
||||
defined($suffix) && ($defsuf .= $suffix);
|
||||
defined($suffix) &&
|
||||
(defined($defsuf) ? ($defsuf .= $suffix)
|
||||
: ($defsuf = $suffix));
|
||||
} else {
|
||||
$pat = &getpat($pat,$arg);
|
||||
$type = &gettype($type);
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
DISTFILES_SRC='
|
||||
.cvsignore .distfiles .exrc
|
||||
comp1.mdd comp.h comp1.c
|
||||
compctl.mdd compctl.c
|
||||
comp.h complete.mdd complete.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
|
||||
zleparameter.mdd zleparameter.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_refresh.c zle_things.sed zle_thingy.c zle_tricky.c
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#! /bin/sh
|
||||
|
||||
find . \( -name '*.*' -prune \) -o \( -name .preconfig -print \) | (
|
||||
find . -name '?*.*' -prune -o -name .preconfig -print | (
|
||||
while read pre; do
|
||||
cmd=`echo $pre | sed 's,^,cd ,;s,/\([^/]*\)$, \&\& ./\1,'`
|
||||
echo >&2 "$cmd"
|
||||
|
|
Loading…
Reference in a new issue