applescript - for emacs & emacsclient, there is still a bug
authorPeng Li <seudut@gmail.com>
Wed, 22 Jun 2016 16:24:46 +0000 (00:24 +0800)
committerPeng Li <seudut@gmail.com>
Wed, 22 Jun 2016 16:24:46 +0000 (00:24 +0800)
scripts/emacs_toggle.applescript

index 4873117..7870b6d 100644 (file)
@@ -2,18 +2,12 @@
 ## this scirpt works together with Quicksilver
 ## copy/link this file to ~/Library/Application Support/Quicksilver/Action
 ## and set a toggle event on Quicksilver preference
-#tell application "System Events"
-#    tell application process "Emacs"
-#        if visible then
-#            set visible to false
-#        else
-#            set visible to true
-#            tell application "Emacs" to activate
-#        end if
-#    end tell
-#end tell
 #
 ## http://brettterpstra.com/2011/01/22/quick-tip-applescript-application-toggle/ 
+#
+#
+#Version 1.0 toggle emacs front
+
 set appName to "Emacs"
 set startIt to false
 tell application "System Events"
@@ -29,3 +23,31 @@ if startIt then
     tell application appName to activate
 end if
 
+## version 2.0 - using emacs daemon and client
+##set appName to "Emacs"
+##set startIt to false
+##tell application "System Events"
+##    try
+##        -- we look for <= 2 because Emacs --daemon seems to always have an entry in visibile-frame-list even if there isn't
+##        set frameVisible to do shell script "/usr/local/bin/emacsclient -e '(<= 2 (length (visible-frame-list)))'"
+##        if frameVisible is not "t" then
+##            -- there is a not a visible frame, launch one
+##            do shell script "/usr/local/bin/emacsclient -c -n"
+##            set startIt to true
+##        else if frontmost of process "Emacs" then
+##            set visible of process "Emacs" to false
+##        else
+##            set frontmost of process "Emacs" to true
+##        end if
+##    on error
+##        -- daemon is not running, start the daemon and open a frame          
+##        do shell script "/usr/local/bin/emacs --daemon"
+##        do shell script "/usr/local/bin/emacsclient -c -n"
+##        set startIt to true
+##    end try
+##end tell
+##
+##-- bring the visible frame to the front
+##if startIt then
+##    tell application "Emacs" to activate
+##end if