I encountered a few problems with org-mac-mail bundled with emacs 24.3.1; some
errors interfacing with Growl (2.1) so the patch below works for me and I
wondered whether it would be of use to anyone else.
I adapted the insertion of flagged mail to look at all active mail accounts
rather than having to name any particular one.
This is how I use org-mac-message: and below is the patch.
(require 'org)
(load org-mac-message)
(global-set-key [(shift f10)] (lambda() (interactive)
(progn
(find-file-noselect
~/Dropbox/org/refile.org)
(org-mac-message-insert-flagged refile.org
Flagged mail
diff --git a/org-mac-message.el b/org-mac-message.el
index 5df68f5..be2a654 100644
--- a/org-mac-message.el
+++ b/org-mac-message.el
@@ -95,86 +95,89 @@ This will use the command `open' with the message URL.
return theLinkList as string\n
end tell)))
-(defun as-get-flagged-mail ()
- AppleScript to create links to flagged messages in Mail.app.
- (do-applescript
- (concat
-;; Is Growl installed?
-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
-
-;; Get links
-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
-
-;; Report progress through Growl
-;; 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.
-if growlHelperApp is not \\ then\n
-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)))
+(defun as-get-flagged-mail ()
+ AppleScript to create links to flagged messages in all Mail.app accounts
+ ;; Revised use of Growl interface and no need for variable
org-mac-mail-account
+ (do-applescript
+ (concat
+ ;; Is Growl running? Use API as recommended at
http://growl.info/documentation/applescript-support.php
+ tell application \System Events\\n
+ set growlIsRunning to (count of (every process whose bundle identifier
is \com.Growl.GrowlHelperApp\)) 0\n
+ end tell\n
+
+ set theLinkList to {}\n
+ set isNotRegisteredToGrowl to true\n
+ tell application \Mail\\n
+ set theAccountList to the name of every account\n
+ repeat with theMailAccount in theAccountList\n
+ set theMailboxes to every mailbox of account theMailAccount\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 growlIsRunning then\n
+ tell application id \com.Growl.GrowlHelperApp\\n
+ if isNotRegisteredToGrowl then\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
+ set isNotRegisteredToGrowl to false\n
+ end if\n
+ notify with name \FlaggedMail\ title \Importing flagged message\
description theSubject application name \FlaggedMail\\n
+ end tell\n
+ end if\n
+
+ end repeat\n
+ end repeat\n
+ end repeat\n
+