* How to use `open` to handle `message:*` links on macOS @ 2021-01-11 19:44 Tim Visher 2021-01-11 21:57 ` Diego Zamboni 2021-01-15 14:12 ` Alexander Adolf 0 siblings, 2 replies; 11+ messages in thread From: Tim Visher @ 2021-01-11 19:44 UTC (permalink / raw) To: Emacs Org Mode mailing list [-- Attachment #1: Type: text/plain, Size: 347 bytes --] Hi Everyone, I'd like to be able to whack `C-c C-o` on `message:*` links on macOS and have it call `open` on the contents. Is there a way to make that happen? My intent is to be able to save a deep link to a Mail.app message in an org document. Thanks in advance! -- In Christ, Timmy V. https://blog.twonegatives.com http://five.sentenc.es [-- Attachment #2: Type: text/html, Size: 557 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: How to use `open` to handle `message:*` links on macOS 2021-01-11 19:44 How to use `open` to handle `message:*` links on macOS Tim Visher @ 2021-01-11 21:57 ` Diego Zamboni 2021-01-15 14:12 ` Alexander Adolf 1 sibling, 0 replies; 11+ messages in thread From: Diego Zamboni @ 2021-01-11 21:57 UTC (permalink / raw) To: Tim Visher; +Cc: Emacs Org Mode mailing list [-- Attachment #1: Type: text/plain, Size: 574 bytes --] Hi Tim, Look at the org-mac-link package from org-contrib, it allows doing this for Mail.app and other Msc apps. --Diego On Mon, 11 Jan 2021 at 20:47, Tim Visher <tim.visher@gmail.com> wrote: > Hi Everyone, > > I'd like to be able to whack `C-c C-o` on `message:*` links on macOS and > have it call `open` on the contents. Is there a way to make that happen? > > My intent is to be able to save a deep link to a Mail.app message in an > org document. > > Thanks in advance! > > -- > > In Christ, > > Timmy V. > > https://blog.twonegatives.com > http://five.sentenc.es > [-- Attachment #2: Type: text/html, Size: 1213 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: How to use `open` to handle `message:*` links on macOS 2021-01-11 19:44 How to use `open` to handle `message:*` links on macOS Tim Visher 2021-01-11 21:57 ` Diego Zamboni @ 2021-01-15 14:12 ` Alexander Adolf 2021-04-29 16:21 ` Tim Visher 1 sibling, 1 reply; 11+ messages in thread From: Alexander Adolf @ 2021-01-15 14:12 UTC (permalink / raw) To: Tim Visher, Emacs Org Mode mailing list Hello Tim, Tim Visher <tim.visher@gmail.com> writes: > [...] > I'd like to be able to whack `C-c C-o` on `message:*` links on macOS and > have it call `open` on the contents. Is there a way to make that happen? > > My intent is to be able to save a deep link to a Mail.app message in an org > document. > [...] In my setup, I'm using this: ---------------------------- Begin Quote ----------------------------- (org-add-link-type "mac-mail" 'org-mac-mail-link-open) (defun org-mac-mail-link-open (mid) "Visit the email message with message id MID." (start-process "open-mail" nil "open" (format "message:%%3C%s%%3E" mid))) ----------------------------- End Quote ------------------------------ It gives me a new link type "mac-mail" for org-insert-link. Copy the message ID (without the angle brackets) from Mail.app, and insert it as the link location. This is a manual process, of course, but then I'm not using it often, and I don't need it for anything else but Mail.app. org-mac-link as suggested by Diego offers much more convenience by automating the entire process, and by giving you access to many other apps, too. So you might prefer that if you are going to use it often. Hoping to have helped, --alex ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: How to use `open` to handle `message:*` links on macOS 2021-01-15 14:12 ` Alexander Adolf @ 2021-04-29 16:21 ` Tim Visher 2021-04-29 16:28 ` Diego Zamboni ` (2 more replies) 0 siblings, 3 replies; 11+ messages in thread From: Tim Visher @ 2021-04-29 16:21 UTC (permalink / raw) To: Alexander Adolf; +Cc: Emacs Org Mode mailing list [-- Attachment #1: Type: text/plain, Size: 2964 bytes --] Hi Diego and Alexander, Thanks for the tips here. I finally got around to trying them out. Here's what I ended up with and it's working perfectly. (defun timvisher-org-link-mac-mail-open-link (mid _) (start-process "open-link" nil "open" (format "message://%%3C%s%%3E" mid))) (defun timvisher-org-link-mac-mail-add-message-links () (org-link-set-parameters "message" :follow #'timvisher-org-link-mac-mail-open-link)) (eval-after-load 'org '(timvisher-org-link-mac-mail-add-message-links)) Pairing that with my org-capture TODO Current Mail Template is a dream come true. :) (defun timvisher-org-current-mail-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 timvisher-org-current-mail-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)") (browse-url-url-encode-chars (buffer-substring-no-properties (point-min) (- (point-max) 1)) "[/]"))) (defun timvisher-org-current-mail-get-link-string () (let ((subject (timvisher-org-current-mail-get-selected-message-subject)) (message-id (timvisher-org-current-mail-get-selected-message-id))) (org-link-make-string (format "message:%s" message-id) subject))) (defun timvisher-org-current-mail-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 (seq-reduce (lambda (acc next) (if (string= next (or (car (last acc)) "")) acc (append acc (list next)))) (mapcar (lambda (string) (let ((string (string-trim string))) (if (string= "" string) string (format " %s" string)))) (split-string body "\n")) '()) "\n")))) (setq org-capture-templates '(… ("twcm" "TODO Work Current Mail" entry (file+headline "~/Dropbox/todo/work.org" "Inbox") "* TODO %(timvisher-org-current-mail-get-link-string) %U%(timvisher-org-current-mail-get-body-quote-template-element)" :prepend t :immediate-finish t) …)) Thanks so much! :) [-- Attachment #2: Type: text/html, Size: 6720 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: How to use `open` to handle `message:*` links on macOS 2021-04-29 16:21 ` Tim Visher @ 2021-04-29 16:28 ` Diego Zamboni 2021-04-29 19:37 ` Tim Cross 2021-04-29 23:38 ` Alexander Adolf 2 siblings, 0 replies; 11+ messages in thread From: Diego Zamboni @ 2021-04-29 16:28 UTC (permalink / raw) To: Tim Visher; +Cc: Alexander Adolf, Emacs Org Mode mailing list [-- Attachment #1: Type: text/plain, Size: 3294 bytes --] Hi Tim, Cool - thanks for the code! I may use it to improve my email capture workflow :) --Diego On Thu, Apr 29, 2021 at 6:23 PM Tim Visher <tim.visher@gmail.com> wrote: > Hi Diego and Alexander, > > Thanks for the tips here. I finally got around to trying them out. Here's > what I ended up with and it's working perfectly. > > (defun timvisher-org-link-mac-mail-open-link > (mid _) > (start-process "open-link" nil "open" (format "message://%%3C%s%%3E" > mid))) > > (defun timvisher-org-link-mac-mail-add-message-links > () > (org-link-set-parameters > "message" :follow #'timvisher-org-link-mac-mail-open-link)) > > (eval-after-load 'org > '(timvisher-org-link-mac-mail-add-message-links)) > > Pairing that with my org-capture TODO Current Mail Template is a dream > come true. :) > > (defun timvisher-org-current-mail-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 timvisher-org-current-mail-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)") > (browse-url-url-encode-chars > (buffer-substring-no-properties (point-min) (- (point-max) 1)) > "[/]"))) > > (defun timvisher-org-current-mail-get-link-string > () > (let ((subject (timvisher-org-current-mail-get-selected-message-subject)) > (message-id (timvisher-org-current-mail-get-selected-message-id))) > (org-link-make-string (format "message:%s" message-id) > subject))) > > (defun timvisher-org-current-mail-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 > (seq-reduce > (lambda (acc next) > (if (string= next (or (car (last acc)) "")) > acc > (append acc (list next)))) > (mapcar (lambda (string) > (let ((string (string-trim string))) > (if (string= "" string) > string > (format " %s" string)))) > (split-string body "\n")) > '()) > "\n")))) > > (setq org-capture-templates > '(… > ("twcm" "TODO Work Current Mail" entry > (file+headline "~/Dropbox/todo/work.org" "Inbox") > "* TODO %(timvisher-org-current-mail-get-link-string) > %U%(timvisher-org-current-mail-get-body-quote-template-element)" :prepend t :immediate-finish t) > …)) > > Thanks so much! :) > [-- Attachment #2: Type: text/html, Size: 7121 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: How to use `open` to handle `message:*` links on macOS 2021-04-29 16:21 ` Tim Visher 2021-04-29 16:28 ` Diego Zamboni @ 2021-04-29 19:37 ` Tim Cross 2021-04-29 21:01 ` Tim Visher 2021-04-29 23:38 ` Alexander Adolf 2 siblings, 1 reply; 11+ messages in thread From: Tim Cross @ 2021-04-29 19:37 UTC (permalink / raw) To: emacs-orgmode Tim Visher <tim.visher@gmail.com> writes: > Hi Diego and Alexander, > > Thanks for the tips here. I finally got around to trying them out. Here's what I ended up with and it's working perfectly. > > (defun timvisher-org-link-mac-mail-open-link > (mid _) > (start-process "open-link" nil "open" (format "message://%%3C%s%%3E" > mid))) > > (defun timvisher-org-link-mac-mail-add-message-links > () > (org-link-set-parameters > "message" :follow #'timvisher-org-link-mac-mail-open-link)) > > (eval-after-load 'org > '(timvisher-org-link-mac-mail-add-message-links)) > > Pairing that with my org-capture TODO Current Mail Template is a dream come true. :) > > (defun timvisher-org-current-mail-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 timvisher-org-current-mail-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)") > (browse-url-url-encode-chars > (buffer-substring-no-properties (point-min) (- (point-max) 1)) > "[/]"))) > > (defun timvisher-org-current-mail-get-link-string > () > (let ((subject (timvisher-org-current-mail-get-selected-message-subject)) > (message-id (timvisher-org-current-mail-get-selected-message-id))) > (org-link-make-string (format "message:%s" message-id) > subject))) > > (defun timvisher-org-current-mail-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 > (seq-reduce > (lambda (acc next) > (if (string= next (or (car (last acc)) "")) > acc > (append acc (list next)))) > (mapcar (lambda (string) > (let ((string (string-trim string))) > (if (string= "" string) > string > (format " %s" string)))) > (split-string body "\n")) > '()) > "\n")))) > > (setq org-capture-templates > '(… > ("twcm" "TODO Work Current Mail" entry > (file+headline "~/Dropbox/todo/work.org" "Inbox") > "* TODO %(timvisher-org-current-mail-get-link-string) > > %U%(timvisher-org-current-mail-get-body-quote-template-element)" :prepend t :immediate-finish t) > …)) > > Thanks so much! :) I think this would be great content to add to the worg site. Would you be willing to add this, plus a short outline of the issue you needed to resolve so that others might benefit from your experience? -- Tim Cross ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: How to use `open` to handle `message:*` links on macOS 2021-04-29 19:37 ` Tim Cross @ 2021-04-29 21:01 ` Tim Visher 0 siblings, 0 replies; 11+ messages in thread From: Tim Visher @ 2021-04-29 21:01 UTC (permalink / raw) To: Tim Cross; +Cc: Emacs Org Mode mailing list [-- Attachment #1: Type: text/plain, Size: 738 bytes --] On Thu, Apr 29, 2021 at 3:40 PM Tim Cross <theophilusx@gmail.com> wrote: > > Tim Visher <tim.visher@gmail.com> writes: > > > Thanks for the tips here. I finally got around to trying them out. > Here's what I ended up with and it's working perfectly. > > > > … > > > > Pairing that with my org-capture TODO Current Mail Template is a dream > come true. :) > > > > … > > I think this would be great content to add to the worg site. Would you > be willing to add this, plus a short outline of the issue you needed to > resolve so that others might benefit from your experience? > I'd be happy to if you wouldn't mind shepherding me through the process a bit. How does one go about "add[ing] to the worg site"? :) [-- Attachment #2: Type: text/html, Size: 1150 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: How to use `open` to handle `message:*` links on macOS 2021-04-29 16:21 ` Tim Visher 2021-04-29 16:28 ` Diego Zamboni 2021-04-29 19:37 ` Tim Cross @ 2021-04-29 23:38 ` Alexander Adolf 2021-05-02 20:58 ` Tim Visher 2 siblings, 1 reply; 11+ messages in thread From: Alexander Adolf @ 2021-04-29 23:38 UTC (permalink / raw) To: Tim Visher; +Cc: Emacs Org Mode mailing list Hello Tim, Tim Visher <tim.visher@gmail.com> writes: > [...] > Thanks for the tips here. I finally got around to trying them out. Here's > what I ended up with and it's working perfectly. > [...] Glad I could be of assistance! > Pairing that with my org-capture TODO Current Mail Template is a dream come > true. :) > [...] That's interesting how you pull the information from Mail app. How do you trigger the capture? Do you have to select the message in Mail app, then move over to Emacs and trigger the capture there? or do you have a way to trigger the Emacs capture from within Mail app? The next level of productivity could perhaps be to switch to notmuch[1], and do all you email from within Emacs. Use yasnippet[2] for composing mails. And have snippets be presented to you by company[3]. Just saying... ;-) [1] https://notmuchmail.org/ [2] http://joaotavora.github.io/yasnippet/ [3] https://company-mode.github.io/ Cheers, --alexander ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: How to use `open` to handle `message:*` links on macOS 2021-04-29 23:38 ` Alexander Adolf @ 2021-05-02 20:58 ` Tim Visher 2021-05-06 17:04 ` Alexander Adolf 0 siblings, 1 reply; 11+ messages in thread From: Tim Visher @ 2021-05-02 20:58 UTC (permalink / raw) To: Alexander Adolf; +Cc: Emacs Org Mode mailing list [-- Attachment #1: Type: text/plain, Size: 1603 bytes --] Hi Alexander, On Thu, Apr 29, 2021 at 7:38 PM Alexander Adolf < alexander.adolf@condition-alpha.com> wrote: > Tim Visher <tim.visher@gmail.com> writes: > > > Pairing that with my org-capture TODO Current Mail Template is a dream > come > > true. :) > > [...] > > That's interesting how you pull the information from Mail app. > > How do you trigger the capture? Do you have to select the message in > Mail app, then move over to Emacs and trigger the capture there? or do > you have a way to trigger the Emacs capture from within Mail app? > > The next level of productivity could perhaps be to switch to notmuch[1], > and do all you email from within Emacs. Use yasnippet[2] for composing > mails. And have snippets be presented to you by company[3]. Just > saying... ;-) > > [1] https://notmuchmail.org/ > [2] http://joaotavora.github.io/yasnippet/ > [3] https://company-mode.github.io/ I do indeed trigger the capture by switching over to Emacs and whacking my org-capture keybinding (`C-c C`). I have a todo item that's been sitting in my list for a very long time to figure out how to move my email habits into emacs but I've never gotten around to it. In this case it's even worse because the only reason I'm using Mail.app in the first place is because my work email got moved to an Exchange server so I now don't have a good web based interface to read mail anymore like my beloved Gmail. One of these days though I'm going to break the habit and move email directly into Emacs. :) Thanks for the tips again! -- In Christ, Timmy V. https://blog.twonegatives.com http://five.sentenc.es [-- Attachment #2: Type: text/html, Size: 2502 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: How to use `open` to handle `message:*` links on macOS 2021-05-02 20:58 ` Tim Visher @ 2021-05-06 17:04 ` Alexander Adolf 2021-05-06 17:38 ` Tim Visher 0 siblings, 1 reply; 11+ messages in thread From: Alexander Adolf @ 2021-05-06 17:04 UTC (permalink / raw) To: Tim Visher; +Cc: Emacs Org Mode mailing list Hello Tim, Tim Visher <tim.visher@gmail.com> writes: > [...] > I do indeed trigger the capture by switching over to Emacs and whacking my > org-capture keybinding (`C-c C`). I have a todo item that's been sitting in > my list for a very long time to figure out how to move my email habits into > emacs but I've never gotten around to it. In this case it's even worse > because the only reason I'm using Mail.app in the first place is because my > work email got moved to an Exchange server so I now don't have a good web > based interface to read mail anymore like my beloved Gmail. > > One of these days though I'm going to break the habit and move email > directly into Emacs. :) I was in the exact same situation as you until about half a year ago, which was when I decided to (finally) act on my "move email to emacs" task. Coincidentally I have recently released a blog post covering some of the basic aspects of planning the switch: https://condition-alpha.com/blog/?p=1792 IMO, a decent amount up-front planning is crucial. With notmuch, emacs's mail message handling infrastructure, and elisp, anything is possible; the sky is the limit. Email is too central to our daily work to start with the defaults and see where it takes you (IMO). So think well what your dream email workflow is, and then work towards that. The smallest, and most isolated task is perhaps configuring msmtp for sending mail; so why not start with that? Importing existing mailboxes (from Apple's mail app in my case), is another important issue (which I'll cover in a future blog post). Once you've imported some mail, you can toy around with notmuch in emacs, and the settings, until you get a gist of how things work, and how far you are from your goal. Your everyday real work is still in Apple's mail app. Once you're confident that you'll be able to survive with your emacs setup, then you can make the move, and stop using Apple's mail app. If you start a big all-in-one migration, and it fails, you're left with a big mess. Thus, doing things step-by-step with an option to revert each step if it doesn't work, is crucial, too. Hoping to have helped, --alexander ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: How to use `open` to handle `message:*` links on macOS 2021-05-06 17:04 ` Alexander Adolf @ 2021-05-06 17:38 ` Tim Visher 0 siblings, 0 replies; 11+ messages in thread From: Tim Visher @ 2021-05-06 17:38 UTC (permalink / raw) To: Alexander Adolf; +Cc: Emacs Org Mode mailing list [-- Attachment #1: Type: text/plain, Size: 1008 bytes --] On Thu, May 6, 2021 at 1:04 PM Alexander Adolf < alexander.adolf@condition-alpha.com> wrote: > > Tim Visher <tim.visher@gmail.com> writes: > > > [...] > > > > One of these days though I'm going to break the habit and move email > > directly into Emacs. :) > > I was in the exact same situation as you until about half a year ago, > which was when I decided to (finally) act on my "move email to emacs" > task. > > Coincidentally I have recently released a blog post covering some of the > basic aspects of planning the switch: > > https://condition-alpha.com/blog/?p=1792 > > … > > The smallest, and most isolated task is perhaps configuring msmtp for > sending mail; so why not start with that? > > … > > If you start a big all-in-one migration, and it fails, you're left with > a big mess. Thus, doing things step-by-step with an option to revert > each step if it doesn't work, is crucial, too. > Great advice and info all around! Thanks so much. :) [-- Attachment #2: Type: text/html, Size: 1548 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2021-05-06 17:48 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-01-11 19:44 How to use `open` to handle `message:*` links on macOS Tim Visher 2021-01-11 21:57 ` Diego Zamboni 2021-01-15 14:12 ` Alexander Adolf 2021-04-29 16:21 ` Tim Visher 2021-04-29 16:28 ` Diego Zamboni 2021-04-29 19:37 ` Tim Cross 2021-04-29 21:01 ` Tim Visher 2021-04-29 23:38 ` Alexander Adolf 2021-05-02 20:58 ` Tim Visher 2021-05-06 17:04 ` Alexander Adolf 2021-05-06 17:38 ` Tim Visher
Code repositories for project(s) associated with this public 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).