From e72ce0312e2edca2d911c15af3c7ba97ed36230b Mon Sep 17 00:00:00 2001 From: Peng Li Date: Thu, 23 Jun 2016 00:24:46 +0800 Subject: [PATCH] applescript - for emacs & emacsclient, there is still a bug --- scripts/emacs_toggle.applescript | 42 ++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/scripts/emacs_toggle.applescript b/scripts/emacs_toggle.applescript index 4873117..7870b6d 100644 --- a/scripts/emacs_toggle.applescript +++ b/scripts/emacs_toggle.applescript @@ -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 -- 2.11.0