1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Extract gnus-collect-urls-from-article' from gnus-summary-browse-url'

* lisp/gnus-sum.el (gnus-collect-urls-from-article):
New function, extracted from `gnus-summary-browse-url'.
(gnus-summary-browse-url): Use it.
This commit is contained in:
Sam Steingold 2022-03-15 12:22:48 -04:00
parent b63f325e2e
commit d932e256a4

View 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.