emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Patch for growl notifications without uncommenting hacks
@ 2009-04-06  0:49 David Abrahams
  2009-04-06 22:27 ` Christopher Suckling
  0 siblings, 1 reply; 6+ messages in thread
From: David Abrahams @ 2009-04-06  0:49 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 629 bytes --]


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.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: org-mac-message.diff --]
[-- Type: text/x-patch, Size: 3955 bytes --]

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

[-- Attachment #3: Type: text/plain, Size: 62 bytes --]


-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com

[-- Attachment #4: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch for growl notifications without uncommenting hacks
  2009-04-06  0:49 Patch for growl notifications without uncommenting hacks David Abrahams
@ 2009-04-06 22:27 ` Christopher Suckling
  2009-04-07  0:16   ` David Abrahams
  0 siblings, 1 reply; 6+ messages in thread
From: Christopher Suckling @ 2009-04-06 22:27 UTC (permalink / raw)
  To: David Abrahams; +Cc: emacs-orgmode emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 373 bytes --]


On 6 Apr 2009, at 01:49, David Abrahams wrote:

>
> 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.
>

Thanks, works nicely.

Below patch adapts for general case, cleans up commentary and fixes  
one tiny formatting bug I noticed.

Best,

Christopher


[-- Attachment #2: org-mac-message.patch --]
[-- Type: application/octet-stream, Size: 3051 bytes --]

diff --git a/lisp/org-mac-message.el b/lisp/org-mac-message.el
index fb71ebd..cef8603 100644
--- a/lisp/org-mac-message.el
+++ b/lisp/org-mac-message.el
@@ -40,10 +40,6 @@
 ;; message:// links within the first level of the heading are deleted
 ;; and replaced with links to flagged messages.
 
-;; If you have Growl installed and would like more visual feedback
-;; whilst AppleScript searches for messages, please uncomment lines
-;; 114 to 119.
-
 ;;; Code:
 
 (require 'org)
@@ -101,6 +97,17 @@ This will use the command `open' with the message URL."
   "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"
@@ -111,12 +118,18 @@ This will use the command `open' with the message URL."
 	    "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"
+
+	    ;; Report progress through Growl
+            "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"
@@ -188,6 +201,7 @@ list of message:// links to flagged mail after heading."
 		  (while (re-search-forward message-re (save-excursion (outline-next-heading)) t)
 		    
 		    (delete-region (match-beginning 0) (match-end 0)))
+		  (insert "\n")
 		  (org-mac-message-get-links "f")
 		  (yank))
 		(flush-lines "^$" (point) (outline-next-heading)))

[-- Attachment #3: Type: text/plain, Size: 1 bytes --]



[-- Attachment #4: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch for growl notifications without uncommenting hacks
  2009-04-06 22:27 ` Christopher Suckling
@ 2009-04-07  0:16   ` David Abrahams
  2009-04-07  8:12     ` Christopher Suckling
  0 siblings, 1 reply; 6+ messages in thread
From: David Abrahams @ 2009-04-07  0:16 UTC (permalink / raw)
  To: Christopher Suckling; +Cc: emacs-orgmode emacs-orgmode


On Apr 6, 2009, at 6:27 PM, Christopher Suckling wrote:

>
> On 6 Apr 2009, at 01:49, David Abrahams wrote:
>
>>
>> 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.
>>
>
> Thanks, works nicely.
>
> Below patch adapts for general case, cleans up commentary and fixes  
> one tiny formatting bug I noticed.
>
> Best,
>
> Christopher
>
> <org-mac-message.patch>


Nice tweak to the code, but I'm not sure it was a good idea to strip  
out lisp comments from around the AppleScript.  There are some oddball  
idioms in there whose rationale will have to be guessed by the next  
person who comes along and wants to improve things.  Also, I think the  
indentation I applied to the applescript strings do a great deal to  
enhance comprehensibility at little or no cost.

--
David Abrahams
BoostPro Computing
http://boostpro.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch for growl notifications without uncommenting hacks
  2009-04-07  0:16   ` David Abrahams
@ 2009-04-07  8:12     ` Christopher Suckling
       [not found]       ` <4F5F2D2E-636B-43CC-A957-1B29CC84BD99@boostpro.com>
  0 siblings, 1 reply; 6+ messages in thread
From: Christopher Suckling @ 2009-04-07  8:12 UTC (permalink / raw)
  To: David Abrahams; +Cc: emacs-orgmode emacs-orgmode, Christopher Suckling

[-- Attachment #1: Type: text/plain, Size: 1225 bytes --]

On 7 Apr 2009, at 01:16, David Abrahams wrote:

>
> On Apr 6, 2009, at 6:27 PM, Christopher Suckling wrote:
>
>>
>> On 6 Apr 2009, at 01:49, David Abrahams wrote:
>>
>>>
>>> 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.
>>>
>>
>> Thanks, works nicely.
>>
>> Below patch adapts for general case, cleans up commentary and fixes  
>> one tiny formatting bug I noticed.
>>
>> Best,
>>
>> Christopher
>>
>> <org-mac-message.patch>
>
>
> Nice tweak to the code, but I'm not sure it was a good idea to strip  
> out lisp comments from around the AppleScript.  There are some  
> oddball idioms in there whose rationale will have to be guessed by  
> the next person who comes along and wants to improve things.  Also,  
> I think the indentation I applied to the applescript strings do a  
> great deal to enhance comprehensibility at little or no cost.

And done.

Carsten, ignore yesterday's patch.

BTW, is there a way of automatically doing the AppleScript indentation  
(I lost it all when I ran indent-region on the buffer and was too  
tired last night to put it back in...)?

Best,

Christopher


[-- Attachment #2: org-mac-message.patch --]
[-- Type: application/octet-stream, Size: 5604 bytes --]

diff --git a/lisp/org-mac-message.el b/lisp/org-mac-message.el
index fb71ebd..0f5249f 100644
--- a/lisp/org-mac-message.el
+++ b/lisp/org-mac-message.el
@@ -40,10 +40,6 @@
 ;; message:// links within the first level of the heading are deleted
 ;; and replaced with links to flagged messages.
 
-;; If you have Growl installed and would like more visual feedback
-;; whilst AppleScript searches for messages, please uncomment lines
-;; 114 to 119.
-
 ;;; Code:
 
 (require 'org)
@@ -86,40 +82,64 @@ This will use the command `open' with the message URL."
   (do-applescript
    (concat
     "tell application \"Mail\"\n"
-    "set theLinkList to {}\n"
-    "set theSelection to selection\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"
-    "end repeat\n"
-    "return theLinkList as string\n"
+          "set theLinkList to {}\n"
+          "set theSelection to selection\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"
+          "end repeat\n"
+          "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"
-	    ;; "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"
+	          "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 "GrowlaHelperApp", 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 org-mac-message-get-links (select-or-flag)
@@ -188,6 +208,7 @@ list of message:// links to flagged mail after heading."
 		  (while (re-search-forward message-re (save-excursion (outline-next-heading)) t)
 		    
 		    (delete-region (match-beginning 0) (match-end 0)))
+		  (insert "\n")
 		  (org-mac-message-get-links "f")
 		  (yank))
 		(flush-lines "^$" (point) (outline-next-heading)))

[-- Attachment #3: Type: text/plain, Size: 1 bytes --]



[-- Attachment #4: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch for growl notifications without uncommenting hacks
       [not found]       ` <4F5F2D2E-636B-43CC-A957-1B29CC84BD99@boostpro.com>
@ 2009-04-07 21:50         ` Christopher Suckling
  2009-04-08 13:06           ` Carsten Dominik
  0 siblings, 1 reply; 6+ messages in thread
From: Christopher Suckling @ 2009-04-07 21:50 UTC (permalink / raw)
  To: David Abrahams; +Cc: emacs-orgmode emacs-orgmode, Christopher Suckling

[-- Attachment #1: Type: text/plain, Size: 980 bytes --]

Hi Carsten,

Hopefully this is the last of the org-mac-message.el patches and it  
supersedes everything from yesterday morning onwards...

It adds Growl detection AppleScript, fixes the commentary, tidies the  
indentation and fixes two bugs (message:// regex and some formatting)

Best,

Christopher



On 7 Apr 2009, at 14:15, David Abrahams wrote:

>
> On Apr 7, 2009, at 4:12 AM, Christopher Suckling wrote:
>
>> And done.
>
> Thanks.
>
> s/GrowlaHelperApp/GrowlHelperApp/
>
> and there are two lines of comment (where the link is) that seem to  
> be indented slightly differently from the rest.
>
>> Carsten, ignore yesterday's patch.
>>
>> BTW, is there a way of automatically doing the AppleScript  
>> indentation (I lost it all when I ran indent-region on the buffer  
>> and was too tired last night to put it back in...)?
>
> That level of emacs-fu is beyond me :-)
> I just did it manually.
>
> --
> David Abrahams
> BoostPro Computing
> http://boostpro.com
>
>
>
>

[-- Attachment #2: org-mac-message.patch --]
[-- Type: application/octet-stream, Size: 5883 bytes --]

diff --git a/lisp/org-mac-message.el b/lisp/org-mac-message.el
index abb2e4e..c94457f 100644
--- a/lisp/org-mac-message.el
+++ b/lisp/org-mac-message.el
@@ -43,10 +43,6 @@
 ;; message:// links within the first level of the heading are deleted
 ;; and replaced with links to flagged messages.
 
-;; If you have Growl installed and would like more visual feedback
-;; whilst AppleScript searches for messages, please uncomment lines
-;; 114 to 119.
-
 ;;; Code:
 
 (require 'org)
@@ -89,41 +85,65 @@ This will use the command `open' with the message URL."
   (do-applescript
    (concat
     "tell application \"Mail\"\n"
-    "set theLinkList to {}\n"
-    "set theSelection to selection\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"
-    "end repeat\n"
-    "return theLinkList as string\n"
+          "set theLinkList to {}\n"
+          "set theSelection to selection\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"
+          "end repeat\n"
+          "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
-	    "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")))
+   (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 org-mac-message-get-links (select-or-flag)
   "Create links to the messages currently selected or flagged in
@@ -183,7 +203,7 @@ list of message:// links to flagged mail after heading."
     (set-buffer org-buffer)
     (goto-char (point-min))
     (let ((isearch-forward t)
-	  (message-re "\\[\\[\\(message:\\)?\\([^]]+\\)\\]\\(\\[\\([^]]+\\)\\]\\)?\\]"))
+	  (message-re "\\[\\[\\(message:\\)\\([^]]+\\)\\]\\(\\[\\([^]]+\\)\\]\\)?\\]"))
       (if (org-goto-local-search-headings org-heading nil t)
 	  (if (not (eobp))
 	      (progn
@@ -191,6 +211,7 @@ list of message:// links to flagged mail after heading."
 		  (while (re-search-forward message-re (save-excursion (outline-next-heading)) t)
 		    
 		    (delete-region (match-beginning 0) (match-end 0)))
+		  (insert "\n")
 		  (org-mac-message-get-links "f")
 		  (yank))
 		(flush-lines "^$" (point) (outline-next-heading)))

[-- Attachment #3: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Patch for growl notifications without uncommenting hacks
  2009-04-07 21:50         ` Christopher Suckling
@ 2009-04-08 13:06           ` Carsten Dominik
  0 siblings, 0 replies; 6+ messages in thread
From: Carsten Dominik @ 2009-04-08 13:06 UTC (permalink / raw)
  To: Christopher Suckling; +Cc: David Abrahams, emacs-orgmode emacs-orgmode

Applied, thanks

- Carsten

On Apr 7, 2009, at 11:50 PM, Christopher Suckling wrote:

> Hi Carsten,
>
> Hopefully this is the last of the org-mac-message.el patches and it  
> supersedes everything from yesterday morning onwards...
>
> It adds Growl detection AppleScript, fixes the commentary, tidies  
> the indentation and fixes two bugs (message:// regex and some  
> formatting)
>
> Best,
>
> Christopher
>
>
>
> On 7 Apr 2009, at 14:15, David Abrahams wrote:
>
>>
>> On Apr 7, 2009, at 4:12 AM, Christopher Suckling wrote:
>>
>>> And done.
>>
>> Thanks.
>>
>> s/GrowlaHelperApp/GrowlHelperApp/
>>
>> and there are two lines of comment (where the link is) that seem to  
>> be indented slightly differently from the rest.
>>
>>> Carsten, ignore yesterday's patch.
>>>
>>> BTW, is there a way of automatically doing the AppleScript  
>>> indentation (I lost it all when I ran indent-region on the buffer  
>>> and was too tired last night to put it back in...)?
>>
>> That level of emacs-fu is beyond me :-)
>> I just did it manually.
>>
>> --
>> David Abrahams
>> BoostPro Computing
>> http://boostpro.com
>>
>>
>>
>>
> <org-mac-message.patch>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-04-08 13:06 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-06  0:49 Patch for growl notifications without uncommenting hacks David Abrahams
2009-04-06 22:27 ` Christopher Suckling
2009-04-07  0:16   ` David Abrahams
2009-04-07  8:12     ` Christopher Suckling
     [not found]       ` <4F5F2D2E-636B-43CC-A957-1B29CC84BD99@boostpro.com>
2009-04-07 21:50         ` Christopher Suckling
2009-04-08 13:06           ` Carsten Dominik

Code repositories for project(s) associated with this inbox:

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).