mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-19 13:33:52 +01:00
42 lines
1.1 KiB
Plaintext
42 lines
1.1 KiB
Plaintext
#compdef open
|
|
|
|
_open_absolute_application_path() {
|
|
local expl curcontext
|
|
zstyle -T ":completion:${curcontext}:files" prefix-needed && \
|
|
[[ "$PREFIX" != [/~]* && compstate[nmatches] -ne 0 ]] && return 1
|
|
_wanted files expl 'application file' _path_files -P "$PREFIX[1]" -W /
|
|
}
|
|
|
|
_open() {
|
|
local curcontext="$curcontext" state line expl
|
|
|
|
_arguments -C \
|
|
'-a[specify application]: :->open_mac_applications' \
|
|
'-e[open with TextEdit]' \
|
|
'-f[Reads input from standard input and opens with TextEdit]' \
|
|
'*: :->open_files'
|
|
|
|
case "$state" in
|
|
open_mac_applications)
|
|
_alternative \
|
|
"commands: :_mac_applications" \
|
|
"files:: _open_absolute_application_path"
|
|
;;
|
|
open_files)
|
|
local app
|
|
if [[ -n "$words[(r)-a]" ]]; then
|
|
app="${(Q)words[words[(i)-a] + 1]}"
|
|
elif [[ -n "$words[(r)-e]" || -n "$words[(r)-f]" ]]; then
|
|
app="Text Edit"
|
|
fi
|
|
if [[ -n "$app" ]]; then
|
|
_wanted files expl "file for $app" _mac_files_for_application "$app"
|
|
else
|
|
_webbrowser
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
|
|
_open "$@"
|