Re: [PATCH v1 1/1] emacs: Easy access to URLs mentioned in the current message
David Edmondson writes: > Add a new binding when looking at messages, B, that prompts with a > list of URLs found in the current message, if any. Open the one that > is selected in a browser. pushed, amended as discussed. d ___ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v1 1/1] emacs: Easy access to URLs mentioned in the current message
David Edmondson writes: > On Thursday, 2019-03-28 at 08:23:37 -03, David Bremner wrote: > >> David Edmondson writes: >> >> >>> +(defun notmuch-show--browse-urls () >>> + "Offer to browse any URLs in the current message." >>> + (interactive) >>> + (let ((urls (notmuch-show--gather-urls))) >>> +(if urls >>> + (browse-url (completing-read "Browse URL: " (cdr urls) nil nil (car >>> urls))) >>> + (message "No URLs found." >>> + >>> (provide 'notmuch-show) >> >> It's a minor point, but should this really have -- to signal a private >> function? It's bound to key which sortof makes it defacto public, no? > > Yes. > > Do you want an updated patch or will you fix it on the fly? > I can fix it. d ___ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v1 1/1] emacs: Easy access to URLs mentioned in the current message
On Thursday, 2019-03-28 at 08:23:37 -03, David Bremner wrote: > David Edmondson writes: > > >> +(defun notmuch-show--browse-urls () >> + "Offer to browse any URLs in the current message." >> + (interactive) >> + (let ((urls (notmuch-show--gather-urls))) >> +(if urls >> +(browse-url (completing-read "Browse URL: " (cdr urls) nil nil (car >> urls))) >> + (message "No URLs found." >> + >> (provide 'notmuch-show) > > It's a minor point, but should this really have -- to signal a private > function? It's bound to key which sortof makes it defacto public, no? Yes. Do you want an updated patch or will you fix it on the fly? dme. -- I'm catching up with myself! ___ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v1 1/1] emacs: Easy access to URLs mentioned in the current message
David Edmondson writes: > +(defun notmuch-show--browse-urls () > + "Offer to browse any URLs in the current message." > + (interactive) > + (let ((urls (notmuch-show--gather-urls))) > +(if urls > + (browse-url (completing-read "Browse URL: " (cdr urls) nil nil (car > urls))) > + (message "No URLs found." > + > (provide 'notmuch-show) It's a minor point, but should this really have -- to signal a private function? It's bound to key which sortof makes it defacto public, no? d ___ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v1 1/1] emacs: Easy access to URLs mentioned in the current message
Add a new binding when looking at messages, B, that prompts with a list of URLs found in the current message, if any. Open the one that is selected in a browser. --- Based on ideas from `rcirc-browse-url'. emacs/notmuch-show.el | 29 + 1 file changed, 29 insertions(+) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 78f1af47..3f478bb6 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1511,6 +1511,7 @@ reset based on the original query." (define-key map "<" 'notmuch-show-toggle-thread-indentation) (define-key map "t" 'toggle-truncate-lines) (define-key map "." 'notmuch-show-part-map) +(define-key map "B" 'notmuch-show--browse-urls) map) "Keymap for \"notmuch show\" buffers.") (fset 'notmuch-show-mode-map notmuch-show-mode-map) @@ -1573,6 +1574,8 @@ All currently available key bindings: ;; region a->b is not found when point is at b. We walk backwards ;; until finding the property. (defun notmuch-show-message-extent () + "Return a cons cell containing the start and end buffer offset +of the current message." (let (r) (save-excursion (while (not (setq r (get-text-property (point) :notmuch-message-extent))) @@ -2519,6 +2522,32 @@ beginning of the line." (point)) (line-end-position))) +(defmacro notmuch-show--with-currently-shown-message (&rest body) + "Evaluate BODY with display restricted to the currently shown +message." + `(save-excursion + (save-restriction + (let ((extent (notmuch-show-message-extent))) + (narrow-to-region (car extent) (cdr extent)) + ,@body + +(defun notmuch-show--gather-urls () + "Gather any URLs in the current message." + (notmuch-show--with-currently-shown-message + (let (urls) + (goto-char (point-min)) + (while (re-search-forward goto-address-url-regexp (point-max) t) + (push (match-string-no-properties 0) urls)) + (reverse urls + +(defun notmuch-show--browse-urls () + "Offer to browse any URLs in the current message." + (interactive) + (let ((urls (notmuch-show--gather-urls))) +(if urls + (browse-url (completing-read "Browse URL: " (cdr urls) nil nil (car urls))) + (message "No URLs found." + (provide 'notmuch-show) ;;; notmuch-show.el ends here -- 2.19.1 ___ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch