emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] Patch for growl notifications without uncommenting hacks


From: David Abrahams
Subject: [Orgmode] Patch for growl notifications without uncommenting hacks
Date: Sun, 05 Apr 2009 20:49:23 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.91 (darwin)

This patch to org-mac-message.el should make it show growl notifications
when searching for flagged messages and growl is running, and work
silently otherwise.

It's a little more complicated than it needs to be, since as noted in a
comment about the "double-tell" idiom, using the creator code to find
the application is probably not going to work unless the application's
name is exactly "GrowlHelperApp" anyway, but I am not motivated to
simpilify this more now that I have it working.  Someone else is welcome
to improve on it.

Anyone is welcome to use this patch for any purpose.  I hereby place it
in the public domain.

diff --git a/lisp/org-mac-message.el b/lisp/org-mac-message.el
index d91a575..6f5d634 100644
--- a/lisp/org-mac-message.el
+++ b/lisp/org-mac-message.el
@@ -101,26 +101,49 @@ This will use the command `open' with the message URL."
   "AppleScript to create links to flagged messages in Mail.app"
   (do-applescript
           (concat
-           "tell application \"Mail\"\n"
-           "set theMailboxes to every mailbox of account \"" 
org-mac-mail-account "\"\n"
-           "set theLinkList to {}\n"
-           "repeat with aMailbox in theMailboxes\n"
-           "set theSelection to (every message in aMailbox whose flagged 
status = true)\n"
-           "repeat with theMessage in theSelection\n"
-           "set theID to message id of theMessage\n"
-           "set theSubject to subject of theMessage\n"
-           "set theLink to \"message://\" & theID & \"::split::\" & theSubject 
& \"\n\"\n"
-           "copy theLink to end of theLinkList\n"
-           ;; "tell application \"GrowlHelperApp\"\n"
-           ;; "set the allNotificationsList to {\"FlaggedMail\"}\n"
-           ;; "set the enabledNotificationsList to allNotificationsList\n"
-           ;; "register as application \"FlaggedMail\" all notifications 
allNotificationsList default notifications enabledNotificationsList icon of 
application \"Mail\"\n"
-           ;; "notify with name \"FlaggedMail\" title \"Importing flagged 
message\" description theSubject application name \"FlaggedMail\"\n"
-           ;; "end tell\n"
-           "end repeat\n"
-           "end repeat\n"
-           "return theLinkList as string\n"
-           "end tell")))
+;; Locate the GrowlHelperApp application, even if its name has a version 
number appended
+"tell application \"System Events\"\n"
+    "set growlHelpers to the name of every process whose creator type contains 
\"GRRR\"\n"
+    "if (count of growlHelpers) > 0 then\n"
+        "set growlHelperApp to item 1 of growlHelpers\n"
+    "else\n"
+        "set growlHelperApp to \"\"\n"
+    "end if\n"
+"end tell\n"
+
+"tell application \"Mail\"\n"
+    "set theMailboxes to every mailbox of account \"BoostPro\"\n"
+    "set theLinkList to {}\n"
+    "repeat with aMailbox in theMailboxes\n"
+        "set theSelection to (every message in aMailbox whose flagged status = 
true)\n"
+        "repeat with theMessage in theSelection\n"
+            "set theID to message id of theMessage\n"
+            "set theSubject to subject of theMessage\n"
+            "set theLink to \"message://\" & theID & \"::split::\" & 
theSubject & \"\n"
+            "\"\n"
+            "copy theLink to end of theLinkList\n"
+            "if growlHelperApp is not \"\" then\n"
+                ;; This "double tell" idiom is described in detail at
+                ;; http://macscripter.net/viewtopic.php?id=24570 The
+                ;; script compiler needs static knowledge of the
+                ;; growlHelperApp.  Hmm, since we're compiling
+                ;; on-the-fly here, this is likely to be way less
+                ;; portable than I'd hoped.  It'll work when the name
+                ;; is still "GrowlHelperApp", though.
+                "tell application \"GrowlHelperApp\"\n"
+                    "tell application growlHelperApp\n"
+                        "set the allNotificationsList to {\"FlaggedMail\"}\n"
+                        "set the enabledNotificationsList to 
allNotificationsList\n"
+                        "register as application \"FlaggedMail\" all 
notifications allNotificationsList default notifications 
enabledNotificationsList icon of application \"Mail\"\n"
+                        "notify with name \"FlaggedMail\" title \"Importing 
flagged message\" description theSubject application name \"FlaggedMail\"\n"
+                    "end tell\n"
+                "end tell\n"
+            "end if\n"
+        "end repeat\n"
+    "end repeat\n"
+    "return theLinkList as string\n"
+"end tell\n"
+            )))
 
 (defun org-mac-message-get-links (select-or-flag)
   "Create links to the messages currently selected or flagged in
-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com

reply via email to

[Prev in Thread] Current Thread [Next in Thread]