]> git.eshelyaron.com Git - emacs.git/commitdiff
Extract `gnus-collect-urls-from-article' from `gnus-summary-browse-url'
authorSam Steingold <sds@gnu.org>
Tue, 15 Mar 2022 16:22:48 +0000 (12:22 -0400)
committerSam Steingold <sds@gnu.org>
Tue, 15 Mar 2022 16:22:48 +0000 (12:22 -0400)
* lisp/gnus-sum.el (gnus-collect-urls-from-article):
New function, extracted from `gnus-summary-browse-url'.
(gnus-summary-browse-url): Use it.

lisp/gnus/gnus-sum.el

index 1be5a48068c6b156e29f7d738fd4c8f355d5feae..769ad6d9eb1d2bba7056a87f2cfb7b848999c046 100644 (file)
@@ -9445,6 +9445,16 @@ The 1st element is the button named by `gnus-collect-urls-primary-text'."
       (push primary urls))
     (delete-dups urls)))
 
+(defun gnus-collect-urls-from-article ()
+  "Select the article and return the list of URLs in it.
+See 'gnus-collect-urls'."
+  (gnus-summary-select-article)
+  (gnus-with-article-buffer
+    (article-goto-body)
+    ;; Back up a char, in case body starts with a button.
+    (backward-char)
+    (gnus-collect-urls)))
+
 (defun gnus-shorten-url (url max)
   "Return an excerpt from URL not exceeding MAX characters."
   (if (<= (length url) max)
@@ -9460,33 +9470,27 @@ The 1st element is the button named by `gnus-collect-urls-primary-text'."
   "Scan the current article body for links, and offer to browse them.
 
 Links are opened using `browse-url' unless a prefix argument is
-given: Then `browse-url-secondary-browser-function' is used instead.
+given: then `browse-url-secondary-browser-function' is used instead.
 
 If only one link is found, browse that directly, otherwise use
 completion to select a link.  The first link marked in the
 article text with `gnus-collect-urls-primary-text' is the
 default."
   (interactive "P" gnus-summary-mode)
-  (let (urls target)
-    (gnus-summary-select-article)
-    (gnus-with-article-buffer
-      (article-goto-body)
-      ;; Back up a char, in case body starts with a button.
-      (backward-char)
-      (setq urls (gnus-collect-urls))
-      (setq target
-           (cond ((= (length urls) 1)
-                  (car urls))
-                 ((> (length urls) 1)
-                  (completing-read
-                   (format-prompt "URL to browse"
-                                  (gnus-shorten-url (car urls) 40))
-                   urls nil t nil nil (car urls)))))
-      (if target
-         (if external
-             (funcall browse-url-secondary-browser-function target)
-           (browse-url target))
-       (message "No URLs found.")))))
+  (let* ((urls (gnus-collect-urls-from-article))
+         (target
+         (cond ((= (length urls) 1)
+                (car urls))
+               ((> (length urls) 1)
+                (completing-read
+                 (format-prompt "URL to browse"
+                                (gnus-shorten-url (car urls) 40))
+                 urls nil t nil nil (car urls))))))
+    (if target
+       (if external
+           (funcall browse-url-secondary-browser-function target)
+         (browse-url target))
+      (message "No URLs found."))))
 
 (defun gnus-summary-isearch-article (&optional regexp-p)
   "Do incremental search forward on the current article.