Re: [O] mac-message for Growl 2
Hi Iain, org-mac-message has just been replaced by org-mac-link. You you please re-evaluate if your problem still exists (probably yes - if so, please provide a new patch). Thank you! - Carsten On 4.8.2013, at 22:39, Iain Houston wrote: > 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\
[O] mac-message for Growl 2
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 \"Im