mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-01 05:16:05 +01:00
23518: MIME styles find-file-in-path and file-path.
This commit is contained in:
parent
023f6ce4e1
commit
1fbe843687
3 changed files with 59 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
2007-06-04 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 23518: Doc/Zsh/contrib.yo, Functions/MIME/zsh-mime-handler:
|
||||
add find-file-in-path and file-path styles to MIME system.
|
||||
|
||||
2007-06-03 Peter Stephenson <p.w.stephenson@ntlworld.com>
|
||||
|
||||
* 23511: Src/exec.c, Src/lex.c: error if here document
|
||||
|
|
|
@ -1510,12 +1510,14 @@ It is recommended that a trailing tt(*) (suitably quoted) be appended
|
|||
to style patterns in case the system is extended in future. Some
|
||||
examples are given below.
|
||||
startitem()
|
||||
kindex(current-shell, MIME style)
|
||||
item(tt(current-shell))(
|
||||
If this boolean style is true, the mailcap handler for the context in
|
||||
question is run using the tt(eval) builtin instead of by starting a new
|
||||
tt(sh) process. This is more efficient, but may not work in the occasional
|
||||
cases where the mailcap handler uses strict POSIX syntax.
|
||||
)
|
||||
kindex(execute-as-is, MIME style)
|
||||
item(tt(execute-as-is))(
|
||||
This style gives a list of patterns to be matched against files
|
||||
passed for execution with a handler program. If the file matches
|
||||
|
@ -1527,10 +1529,36 @@ hence executable files are executed directly and not passed to a
|
|||
handler, and the option tt(AUTO_CD) may be used to change to directories
|
||||
that happen to have MIME suffixes.
|
||||
)
|
||||
kindex(file-path, MIME style)
|
||||
item(tt(file-path))(
|
||||
Used if the style tt(find-file-in-path) is true for the same context.
|
||||
Set to an array of directories that are used for searching for the
|
||||
file to be handled; the default is the command path given by the
|
||||
special parameter tt(path). The shell option tt(PATH_DIRS) is respected;
|
||||
if that is set, the appropriate path will be searched even if the
|
||||
name of the file to be handled as it appears on the command line contains
|
||||
a `tt(/)'.
|
||||
The full context is tt(:mime:.)var(suffix)tt(:), as described for the style
|
||||
tt(handler).
|
||||
)
|
||||
kindex(find-file-in-path, MIME style)
|
||||
item(tt(find-file-in-path))(
|
||||
If set, allows files whose names do not contain absolute paths
|
||||
to be searched for in the command path or the path specified by the
|
||||
tt(file-path) style. If the file is not found in the path, it is looked
|
||||
for locally (whether or not the current directory is in the path); if it is
|
||||
not found locally, the handler will abort unless the tt(handle-nonexistent)
|
||||
style is set. Files found in the path are tested as described for
|
||||
the style tt(execute-as-is).
|
||||
The full context is tt(:mime:.)var(suffix)tt(:), as described for the style
|
||||
tt(handler).
|
||||
)
|
||||
kindex(flags, MIME style)
|
||||
item(tt(flags))(
|
||||
Defines flags to go with a handler; the context is as for the
|
||||
tt(handler) style, and the format is as for the flags in tt(mailcap).
|
||||
)
|
||||
kindex(handle-nonexistent, MIME style)
|
||||
item(tt(handle-nonexistent))(
|
||||
By default, arguments that don't correspond to files are not passed
|
||||
to the MIME handler in order to prevent it from intercepting commands found
|
||||
|
@ -1539,7 +1567,10 @@ an array of extended glob patterns for arguments that will be passed to the
|
|||
handler even if they don't exist. If it is not explicitly set it
|
||||
defaults to tt([[:alpha:]]#:/*) which allows URLs to be passed to the MIME
|
||||
handler even though they don't exist in that format in the file system.
|
||||
The full context is tt(:mime:.)var(suffix)tt(:), as described for the style
|
||||
tt(handler).
|
||||
)
|
||||
kindex(handler, MIME style)
|
||||
item(tt(handler))(
|
||||
Specifies a handler for a suffix; the suffix is given by the context as
|
||||
tt(:mime:.)var(suffix)tt(:), and the format of the handler is exactly
|
||||
|
@ -1550,12 +1581,14 @@ the tt(flags) style should be set to include the word tt(needsterminal),
|
|||
or if the output is to be displayed through a pager (but not if the
|
||||
handler is itself a pager), it should include tt(copiousoutput).
|
||||
)
|
||||
kindex(mailcap, MIME style)
|
||||
item(tt(mailcap))(
|
||||
A list of files in the format of tt(~/.mailcap) and
|
||||
tt(/etc/mailcap) to be read during setup, replacing the default list
|
||||
which consists of those two files. The context is tt(:mime:).
|
||||
A tt(PLUS()) in the list will be replaced by the default files.
|
||||
)
|
||||
kindex(mailcap-priorities, MIME style)
|
||||
item(tt(mailcap-priorities))(
|
||||
This style is used to resolve multiple mailcap entries for the same MIME
|
||||
type. It consists of an array of the following elements, in descending
|
||||
|
@ -1585,6 +1618,7 @@ enditem()
|
|||
Note that as this style is handled during initialisation, the context
|
||||
is always tt(:mime:), with no discrimination by suffix.
|
||||
)
|
||||
kindex(mailcap-prio-flags, MIME style)
|
||||
item(tt(mailcap-prio-flags))(
|
||||
This style is used when the keyword tt(flags) is encountered in the
|
||||
list of tests specified by the tt(mailcap-priorities) style.
|
||||
|
@ -1594,18 +1628,21 @@ assignments found with some entries in the mailcap file). Earlier
|
|||
patterns in the list are preferred to later ones, and matched patterns
|
||||
are preferred to unmatched ones.
|
||||
)
|
||||
kindex(mime-types, MIME style)
|
||||
item(tt(mime-types))(
|
||||
A list of files in the format of tt(~/.mime.types) and
|
||||
tt(/etc/mime.types) to be read during setup, replacing the default list
|
||||
which consists of those two files. The context is tt(:mime:).
|
||||
A tt(PLUS()) in the list will be replaced by the default files.
|
||||
)
|
||||
kindex(never-background, MIME style)
|
||||
item(tt(never-background))(
|
||||
If this boolean style is set, the handler for the given context is
|
||||
always run in the foreground, even if the flags provided in the mailcap
|
||||
entry suggest it need not be (for example, it doesn't require a
|
||||
terminal).
|
||||
)
|
||||
kindex(pager, MIME style)
|
||||
item(tt(pager))(
|
||||
If set, will be used instead of tt($PAGER) or tt(more) to handle
|
||||
suffixes where the tt(copiousoutput) flag is set. The context is
|
||||
|
|
|
@ -64,6 +64,22 @@ zstyle -a $context handle-nonexistent hand_nonex ||
|
|||
local pattern
|
||||
local -a files
|
||||
|
||||
# Search some path for the file, if required.
|
||||
# We do this before any other tests that need to find the
|
||||
# actual file or its directory.
|
||||
local dir
|
||||
local -a filepath
|
||||
if zstyle -t $context find-file-in-path && [[ $1 != /* ]] &&
|
||||
[[ $1 != */* || -o pathdirs ]]; then
|
||||
zstyle -a $context file-path filepath || filepath=($path)
|
||||
for dir in $filepath; do
|
||||
if [[ -e $dir/$1 ]]; then
|
||||
1=$dir/$1
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# In case the pattern contains glob qualifiers, as it does by default,
|
||||
# we need to do real globbing, not just pattern matching.
|
||||
# The strategy is to glob the files in the directory using the
|
||||
|
@ -111,7 +127,6 @@ zstyle -t $context current-shell && no_sh=yes
|
|||
# terminal and display is set.
|
||||
zstyle -t $context never-background && no_bg=yes
|
||||
|
||||
local -a files
|
||||
local hasmeta stdin
|
||||
|
||||
# See if the handler has shell metacharacters in.
|
||||
|
@ -120,7 +135,7 @@ if [[ $handler = *[\\\;\*\?\|\"\'\`\$]* ]]; then
|
|||
hasmeta=1
|
||||
fi
|
||||
|
||||
local -a execargs
|
||||
local -a execargs files
|
||||
|
||||
if [[ $handler = *%s* ]]; then
|
||||
# We need to replace %s with the file(s).
|
||||
|
|
Loading…
Reference in a new issue