osx: fix tab* functions so cd works in iTerm2, exit status is correct, and
error messages are not discarded.
This commit is contained in:
parent
599831b85a
commit
689b5ab3c8
@ -5,29 +5,35 @@
|
||||
# VERSION: 1.1.0
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
function tab() {
|
||||
local command="cd \\\"$PWD\\\"; clear; "
|
||||
(( $# > 0 )) && command="${command}; $*"
|
||||
|
||||
the_app=$(
|
||||
function _omz_osx_get_frontmost_app() {
|
||||
local 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
|
||||
)
|
||||
echo "$the_app"
|
||||
}
|
||||
|
||||
[[ "$the_app" == 'Terminal' ]] && {
|
||||
osascript 2>/dev/null <<EOF
|
||||
function tab() {
|
||||
# Must not have trailing semicolon, for iTerm compatibility
|
||||
local command="cd \\\"$PWD\\\"; clear"
|
||||
(( $# > 0 )) && command="${command}; $*"
|
||||
|
||||
local the_app=$(_omz_osx_get_frontmost_app)
|
||||
|
||||
if [[ "$the_app" == 'Terminal' ]]; then
|
||||
# Discarding stdout to quash "tab N of window id XXX" output
|
||||
osascript >/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
|
||||
tell application "Terminal" to do script "${command}" in front window
|
||||
EOF
|
||||
}
|
||||
|
||||
[[ "$the_app" == 'iTerm' ]] && {
|
||||
osascript 2>/dev/null <<EOF
|
||||
elif [[ "$the_app" == 'iTerm' ]]; then
|
||||
osascript <<EOF
|
||||
tell application "iTerm"
|
||||
set current_terminal to current terminal
|
||||
tell current_terminal
|
||||
@ -35,29 +41,27 @@ EOF
|
||||
set current_session to current session
|
||||
tell current_session
|
||||
write text "${command}"
|
||||
keystroke return
|
||||
end tell
|
||||
end tell
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
else
|
||||
echo "tab: unsupported terminal app: $the_app"
|
||||
false
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
function vsplit_tab() {
|
||||
local command="cd \\\"$PWD\\\""
|
||||
local command="cd \\\"$PWD\\\"; clear"
|
||||
(( $# > 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
|
||||
)
|
||||
local the_app=$(_omz_osx_get_frontmost_app)
|
||||
|
||||
[[ "$the_app" == 'iTerm' ]] && {
|
||||
osascript 2>/dev/null <<EOF
|
||||
tell application "iTerm" to activate
|
||||
if [[ "$the_app" == 'iTerm' ]]; then
|
||||
osascript <<EOF
|
||||
-- tell application "iTerm" to activate
|
||||
|
||||
tell application "System Events"
|
||||
tell process "iTerm"
|
||||
@ -65,26 +69,24 @@ EOF
|
||||
click
|
||||
end tell
|
||||
end tell
|
||||
keystroke "${command}; clear;"
|
||||
keystroke return
|
||||
keystroke "${command} \n"
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
else
|
||||
echo "$0: unsupported terminal app: $the_app" >&2
|
||||
false
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
function split_tab() {
|
||||
local command="cd \\\"$PWD\\\""
|
||||
local command="cd \\\"$PWD\\\"; clear"
|
||||
(( $# > 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
|
||||
)
|
||||
local the_app=$(_omz_osx_get_frontmost_app)
|
||||
|
||||
[[ "$the_app" == 'iTerm' ]] && {
|
||||
if [[ "$the_app" == 'iTerm' ]]; then
|
||||
osascript 2>/dev/null <<EOF
|
||||
tell application "iTerm" to activate
|
||||
|
||||
@ -94,11 +96,15 @@ EOF
|
||||
click
|
||||
end tell
|
||||
end tell
|
||||
keystroke "${command}; clear;"
|
||||
keystroke return
|
||||
keystroke "${command} \n"
|
||||
end tell
|
||||
EOF
|
||||
}
|
||||
|
||||
else
|
||||
echo "$0: unsupported terminal app: $the_app" >&2
|
||||
false
|
||||
|
||||
fi
|
||||
}
|
||||
|
||||
function pfd() {
|
||||
|
Loading…
Reference in New Issue
Block a user