plugins/osx/osx.plugin.zsh
f401d6ef
 # ------------------------------------------------------------------------------
 #          FILE:  osx.plugin.zsh
 #   DESCRIPTION:  oh-my-zsh plugin file.
 #        AUTHOR:  Sorin Ionescu (sorin.ionescu@gmail.com)
 #       VERSION:  1.0.1
 # ------------------------------------------------------------------------------
18293cd7
 
c52fea80
 
89bd2bf3
 function tab() {
f401d6ef
   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)
c52fea80
       end tell
f401d6ef
 EOF
   )
c52fea80
 
f401d6ef
   [[ "$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
89bd2bf3
 EOF
f401d6ef
   }
6467e90e
 
f401d6ef
   [[ "$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}"
6467e90e
           end tell
         end tell
       end tell
f401d6ef
 EOF
   }
 }
 
 function pfd() {
   osascript 2>/dev/null <<EOF
     tell application "Finder"
       return POSIX path of (target of window 1 as alias)
6467e90e
     end tell
f401d6ef
 EOF
 }
6467e90e
 
f401d6ef
 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
6467e90e
 EOF
 }
f401d6ef
 
 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
 }