emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master db83df1: Extract gnus-collect-urls from gnus-summar


From: Sam Steingold
Subject: [Emacs-diffs] master db83df1: Extract gnus-collect-urls from gnus-summary-browse-url
Date: Mon, 1 Jul 2019 09:20:14 -0400 (EDT)

branch: master
commit db83df1e29989928153ccd92222776d3362d6b26
Author: Sam Steingold <address@hidden>
Commit: Sam Steingold <address@hidden>

    Extract gnus-collect-urls from gnus-summary-browse-url
    
    * lisp/gnus/gnus-sum.el (gnus-collect-urls): Extract from ...
    (gnus-summary-browse-url): Use it here.
    Extracting URLs from an article will be useful in BBDB interaction.
---
 lisp/gnus/gnus-sum.el | 31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 621ba3e..acc4132 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -9434,6 +9434,19 @@ With optional ARG, move across that many fields."
       (goto-char (point-max)))
     (widget-backward arg)))
 
+(defun gnus-collect-urls ()
+  "Return the list of URLs in the buffer after (point)."
+  (let ((pt (point)) urls)
+    (while (progn (widget-forward 1)
+                 ;; `widget-forward' wraps around to top of buffer.
+                 (> (point) pt))
+      (setq pt (point))
+      (when-let ((u (or (get-text-property (point) 'shr-url)
+                       (get-text-property (point) 'gnus-string))))
+       (when (string-match-p "\\`[[:alpha:]]+://" u)
+         (push u urls))))
+    (nreverse (delete-dups urls))))
+
 (defun gnus-summary-browse-url (arg)
   "Scan the current article body for links, and offer to browse them.
 With prefix ARG, also collect links from message headers.
@@ -9441,7 +9454,7 @@ With prefix ARG, also collect links from message headers.
 Links are opened using `browse-url'.  If only one link is found,
 browse that directly, otherwise use completion to select a link."
   (interactive "P")
-  (let (pt urls target)
+  (let (urls target)
     (gnus-summary-select-article)
     (gnus-configure-windows 'article)
     (gnus-with-article-buffer
@@ -9450,24 +9463,12 @@ browse that directly, otherwise use completion to 
select a link."
        (article-goto-body)
        ;; Back up a char, in case body starts with a widget.
        (backward-char))
-      (setq pt (point))
-      (while (progn (widget-forward 1)
-                   ;; `widget-forward' wraps around to top of
-                   ;; buffer.
-                   (> (point) pt))
-       (setq pt (point))
-       (when-let ((u (or (get-text-property (point) 'shr-url)
-                         (get-text-property (point) 'gnus-string))))
-         (when (string-match-p "\\`[[:alpha:]]+://" u)
-           (push u urls))))
+      (setq urls (gnus-collect-urls))
       (setq target
            (cond ((= (length urls) 1)
                   (car urls))
                  ((> (length urls) 1)
-                  (completing-read
-                   "URL to browse: "
-                   (setq urls (nreverse (delete-dups urls)))
-                   nil t))))
+                  (completing-read "URL to browse: " urls nil t))))
       (if target
          (browse-url target)
        (message "No URLs found.")))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]