ohmyzsh/plugins/osx/osx.plugin.zsh
Ryan McCuaig 6f2bb55398 Add support for OS X Lion's restore windows after quit
By default, Lion's Terminal.app will re-open all windows after quitting and
restarting the app, but only in bash using a chpwd hook found in /etc/bashrc.
See also http://superuser.com/questions/313650/resume-zsh-terminal-os-x-lion
2011-08-03 09:59:35 -07:00

117 lines
3 KiB
Bash

# ------------------------------------------------------------------------------
# FILE: osx.plugin.zsh
# DESCRIPTION: oh-my-zsh plugin file.
# AUTHORS: sorin-ionescu
# benlangfeld
# robbyrussell
# betawaffle
# rgm
# VERSION: 1.0.2
# ------------------------------------------------------------------------------
function tab() {
local command="cd \\\"$PWD\\\""
(( $# > 0 )) && command="${command}; $*"
the_app=$(
osascript 2>/dev/null <<EOF
tell application "System Events"
name of first item of (every process whose frontmost is true)
end tell
EOF
)
[[ "$the_app" == 'Terminal' ]] && {
osascript 2>/dev/null <<EOF
tell application "System Events"
tell process "Terminal" to keystroke "t" using command down
tell application "Terminal" to do script "${command}" in front window
end tell
EOF
}
[[ "$the_app" == 'iTerm' ]] && {
osascript 2>/dev/null <<EOF
tell application "iTerm"
set current_terminal to current terminal
tell current_terminal
launch session "Default Session"
set current_session to current session
tell current_session
write text "${command}"
end tell
end tell
end tell
EOF
}
}
function pfd() {
osascript 2>/dev/null <<EOF
tell application "Finder"
return POSIX path of (target of window 1 as alias)
end tell
EOF
}
function pfs() {
osascript 2>/dev/null <<EOF
set output to ""
tell application "Finder" to set the_selection to selection
set item_count to count the_selection
repeat with item_index from 1 to count the_selection
if item_index is less than item_count then set the_delimiter to "\n"
if item_index is item_count then set the_delimiter to ""
set output to output & ((item item_index of the_selection as alias)'s POSIX path) & the_delimiter
end repeat
EOF
}
function cdf() {
cd "$(pfd)"
}
function pushdf() {
pushd "$(pfd)"
}
function quick-look() {
(( $# > 0 )) && qlmanage -p $* &>/dev/null &
}
function man-preview() {
man -t "$@" | open -f -a Preview
}
function trash() {
local trash_dir="${HOME}/.Trash"
local temp_ifs=$IFS
IFS=$'\n'
for item in "$@"; do
if [[ -e "$item" ]]; then
item_name="$(basename $item)"
if [[ -e "${trash_dir}/${item_name}" ]]; then
mv -f "$item" "${trash_dir}/${item_name} $(date "+%H-%M-%S")"
else
mv -f "$item" "${trash_dir}/"
fi
fi
done
IFS=$temp_ifs
}
if [[ $TERM_PROGRAM == "Apple Terminal" ]] && [[ -z "$INSIDE_EMACS" ]] {
autoload -U add-zsh-hook
function lion_resume_chpwd {
# add support for OS X Lion window resume on Terminal.app relaunch
# straight port from /etc/bashrc on Lion
local SEARCH=' '
local REPLACE='%20'
local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
printf '\e]7;%s\a' "$PWD_URL"
}
add-zsh-hook chpwd lion_resume_chpwd
}