From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id AGg0LHoRj2CFDQAAgWs5BA (envelope-from ) for ; Sun, 02 May 2021 22:54:18 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id mNmxJ3oRj2BSWQAAbx9fmQ (envelope-from ) for ; Sun, 02 May 2021 20:54:18 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id B5BD9AD1D for ; Sun, 2 May 2021 22:54:17 +0200 (CEST) Received: from localhost ([::1]:44286 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldJ6W-0005zq-VA for larch@yhetil.org; Sun, 02 May 2021 16:54:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46450) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldJ66-0005za-TK for emacs-orgmode@gnu.org; Sun, 02 May 2021 16:53:50 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]:33782) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ldJ5z-0003tM-Uo for emacs-orgmode@gnu.org; Sun, 02 May 2021 16:53:50 -0400 Received: by mail-wr1-x434.google.com with SMTP id n2so3539640wrm.0 for ; Sun, 02 May 2021 13:53:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=1Vdru/ePF3l0hPNn8nKHe4h0U5e3SVgUiT5yTsDbC+w=; b=AU1FUd+NPPt73fajQuQRrc6tQ+0TeExAMK144lbIp4jbZ2YgVfFStNy9QUQUfL+zg2 Cv+hb+PGOug2B+l6KvjcgjAMjXqXqYVGBrEb66JDBpKd7N81zkuoNy1lFlwd3/41W245 5ZMAEFJYAfw5A61Dhj8NGzx9qGkdSSx5RShfNPo615l3KzrTGC8FK91lyyjIGHG3Mo/U lw6fTV+PLo6KpOu5rVo7JQxAny7iX3b8bboM2jhpwj8tOm1mcL1rGtTZGV3ioVBncIWF Q9fi6+ZjaHwk/v+Ia8IWW3bwPd1qnFZehNNAwSvz505ynDpxf/vM/k9c6s3+8ZYPYoah Gqsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=1Vdru/ePF3l0hPNn8nKHe4h0U5e3SVgUiT5yTsDbC+w=; b=tbd8Ozzti7VyR5wcg6Af9f3iVSGSp3JnvYdn1NgFaAK+9GTu4IxfPAr/blkiaarXgy RCy2NfWzWcDsBdPL5njPC70nivW+5lgE585GfMQxUETR+mt2zEI+jEs22FA7zzgvepgV 0YpSfsowjFFzTacHFoJjOYVYyaL77JJGLOO47KY/kTUHfvMcDah/4INbpg53cK0/6WOP qroZmAdgcoWYEJ94ZBIv73+ZfSan/EVZ5pjPtJInU9a4vqvkZah511aWC+v7vRjcrBrF 49vof4gIbe60IV/X3Ue0VsTYstdG+il/qznDbPWanMOnFgTOPg+dN/nE2y6RJ7ty2+Cg poew== X-Gm-Message-State: AOAM533OOmRvTvADMkmQygtHo1WXJfFMQKLYOiPd7qmeXr1AANnO9MRE s0ej0rdHGkJg70Wmi0QSYu9/FbKqNH3OVkZido9hbMDBdt+B6Q== X-Google-Smtp-Source: ABdhPJxNkp74e4/FPk/qsge5qXKgGfewgNxCpwJEi/n9YMkX2TUlqfhzKq6VHc44Q+Co4qUWiBdEmw1LRPSzTCovVT4= X-Received: by 2002:a5d:54c2:: with SMTP id x2mr20367435wrv.278.1619988817324; Sun, 02 May 2021 13:53:37 -0700 (PDT) MIME-Version: 1.0 From: Tim Visher Date: Sun, 2 May 2021 16:53:01 -0400 Message-ID: Subject: [PATCH]: Add elisp snippet to worg/org-contrib/org-mac.org To: Emacs Org Mode mailing list Content-Type: multipart/mixed; boundary="000000000000ff401105c15f09fb" Received-SPF: pass client-ip=2a00:1450:4864:20::434; envelope-from=tim.visher@gmail.com; helo=mail-wr1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1619988858; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=GUuOtLYTdmaUKnrhJkJArhcG6dgyrNUaerKC+C+gzws=; b=oDLu6PdPmJcwKE8T15GiZgFyRZdOKi1gMAgpFDL3JjPZ9ZKax0pIy2usBXdIrjju5cPYvR 7n7bvd1c6O2HXSStAdU99R0CcaG4CYLdl12rwA0RF+5BI2TtNYN6CZoKmBD4daJlugzD8/ 3jRt7JSQwBANiT563DTFQp3DV2LXdcM5k1mhaVhbXdd5vH4Rk22qGu1zARz82w2HGegXFh ph/QmsCOcn8xShvUV3Xwvha5LhGh0JZw/cDd2CJ1+atnHMMwGN3rl1zUlwfWz0NDqMV3Uc jyA7YqPYmShaI2/YiTCOMzEH1Q+casdmJ4mxDW1+Kwlx2X9qg78cQouTbZyZug== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1619988858; a=rsa-sha256; cv=none; b=tWnBZocl6ryFtPhJJ4vUKgp5hEFyNBaDUgBfezv70ww7yf252l8KR3PHNRPZyCm/oLzkwb ZfOScINYzoZxlbC5/2hXjce8vUn0W0A/Fz0CPWQx524/L9qGP3ixsXoTPt+PJ5vkADtmc3 GAAtoDdkKk329MowmGOQjWhcoG8DNIGtpMVbCOcnuk2nCj2xCQDZ99BTlC7W2sy2e0k1oM Yt4n8WZBF6o/PUIg25LGU+/JawCyVx8f+hLr2cne8sIFBve23tuXi9HOWn9Ki1IYrY1C+/ dz8xYOBV4gtUHNxcYa0tYE4i8ytaj4WTvRRx4g+yh+KJw0HA2hlnj0K9+iPF/g== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20161025 header.b=AU1FUd+N; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Spam-Score: -1.36 Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=gmail.com header.s=20161025 header.b=AU1FUd+N; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Migadu-Queue-Id: B5BD9AD1D X-Spam-Score: -1.36 X-Migadu-Scanner: scn0.migadu.com X-TUID: Bm2hwn0hPhzH --000000000000ff401105c15f09fb Content-Type: multipart/alternative; boundary="000000000000ff400f05c15f09f9" --000000000000ff400f05c15f09f9 Content-Type: text/plain; charset="UTF-8" Hello, At the recommendation of Tim Cross I've prepared a patch to worg to include the elisp that I recently sent to the list that I've been using to create TODO items based on the currently selected macOS Mail.app message. Let me know if there's anything I can do to help get it applied. >From d1a7818593aee6bcb6de5c6837c506905a64f723 Mon Sep 17 00:00:00 2001 From: Tim Visher Date: Sun, 2 May 2021 16:34:24 -0400 Subject: [PATCH] org-mac: Add org-mac-mail-link section and elisp --- org-contrib/org-mac-mail-link.org | 147 ++++++++++++++++++++++++++++++ org-mac.org | 5 + 2 files changed, 152 insertions(+) create mode 100644 org-contrib/org-mac-mail-link.org diff --git a/org-contrib/org-mac-mail-link.org b/org-contrib/org-mac-mail-link.orgnew file mode 100644index 00000000..6e7f9c52--- /dev/null+++ b/org-contrib/org-mac-mail-link.org@@ -0,0 +1,147 @@+#+TITLE: org-mac-mail-link.el -- Create and handle links to the selected Mail.app message+#+OPTIONS: ^:{} author:Tim Visher+#+STARTUP: odd++# This file is released by its authors and contributors under the GNU+# Free Documentation license v1.3 or later, code examples are released+# under the GNU General Public License v3 or later.++[[file:index.org][{Back to Worg's contibutions index}]]++* Overview++ This code will allow you to capture a TODO item based on the+ currently selected Mail.app message using =org-capture=.++* Installation++ You should simply copy the source code from this document into your+ init file and edit it as you see fit.++* Usage++ Activate =org-capture= however you see fit (=M-x org-capture= works+ just fine) and then whack the keychord you have set up to activate+ the capture template.++* Code++ #+begin_src elisp+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ ;;; Capture template for the currently selected Mail.app message+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++ (defun org-mac-mail-link-get-selected-message-subject+ ()+ (with-temp-buffer+ (call-process+ "osascript" nil t nil+ "-e" "tell application \"Mail\" to get subject of item 1 of (selection as list)")+ (buffer-substring-no-properties (point-min) (- (point-max) 1))))++ (defun org-mac-mail-link-get-selected-message-id+ ()+ (with-temp-buffer+ (call-process+ "osascript" nil t nil+ "-e" "tell application \"Mail\" to get message id of item 1 of (selection as list)")+ ;; This additional encoding specifically of =/= is because Mail.app+ ;; claims to be unable to find a message if it's ID contains unencoded+ ;; slashes.+ (browse-url-url-encode-chars+ (buffer-substring-no-properties (point-min) (- (point-max) 1))+ "[/]")))++ (defun org-mac-mail-link-get-link-string+ ()+ (let ((subject (org-mac-mail-link-get-selected-message-subject))+ (message-id (org-mac-mail-link-get-selected-message-id)))+ (org-link-make-string (format "message:%s" message-id)+ subject)))++ (defun org-mac-mail-link-get-body-quote-template-element+ ()+ (let ((body (setq body (with-temp-buffer+ (call-process+ "osascript" nil t nil+ "-e" "tell application \"Mail\" to get content of item 1 of (selection as list)")+ (buffer-substring-no-properties (point-min) (- (point-max) 1))))))+ (format "++ ,#+begin_quote+ %s+ ,#+end_quote"+ (string-join+ ;; Remove duplicate empty lines+ (seq-reduce+ (lambda (acc next)+ (if (string= next (or (car (last acc)) ""))+ acc+ (append acc (list next))))+ ;; Indent each line by two spaces for inclusion in the quote+ (mapcar (lambda (string)+ (let ((string (string-trim string)))+ (if (string= "" string)+ string+ (format " %s" string))))+ (split-string body "\n"))+ '())+ "\n"))))++ (require 'org-capture)++ ;;; You may also wish to use the Customize interface for this variable+ ;;; which is quite nice.+ (setq org-capture-templates+ ;; These 2-item entries are only necessary if you want to nest the+ ;; capture template under a keychord.+ '(("t" "TODO")+ ("tc" "TODO Current")+ ("tcm" "TODO Current Mail" entry+ ;; If you maintain your TODO list in a single file this will+ ;; place the resulting org-capture template expansion under the+ ;; 'Inbox' heading. You may want to modify this.+ ;;+ ;; The resulting heading looks something like+ ;;+ ;; ** TODO [[message:][subject]]+ ;;+ ;; [2021-05-02 Sun 16:22]+ ;;+ ;; #+begin_quote+ ;; Unwrapped+ ;;+ ;; Body+ ;;+ ;; Text+ ;; #+end_quote+ (file+headline "~/your-org-todo.org" "Inbox")+ "* TODO %(org-mac-mail-link-get-link-string)++ %U%(org-mac-mail-link-get-body-quote-template-element)" :prepend t :immediate-finish t)))++ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ ;;; Use =C-c C= as your org-capture keybinding+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++ (eval-after-load 'org+ '(org-defkey org-mode-map (kbd "C-c C") #'org-capture))++ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+ ;;; Teach org about opening message links+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;++ (defun org-mac-mail-link-open-link+ (mid _)+ (start-process "open-link" nil "open" (format "message://%%3C%s%%3E"+ mid)))++ (defun org-mac-mail-link-add-message-links+ ()+ (org-link-set-parameters+ "message" :follow #'org-mac-mail-link-open-link))++ (eval-after-load 'org+ '(org-mac-mail-link-add-message-links))++ #+end_srcdiff --git a/org-mac.org b/org-mac.orgindex 1cb5392b..2addd5f0 100644--- a/org-mac.org+++ b/org-mac.org@@ -33,6 +33,11 @@ applications other than Emacs... insert it as a hyperlink at point in an org-mode document. Written by /Anthony Lander/. +** org-mac-mail-link -- Hyperlink to messages in Mail.app+ A small elisp file that addresses linking to Mail.app messages+ directly via the =org-capture= system. For wider application+ support check out [[file:org-contrib/org-mac-link.org][org-mac-link]].+ * For use outside Emacs Push information from the current application into org-mode.-- 2.30.1 Cheers! -- In Christ, Timmy V. https://blog.twonegatives.com http://five.sentenc.es --000000000000ff400f05c15f09f9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Hello= ,

At the=C2=A0recommendation of Tim Cross=C2=A0I've prepared a patch to=C2=A0<= code>worg=C2=A0to include the elisp that I recently sent to the list= that I've been using to create TODO items based on the currently selec= ted macOS Mail.app message.

Let me know if there's anything I can do to help get it applie= d.

From d1a7818593aee6bcb6de5c6837c506905a64f723 Mon Sep 17 00:00:00 2001
From: Tim Visher <tim@stitchdata=
.com>
Date: Sun, 2 May 2021 16:34:24 -0400
Subject: [PATCH] org-mac: Add org-mac-mail-link section and elisp

---
 org-contrib/org-mac-mail-link.org=
 | 147 ++++++++++++++++++++++++++++++
 org-mac.org                       |   5=
 +
 2 files changed, 152 insertions(+)
 create mode 100644 org-contrib/or=
g-mac-mail-link.org

diff --git a/org-contrib/=
org-mac-mail-link.org b/org-co=
ntrib/org-mac-mail-link.org
new file mode 100644
index 00000000..6e7f9c52<=
/span>
--- /dev/null
+++ b/org-contrib/org-mac-mail-link.org
@@ -0,0 +1,147 @@
+#+TITLE:     org-mac-=
mail-link.el -- Create and handle links to the selected Mail.app message
+#+OPTIONS:   ^:{} aut=
hor:Tim Visher
+#+STARTUP: odd
+
+# This file is releas=
ed by its authors and contributors under the GNU
+# Free Documentation =
license v1.3 or later, code examples are released
+# under the GNU Gener=
al Public License v3 or later.
+
+[[file:index.org][{Back to Worg's contibutions index}]]
+
+* Overview
+
+  This code will allo=
w you to capture a TODO item based on the
+  currently selected =
Mail.app message using =3Dorg-capture=3D.
+
+* Installation
+
+  You should simply c=
opy the source code from this document into your
+  init file and edit =
it as you see fit.
+
+* Usage
+
+  Activate =3Dorg-cap=
ture=3D however you see fit (=3DM-x org-capture=3D works
+  just fine) and then=
 whack the keychord you have set up to activate
+  the capture templat=
e.
+
+* Code
+
+  #+begin_src elisp
+  ;;;;;;;;;;;;;;;;;;;=
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ;;; Capture templat=
e for the currently selected Mail.app message
+  ;;;;;;;;;;;;;;;;;;;=
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+  (defun org-mac-mail=
-link-get-selected-message-subject
+      ()
+    (with-temp-buffer=

+      (call-process
+       "osascrip=
t" nil t nil
+       "-e"=
 "tell application \"Mail\" to get subject of item 1 of (sel=
ection as list)")
+      (buffer-substri=
ng-no-properties (point-min) (- (point-max) 1))))
+
+  (defun org-mac-mail=
-link-get-selected-message-id
+      ()
+    (with-temp-buffer=

+      (call-process
+       "osascrip=
t" nil t nil
+       "-e"=
 "tell application \"Mail\" to get message id of item 1 of (=
selection as list)")
+      ;; This additio=
nal encoding specifically of =3D/=3D is because Mail.app
+      ;; claims to be=
 unable to find a message if it's ID contains unencoded
+      ;; slashes.
+      (browse-url-url=
-encode-chars
+       (buffer-substr=
ing-no-properties (point-min) (- (point-max) 1))
+       "[/]"=
;)))
+
+  (defun org-mac-mail=
-link-get-link-string
+      ()
+    (let ((subject (o=
rg-mac-mail-link-get-selected-message-subject))
+          (message-id=
 (org-mac-mail-link-get-selected-message-id)))
+      (org-link-make-=
string (format "message:%s" message-id)
+                     =
       subject)))
+
+  (defun org-mac-mail=
-link-get-body-quote-template-element
+      ()
+    (let ((body (setq=
 body (with-temp-buffer
+                     =
        (call-process
+                     =
         "osascript" nil t nil
+                     =
         "-e" "tell application \"Mail\" to get co=
ntent of item 1 of (selection as list)")
+                     =
        (buffer-substring-no-properties (point-min) (- (point-max) 1))))))<=
/span>
+      (format "<=
/span>
+
+    ,#+begin_quote
+  %s
+    ,#+end_quote"=
;
+              (string=
-join
+               ;; Rem=
ove duplicate empty lines
+               (seq-r=
educe
+                (lamb=
da (acc next)
+                  (if=
 (string=3D next (or (car (last acc)) ""))
+                     =
 acc
+                    (=
append acc (list next))))
+                ;; In=
dent each line by two spaces for inclusion in the quote
+                (mapc=
ar (lambda (string)
+                     =
     (let ((string (string-trim string)))
+                     =
       (if (string=3D "" string)
+                     =
           string
+                     =
         (format "  %s" string))))
+                     =
   (split-string body "\n"))
+                '=
())
+               "=
\n"))))
+
+  (require 'org-c=
apture)
+
+  ;;; You may also wi=
sh to use the Customize interface for this variable
+  ;;; which is quite =
nice.
+  (setq org-capture-t=
emplates
+        ;; These 2-it=
em entries are only necessary if you want to nest the
+        ;; capture te=
mplate under a keychord.
+        '(("=
t" "TODO")
+          ("tc&q=
uot; "TODO Current")
+          ("tcm&=
quot; "TODO Current Mail" entry
+           ;; If you =
maintain your TODO list in a single file this will
+           ;; place t=
he resulting org-capture template expansion under the
+           ;; 'In=
box' heading. You may want to modify this.
+           ;;
+           ;; The res=
ulting heading looks something like
+           ;;
+           ;; ** TODO=
 [[message:<encoded messageID>][subject]]
+           ;;
+           ;;    [202=
1-05-02 Sun 16:22]
+           ;;
+           ;;    #+be=
gin_quote
+           ;;    Unwr=
apped
+           ;;
+           ;;    Body=

+           ;;
+           ;;    Text=

+           ;;    #+en=
d_quote
+           (file+head=
line "~/your-org-todo.org&quo=
t; "Inbox")
+           "* TO=
DO %(org-mac-mail-link-get-link-string)
+
+    %U%(org-mac-mail-=
link-get-body-quote-template-element)" :prepend t :immediate-finish t)=
))
+
+  ;;;;;;;;;;;;;;;;;;;=
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ;;; Use =3DC-c C=3D=
 as your org-capture keybinding
+  ;;;;;;;;;;;;;;;;;;;=
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+  (eval-after-load &#=
39;org
+    '(org-defkey =
org-mode-map (kbd "C-c C") #'org-capture))
+
+  ;;;;;;;;;;;;;;;;;;;=
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+  ;;; Teach org about=
 opening message links
+  ;;;;;;;;;;;;;;;;;;;=
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+  (defun org-mac-mail=
-link-open-link
+      (mid _)
+    (start-process &q=
uot;open-link" nil "open" (format "message://%%3C%s%%3E=
"
+                     =
                             mid)))
+
+  (defun org-mac-mail=
-link-add-message-links
+      ()
+    (org-link-set-par=
ameters
+     "message&qu=
ot; :follow #'org-mac-mail-link-open-link))
+
+  (eval-after-load &#=
39;org
+    '(org-mac-mai=
l-link-add-message-links))
+
+  #+end_src
diff --git a/org-mac.org b/org-mac=
.org
index 1cb5392b..2addd5f0 =
100644
--- a/org-mac.org
+++ b/org-mac.org
@@ -33,6 +33,11 @@=
 applications other than =
Emacs...
    insert it as a hyperlink at point in an org-mode document. Written
    by /Anthony Lander/.

+** org-mac-mail-link =
-- Hyperlink to messages in Mail.app
+   A small elisp file=
 that addresses linking to Mail.app messages
+   directly via the =
=3Dorg-capture=3D system. For wider application
+   support check out =
[[file:org-contrib/org-mac-link.org=
][org-mac-link]].
+
 * For use outside Emacs

   Push information from the current application into org-mode.
-- 
2.30.1

Cheers!

--000000000000ff400f05c15f09f9-- --000000000000ff401105c15f09fb Content-Type: application/octet-stream; name="0001-org-mac-Add-org-mac-mail-link-section-and-elisp.patch" Content-Disposition: attachment; filename="0001-org-mac-Add-org-mac-mail-link-section-and-elisp.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ko7nhcv60 RnJvbSBkMWE3ODE4NTkzYWVlNmJjYjZkZTVjNjgzN2M1MDY5MDVhNjRmNzIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW0gVmlzaGVyIDx0aW1Ac3RpdGNoZGF0YS5jb20+CkRhdGU6 IFN1biwgMiBNYXkgMjAyMSAxNjozNDoyNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIG9yZy1tYWM6 IEFkZCBvcmctbWFjLW1haWwtbGluayBzZWN0aW9uIGFuZCBlbGlzcAoKLS0tCiBvcmctY29udHJp Yi9vcmctbWFjLW1haWwtbGluay5vcmcgfCAxNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiBvcmctbWFjLm9yZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKwogMiBmaWxlcyBj aGFuZ2VkLCAxNTIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IG9yZy1jb250cmli L29yZy1tYWMtbWFpbC1saW5rLm9yZwoKZGlmZiAtLWdpdCBhL29yZy1jb250cmliL29yZy1tYWMt bWFpbC1saW5rLm9yZyBiL29yZy1jb250cmliL29yZy1tYWMtbWFpbC1saW5rLm9yZwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNmU3ZjljNTIKLS0tIC9kZXYvbnVsbAorKysg Yi9vcmctY29udHJpYi9vcmctbWFjLW1haWwtbGluay5vcmcKQEAgLTAsMCArMSwxNDcgQEAKKyMr VElUTEU6ICAgICBvcmctbWFjLW1haWwtbGluay5lbCAtLSBDcmVhdGUgYW5kIGhhbmRsZSBsaW5r cyB0byB0aGUgc2VsZWN0ZWQgTWFpbC5hcHAgbWVzc2FnZQorIytPUFRJT05TOiAgIF46e30gYXV0 aG9yOlRpbSBWaXNoZXIKKyMrU1RBUlRVUDogb2RkCisKKyMgVGhpcyBmaWxlIGlzIHJlbGVhc2Vk IGJ5IGl0cyBhdXRob3JzIGFuZCBjb250cmlidXRvcnMgdW5kZXIgdGhlIEdOVQorIyBGcmVlIERv Y3VtZW50YXRpb24gbGljZW5zZSB2MS4zIG9yIGxhdGVyLCBjb2RlIGV4YW1wbGVzIGFyZSByZWxl YXNlZAorIyB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjMgb3IgbGF0ZXIu CisKK1tbZmlsZTppbmRleC5vcmddW3tCYWNrIHRvIFdvcmcncyBjb250aWJ1dGlvbnMgaW5kZXh9 XV0KKworKiBPdmVydmlldworCisgIFRoaXMgY29kZSB3aWxsIGFsbG93IHlvdSB0byBjYXB0dXJl IGEgVE9ETyBpdGVtIGJhc2VkIG9uIHRoZQorICBjdXJyZW50bHkgc2VsZWN0ZWQgTWFpbC5hcHAg bWVzc2FnZSB1c2luZyA9b3JnLWNhcHR1cmU9LgorCisqIEluc3RhbGxhdGlvbgorCisgIFlvdSBz aG91bGQgc2ltcGx5IGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhpcyBkb2N1bWVudCBpbnRv IHlvdXIKKyAgaW5pdCBmaWxlIGFuZCBlZGl0IGl0IGFzIHlvdSBzZWUgZml0LgorCisqIFVzYWdl CisKKyAgQWN0aXZhdGUgPW9yZy1jYXB0dXJlPSBob3dldmVyIHlvdSBzZWUgZml0ICg9TS14IG9y Zy1jYXB0dXJlPSB3b3JrcworICBqdXN0IGZpbmUpIGFuZCB0aGVuIHdoYWNrIHRoZSBrZXljaG9y ZCB5b3UgaGF2ZSBzZXQgdXAgdG8gYWN0aXZhdGUKKyAgdGhlIGNhcHR1cmUgdGVtcGxhdGUuCisK KyogQ29kZQorCisgICMrYmVnaW5fc3JjIGVsaXNwCisgIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CisgIDs7 OyBDYXB0dXJlIHRlbXBsYXRlIGZvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIE1haWwuYXBwIG1l c3NhZ2UKKyAgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKworICAoZGVmdW4gb3JnLW1hYy1tYWlsLWxpbmst Z2V0LXNlbGVjdGVkLW1lc3NhZ2Utc3ViamVjdAorICAgICAgKCkKKyAgICAod2l0aC10ZW1wLWJ1 ZmZlcgorICAgICAgKGNhbGwtcHJvY2VzcworICAgICAgICJvc2FzY3JpcHQiIG5pbCB0IG5pbAor ICAgICAgICItZSIgInRlbGwgYXBwbGljYXRpb24gXCJNYWlsXCIgdG8gZ2V0IHN1YmplY3Qgb2Yg aXRlbSAxIG9mIChzZWxlY3Rpb24gYXMgbGlzdCkiKQorICAgICAgKGJ1ZmZlci1zdWJzdHJpbmct bm8tcHJvcGVydGllcyAocG9pbnQtbWluKSAoLSAocG9pbnQtbWF4KSAxKSkpKQorCisgIChkZWZ1 biBvcmctbWFjLW1haWwtbGluay1nZXQtc2VsZWN0ZWQtbWVzc2FnZS1pZAorICAgICAgKCkKKyAg ICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKGNhbGwtcHJvY2VzcworICAgICAgICJvc2FzY3Jp cHQiIG5pbCB0IG5pbAorICAgICAgICItZSIgInRlbGwgYXBwbGljYXRpb24gXCJNYWlsXCIgdG8g Z2V0IG1lc3NhZ2UgaWQgb2YgaXRlbSAxIG9mIChzZWxlY3Rpb24gYXMgbGlzdCkiKQorICAgICAg OzsgVGhpcyBhZGRpdGlvbmFsIGVuY29kaW5nIHNwZWNpZmljYWxseSBvZiA9Lz0gaXMgYmVjYXVz ZSBNYWlsLmFwcAorICAgICAgOzsgY2xhaW1zIHRvIGJlIHVuYWJsZSB0byBmaW5kIGEgbWVzc2Fn ZSBpZiBpdCdzIElEIGNvbnRhaW5zIHVuZW5jb2RlZAorICAgICAgOzsgc2xhc2hlcy4KKyAgICAg IChicm93c2UtdXJsLXVybC1lbmNvZGUtY2hhcnMKKyAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1u by1wcm9wZXJ0aWVzIChwb2ludC1taW4pICgtIChwb2ludC1tYXgpIDEpKQorICAgICAgICJbL10i KSkpCisKKyAgKGRlZnVuIG9yZy1tYWMtbWFpbC1saW5rLWdldC1saW5rLXN0cmluZworICAgICAg KCkKKyAgICAobGV0ICgoc3ViamVjdCAob3JnLW1hYy1tYWlsLWxpbmstZ2V0LXNlbGVjdGVkLW1l c3NhZ2Utc3ViamVjdCkpCisgICAgICAgICAgKG1lc3NhZ2UtaWQgKG9yZy1tYWMtbWFpbC1saW5r LWdldC1zZWxlY3RlZC1tZXNzYWdlLWlkKSkpCisgICAgICAob3JnLWxpbmstbWFrZS1zdHJpbmcg KGZvcm1hdCAibWVzc2FnZTolcyIgbWVzc2FnZS1pZCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdWJqZWN0KSkpCisKKyAgKGRlZnVuIG9yZy1tYWMtbWFpbC1saW5rLWdldC1ib2R5LXF1 b3RlLXRlbXBsYXRlLWVsZW1lbnQKKyAgICAgICgpCisgICAgKGxldCAoKGJvZHkgKHNldHEgYm9k eSAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsbC1w cm9jZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3Nhc2NyaXB0IiBuaWwgdCBu aWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZSIgInRlbGwgYXBwbGljYXRpb24g XCJNYWlsXCIgdG8gZ2V0IGNvbnRlbnQgb2YgaXRlbSAxIG9mIChzZWxlY3Rpb24gYXMgbGlzdCki KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9w ZXJ0aWVzIChwb2ludC1taW4pICgtIChwb2ludC1tYXgpIDEpKSkpKSkKKyAgICAgIChmb3JtYXQg IgorCisgICAgLCMrYmVnaW5fcXVvdGUKKyAgJXMKKyAgICAsIytlbmRfcXVvdGUiCisgICAgICAg ICAgICAgIChzdHJpbmctam9pbgorICAgICAgICAgICAgICAgOzsgUmVtb3ZlIGR1cGxpY2F0ZSBl bXB0eSBsaW5lcworICAgICAgICAgICAgICAgKHNlcS1yZWR1Y2UKKyAgICAgICAgICAgICAgICAo bGFtYmRhIChhY2MgbmV4dCkKKyAgICAgICAgICAgICAgICAgIChpZiAoc3RyaW5nPSBuZXh0IChv ciAoY2FyIChsYXN0IGFjYykpICIiKSkKKyAgICAgICAgICAgICAgICAgICAgICBhY2MKKyAgICAg ICAgICAgICAgICAgICAgKGFwcGVuZCBhY2MgKGxpc3QgbmV4dCkpKSkKKyAgICAgICAgICAgICAg ICA7OyBJbmRlbnQgZWFjaCBsaW5lIGJ5IHR3byBzcGFjZXMgZm9yIGluY2x1c2lvbiBpbiB0aGUg cXVvdGUKKyAgICAgICAgICAgICAgICAobWFwY2FyIChsYW1iZGEgKHN0cmluZykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKGxldCAoKHN0cmluZyAoc3RyaW5nLXRyaW0gc3RyaW5nKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChzdHJpbmc9ICIiIHN0cmluZykKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZm9ybWF0ICIgICVzIiBzdHJpbmcpKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAoc3BsaXQtc3RyaW5nIGJvZHkgIlxuIikpCisgICAgICAgICAgICAgICAgJygpKQorICAgICAg ICAgICAgICAgIlxuIikpKSkKKworICAocmVxdWlyZSAnb3JnLWNhcHR1cmUpCisKKyAgOzs7IFlv dSBtYXkgYWxzbyB3aXNoIHRvIHVzZSB0aGUgQ3VzdG9taXplIGludGVyZmFjZSBmb3IgdGhpcyB2 YXJpYWJsZQorICA7Ozsgd2hpY2ggaXMgcXVpdGUgbmljZS4KKyAgKHNldHEgb3JnLWNhcHR1cmUt dGVtcGxhdGVzCisgICAgICAgIDs7IFRoZXNlIDItaXRlbSBlbnRyaWVzIGFyZSBvbmx5IG5lY2Vz c2FyeSBpZiB5b3Ugd2FudCB0byBuZXN0IHRoZQorICAgICAgICA7OyBjYXB0dXJlIHRlbXBsYXRl IHVuZGVyIGEga2V5Y2hvcmQuCisgICAgICAgICcoKCJ0IiAiVE9ETyIpCisgICAgICAgICAgKCJ0 YyIgIlRPRE8gQ3VycmVudCIpCisgICAgICAgICAgKCJ0Y20iICJUT0RPIEN1cnJlbnQgTWFpbCIg ZW50cnkKKyAgICAgICAgICAgOzsgSWYgeW91IG1haW50YWluIHlvdXIgVE9ETyBsaXN0IGluIGEg c2luZ2xlIGZpbGUgdGhpcyB3aWxsCisgICAgICAgICAgIDs7IHBsYWNlIHRoZSByZXN1bHRpbmcg b3JnLWNhcHR1cmUgdGVtcGxhdGUgZXhwYW5zaW9uIHVuZGVyIHRoZQorICAgICAgICAgICA7OyAn SW5ib3gnIGhlYWRpbmcuIFlvdSBtYXkgd2FudCB0byBtb2RpZnkgdGhpcy4KKyAgICAgICAgICAg OzsKKyAgICAgICAgICAgOzsgVGhlIHJlc3VsdGluZyBoZWFkaW5nIGxvb2tzIHNvbWV0aGluZyBs aWtlCisgICAgICAgICAgIDs7CisgICAgICAgICAgIDs7ICoqIFRPRE8gW1ttZXNzYWdlOjxlbmNv ZGVkIG1lc3NhZ2VJRD5dW3N1YmplY3RdXQorICAgICAgICAgICA7OworICAgICAgICAgICA7OyAg ICBbMjAyMS0wNS0wMiBTdW4gMTY6MjJdCisgICAgICAgICAgIDs7CisgICAgICAgICAgIDs7ICAg ICMrYmVnaW5fcXVvdGUKKyAgICAgICAgICAgOzsgICAgVW53cmFwcGVkCisgICAgICAgICAgIDs7 CisgICAgICAgICAgIDs7ICAgIEJvZHkKKyAgICAgICAgICAgOzsKKyAgICAgICAgICAgOzsgICAg VGV4dAorICAgICAgICAgICA7OyAgICAjK2VuZF9xdW90ZQorICAgICAgICAgICAoZmlsZStoZWFk bGluZSAifi95b3VyLW9yZy10b2RvLm9yZyIgIkluYm94IikKKyAgICAgICAgICAgIiogVE9ETyAl KG9yZy1tYWMtbWFpbC1saW5rLWdldC1saW5rLXN0cmluZykKKworICAgICVVJShvcmctbWFjLW1h aWwtbGluay1nZXQtYm9keS1xdW90ZS10ZW1wbGF0ZS1lbGVtZW50KSIgOnByZXBlbmQgdCA6aW1t ZWRpYXRlLWZpbmlzaCB0KSkpCisKKyAgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKyAgOzs7IFVzZSA9Qy1j IEM9IGFzIHlvdXIgb3JnLWNhcHR1cmUga2V5YmluZGluZworICA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owor CisgIChldmFsLWFmdGVyLWxvYWQgJ29yZworICAgICcob3JnLWRlZmtleSBvcmctbW9kZS1tYXAg KGtiZCAiQy1jIEMiKSAjJ29yZy1jYXB0dXJlKSkKKworICA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OworICA7 OzsgVGVhY2ggb3JnIGFib3V0IG9wZW5pbmcgbWVzc2FnZSBsaW5rcworICA7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7OworCisgIChkZWZ1biBvcmctbWFjLW1haWwtbGluay1vcGVuLWxpbmsKKyAgICAgIChtaWQg XykKKyAgICAoc3RhcnQtcHJvY2VzcyAib3Blbi1saW5rIiBuaWwgIm9wZW4iIChmb3JtYXQgIm1l c3NhZ2U6Ly8lJTNDJXMlJTNFIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtaWQpKSkKKworICAoZGVmdW4gb3JnLW1hYy1tYWlsLWxpbmstYWRkLW1l c3NhZ2UtbGlua3MKKyAgICAgICgpCisgICAgKG9yZy1saW5rLXNldC1wYXJhbWV0ZXJzCisgICAg ICJtZXNzYWdlIiA6Zm9sbG93ICMnb3JnLW1hYy1tYWlsLWxpbmstb3Blbi1saW5rKSkKKworICAo ZXZhbC1hZnRlci1sb2FkICdvcmcKKyAgICAnKG9yZy1tYWMtbWFpbC1saW5rLWFkZC1tZXNzYWdl LWxpbmtzKSkKKworICAjK2VuZF9zcmMKZGlmZiAtLWdpdCBhL29yZy1tYWMub3JnIGIvb3JnLW1h Yy5vcmcKaW5kZXggMWNiNTM5MmIuLjJhZGRkNWYwIDEwMDY0NAotLS0gYS9vcmctbWFjLm9yZwor KysgYi9vcmctbWFjLm9yZwpAQCAtMzMsNiArMzMsMTEgQEAgYXBwbGljYXRpb25zIG90aGVyIHRo YW4gRW1hY3MuLi4KICAgIGluc2VydCBpdCBhcyBhIGh5cGVybGluayBhdCBwb2ludCBpbiBhbiBv cmctbW9kZSBkb2N1bWVudC4gV3JpdHRlbgogICAgYnkgL0FudGhvbnkgTGFuZGVyLy4KIAorKiog b3JnLW1hYy1tYWlsLWxpbmsgLS0gSHlwZXJsaW5rIHRvIG1lc3NhZ2VzIGluIE1haWwuYXBwCisg ICBBIHNtYWxsIGVsaXNwIGZpbGUgdGhhdCBhZGRyZXNzZXMgbGlua2luZyB0byBNYWlsLmFwcCBt ZXNzYWdlcworICAgZGlyZWN0bHkgdmlhIHRoZSA9b3JnLWNhcHR1cmU9IHN5c3RlbS4gRm9yIHdp ZGVyIGFwcGxpY2F0aW9uCisgICBzdXBwb3J0IGNoZWNrIG91dCBbW2ZpbGU6b3JnLWNvbnRyaWIv b3JnLW1hYy1saW5rLm9yZ11bb3JnLW1hYy1saW5rXV0uCisKICogRm9yIHVzZSBvdXRzaWRlIEVt YWNzCiAKICAgUHVzaCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGlu dG8gb3JnLW1vZGUuCi0tIAoyLjMwLjEKCg== --000000000000ff401105c15f09fb--