* hackernews & gnus-summary-browse-url @ 2022-03-07 21:44 Sam Steingold 2022-03-07 23:40 ` Eric Abrahamsen 0 siblings, 1 reply; 13+ messages in thread From: Sam Steingold @ 2022-03-07 21:44 UTC (permalink / raw) To: ding Hi, I read gwene.com.ycombinator.news where each article is 2 words: --8<---------------cut here---------------start------------->8--- Comments Link --8<---------------cut here---------------end--------------->8--- both are links. "w" (gnus-summary-browse-url) opens one of then ("Link" by default) while I would rather open _both_. What are my options? 1. Modify `gnus-summary-browseurl' so that when the prefix arg is a number, it opens all the urls returned by `gnus-collect-urls'. (The ordinary C-u prefix is used for selecting `browse-url-secondary-browser-function'). -- drawback: unlikely to be welcomed in the trunk 2. Hit "w" twice: "w RET cmd-TAB w TAB TAB RET" -- drawback: too many keystrokes 3. Make `gnus-collect-urls-primary-text' have value "Comments" when in the YN group (using `gnus-summary-prepare-hook'?) This way "w RET" will give me comments and the comments always have a link to the article. -- drawback: I get just the comments and have to click again to get the article 2*3. Hit "w TAB TAB RET" yuk Ideally, the *Article* buffer should not be shown at all, but this is a bonus... Please note that this is only relevant to one single group (which has extra high volume, so efficiency is needed). Suggestions are welcome. -- Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.2113 http://childpsy.net http://calmchildstories.com http://steingoldpsychology.com https://www.peaceandtolerance.org/ http://think-israel.org I don't know how many problems I have because math is one of them. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-07 21:44 hackernews & gnus-summary-browse-url Sam Steingold @ 2022-03-07 23:40 ` Eric Abrahamsen 2022-03-08 15:05 ` Sam Steingold 0 siblings, 1 reply; 13+ messages in thread From: Eric Abrahamsen @ 2022-03-07 23:40 UTC (permalink / raw) To: ding Sam Steingold <sds@gnu.org> writes: > Hi, > I read gwene.com.ycombinator.news where each article is 2 words: > > Comments > > Link > > both are links. Opening hackernews links was exactly why I wrote `gnus-summary-browse-url' in the first place :) > "w" (gnus-summary-browse-url) opens one of then ("Link" by default) > while I would rather open _both_. > > What are my options? Set `gnus-collect-urls-primary-text' to nil. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-07 23:40 ` Eric Abrahamsen @ 2022-03-08 15:05 ` Sam Steingold 2022-03-08 15:23 ` Lars Ingebrigtsen 2022-03-08 16:35 ` dick 0 siblings, 2 replies; 13+ messages in thread From: Sam Steingold @ 2022-03-08 15:05 UTC (permalink / raw) To: ding > * Eric Abrahamsen <revp@revpnoenunzfra.arg> [2022-03-07 15:40:31 -0800]: > >> "w" (gnus-summary-browse-url) opens one of then ("Link" by default) >> while I would rather open _both_. >> >> What are my options? > > Set `gnus-collect-urls-primary-text' to nil. Nah, this just affects the _default_ for "w". It does not let me open _both_ URLs in _one_ keystroke. It also screws up the rest of gnus, where I _do_ want `gnus-collect-urls-primary-text' to be "Link". -- Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.2113 http://childpsy.net http://calmchildstories.com http://steingoldpsychology.com https://thereligionofpeace.com https://mideasttruth.com https://ij.org/ Things that cannot be programmed in assembler have to be soldered. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-08 15:05 ` Sam Steingold @ 2022-03-08 15:23 ` Lars Ingebrigtsen 2022-03-08 15:56 ` Eric Abrahamsen 2022-03-08 20:50 ` Sam Steingold 2022-03-08 16:35 ` dick 1 sibling, 2 replies; 13+ messages in thread From: Lars Ingebrigtsen @ 2022-03-08 15:23 UTC (permalink / raw) To: Sam Steingold; +Cc: ding Sam Steingold <sds@gnu.org> writes: > Nah, this just affects the _default_ for "w". > It does not let me open _both_ URLs in _one_ keystroke. > It also screws up the rest of gnus, where I _do_ want > `gnus-collect-urls-primary-text' to be "Link". I use: (require 'gnus-sum) (define-key gnus-summary-mode-map "w" (lambda () (interactive) (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 (car urls)) (if target (funcall browse-url-secondary-browser-function target) (message "No URLs found.")))))) Alter to open both (car urls) and (car (last urls)). -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-08 15:23 ` Lars Ingebrigtsen @ 2022-03-08 15:56 ` Eric Abrahamsen 2022-03-08 15:58 ` Lars Ingebrigtsen 2022-03-08 20:50 ` Sam Steingold 1 sibling, 1 reply; 13+ messages in thread From: Eric Abrahamsen @ 2022-03-08 15:56 UTC (permalink / raw) To: ding Lars Ingebrigtsen <larsi@gnus.org> writes: > Sam Steingold <sds@gnu.org> writes: > >> Nah, this just affects the _default_ for "w". >> It does not let me open _both_ URLs in _one_ keystroke. >> It also screws up the rest of gnus, where I _do_ want >> `gnus-collect-urls-primary-text' to be "Link". > > I use: > > (require 'gnus-sum) > (define-key gnus-summary-mode-map > "w" (lambda () > (interactive) > (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 (car urls)) > (if target > (funcall browse-url-secondary-browser-function target) > (message "No URLs found.")))))) > > Alter to open both (car urls) and (car (last urls)). Isn't that just about what `gnus-summary-browse-url' does anyway? ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-08 15:56 ` Eric Abrahamsen @ 2022-03-08 15:58 ` Lars Ingebrigtsen 0 siblings, 0 replies; 13+ messages in thread From: Lars Ingebrigtsen @ 2022-03-08 15:58 UTC (permalink / raw) To: Eric Abrahamsen; +Cc: ding Eric Abrahamsen <eric@ericabrahamsen.net> writes: > Isn't that just about what `gnus-summary-browse-url' does anyway? Yes. But the example code should be trivial to alter to do what he wants. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-08 15:23 ` Lars Ingebrigtsen 2022-03-08 15:56 ` Eric Abrahamsen @ 2022-03-08 20:50 ` Sam Steingold 2022-03-09 12:04 ` Lars Ingebrigtsen 1 sibling, 1 reply; 13+ messages in thread From: Sam Steingold @ 2022-03-08 20:50 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: ding > * Lars Ingebrigtsen <ynefv@tahf.bet> [2022-03-08 16:23:58 +0100]: > > Sam Steingold <sds@gnu.org> writes: > >> Nah, this just affects the _default_ for "w". >> It does not let me open _both_ URLs in _one_ keystroke. >> It also screws up the rest of gnus, where I _do_ want >> `gnus-collect-urls-primary-text' to be "Link". > > I use: > > (require 'gnus-sum) > (define-key gnus-summary-mode-map > "w" (lambda () > (interactive) > (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 (car urls)) > (if target > (funcall browse-url-secondary-browser-function target) > (message "No URLs found.")))))) > > Alter to open both (car urls) and (car (last urls)). If you use it yourself, would you mind if I apply this patch? --8<---------------cut here---------------start------------->8--- diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 1be5a48068..09170ff8ac 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -2010,6 +2010,7 @@ :keymap "s" #'gnus-summary-isearch-article "TAB" #'gnus-summary-button-forward "<backtab>" #'gnus-summary-button-backward + "v" #'gnus-summary-browse-all-urls "w" #'gnus-summary-browse-url "t" #'gnus-summary-toggle-header "g" #'gnus-summary-show-article @@ -2196,6 +2197,7 @@ :keymap "s" #'gnus-summary-isearch-article "TAB" #'gnus-summary-button-forward "<backtab>" #'gnus-summary-button-backward + "v" #'gnus-summary-browse-all-urls "w" #'gnus-summary-browse-url "P" #'gnus-summary-print-article "S" #'gnus-sticky-article @@ -9445,6 +9447,16 @@ gnus-collect-urls (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) @@ -9456,37 +9468,38 @@ gnus-shorten-url (concat "#" target))))) (concat host (string-truncate-left rest (- max (length host))))))) -(defun gnus-summary-browse-url (&optional external) +(defun gnus-summary-browse-url (&optional _external) "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 + (browse-url-button-open-url target) + (message "No URLs found.")))) + +(defun gnus-summary-browse-all-urls (&optional _external) + "Scan the current article body for links, and browse them. + +Links are opened using `browse-url' unless a prefix argument is +given: then `browse-url-secondary-browser-function' is used instead." + (interactive "P" gnus-summary-mode) + (dolist (url (gnus-collect-urls-from-article)) + (browse-url-button-open-url url))) (defun gnus-summary-isearch-article (&optional regexp-p) "Do incremental search forward on the current article. --8<---------------cut here---------------end--------------->8--- -- Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.2113 http://childpsy.net http://calmchildstories.com http://steingoldpsychology.com https://www.peaceandtolerance.org/ https://thereligionofpeace.com Yellow wine is called "white" because it is made out of green grapes. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-08 20:50 ` Sam Steingold @ 2022-03-09 12:04 ` Lars Ingebrigtsen 2022-03-09 19:41 ` Sam Steingold 0 siblings, 1 reply; 13+ messages in thread From: Lars Ingebrigtsen @ 2022-03-09 12:04 UTC (permalink / raw) To: Sam Steingold; +Cc: ding Sam Steingold <sds@gnu.org> writes: > If you use it yourself, would you mind if I apply this patch? [...] > + "v" #'gnus-summary-browse-all-urls I'm not sure that's generally useful enough to have as its own command -- people will want to open different subsets of URLs in these cases, and you kinda have to write some code for that. [...] > -(defun gnus-summary-browse-url (&optional external) > +(defun gnus-summary-browse-url (&optional _external) > "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. And why are you removing the EXTERNAL logic? ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-09 12:04 ` Lars Ingebrigtsen @ 2022-03-09 19:41 ` Sam Steingold 2022-03-09 19:50 ` Eric Abrahamsen 2022-03-12 17:38 ` Lars Ingebrigtsen 0 siblings, 2 replies; 13+ messages in thread From: Sam Steingold @ 2022-03-09 19:41 UTC (permalink / raw) To: ding > * Lars Ingebrigtsen <ynefv@tahf.bet> [2022-03-09 13:04:29 +0100]: > > Sam Steingold <sds@gnu.org> writes: > >> If you use it yourself, would you mind if I apply this patch? > > [...] > >> + "v" #'gnus-summary-browse-all-urls > > I'm not sure that's generally useful enough to have as its own > command -- people will want to open different subsets of URLs in these > cases, and you kinda have to write some code for that. Right, but sometimes you want to open _all_ URLs, and this is a simple way. I can add bells and whistles (e.g., open _matching_ URLs), but that's an overkill for now. >> -(defun gnus-summary-browse-url (&optional external) >> +(defun gnus-summary-browse-url (&optional _external) >> "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. > > And why are you removing the EXTERNAL logic? I am NOT! I am merely moving this logic to browse-url-button-open-url where it has been since it has been introduced! -- Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.2113 http://childpsy.net http://calmchildstories.com http://steingoldpsychology.com https://jij.org https://memri.org https://www.dhimmitude.org There are two ways to win an argument with a woman. Neither works. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-09 19:41 ` Sam Steingold @ 2022-03-09 19:50 ` Eric Abrahamsen 2022-03-09 21:20 ` Sam Steingold 2022-03-12 17:38 ` Lars Ingebrigtsen 1 sibling, 1 reply; 13+ messages in thread From: Eric Abrahamsen @ 2022-03-09 19:50 UTC (permalink / raw) To: ding Sam Steingold <sds@gnu.org> writes: >> * Lars Ingebrigtsen <ynefv@tahf.bet> [2022-03-09 13:04:29 +0100]: >> >> Sam Steingold <sds@gnu.org> writes: >> >>> If you use it yourself, would you mind if I apply this patch? >> >> [...] >> >>> + "v" #'gnus-summary-browse-all-urls >> >> I'm not sure that's generally useful enough to have as its own >> command -- people will want to open different subsets of URLs in these >> cases, and you kinda have to write some code for that. > > Right, but sometimes you want to open _all_ URLs, and this is a simple > way. > I can add bells and whistles (e.g., open _matching_ URLs), but that's an > overkill for now. It's so easy to write a wrapper around `gnus-collect-urls' I can't help thinking this would be better off as a personal function that behaves just the way you (personally) want it to... ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-09 19:50 ` Eric Abrahamsen @ 2022-03-09 21:20 ` Sam Steingold 0 siblings, 0 replies; 13+ messages in thread From: Sam Steingold @ 2022-03-09 21:20 UTC (permalink / raw) To: ding > * Eric Abrahamsen <revp@revpnoenunzfra.arg> [2022-03-09 11:50:45 -0800]: > > Sam Steingold <sds@gnu.org> writes: > >> I can add bells and whistles (e.g., open _matching_ URLs), but that's an >> overkill for now. > > It's so easy to write a wrapper around `gnus-collect-urls' I can't help > thinking this would be better off as a personal function that behaves > just the way you (personally) want it to... Thanks, that's what I said too. -- Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.2113 http://childpsy.net http://calmchildstories.com http://steingoldpsychology.com https://jij.org https://ffii.org https://mideasttruth.com https://iris.org.il Life is a sexually transmitted disease with 100% mortality. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-09 19:41 ` Sam Steingold 2022-03-09 19:50 ` Eric Abrahamsen @ 2022-03-12 17:38 ` Lars Ingebrigtsen 1 sibling, 0 replies; 13+ messages in thread From: Lars Ingebrigtsen @ 2022-03-12 17:38 UTC (permalink / raw) To: Sam Steingold; +Cc: ding Sam Steingold <sds@gnu.org> writes: > Right, but sometimes you want to open _all_ URLs, and this is a simple > way. > I can add bells and whistles (e.g., open _matching_ URLs), but that's an > overkill for now. Like I said, I think what people want here has such a wide range of possibilities that it's better of they just write some simple code. > I am NOT! > I am merely moving this logic to browse-url-button-open-url where it has > been since it has been introduced! Ah, I'd forgotten that `browse-url-button-open-url' has a really weird calling convention -- it just responds to `browse-url-button-open-url' no matter how it's called. Probably due to the button machinery making it difficult to have a more traditional interface? ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: hackernews & gnus-summary-browse-url 2022-03-08 15:05 ` Sam Steingold 2022-03-08 15:23 ` Lars Ingebrigtsen @ 2022-03-08 16:35 ` dick 1 sibling, 0 replies; 13+ messages in thread From: dick @ 2022-03-08 16:35 UTC (permalink / raw) To: Sam Steingold; +Cc: ding Not exactly what you want, but close enough: (add-hook 'gnus-summary-mode-hook (lambda () (require 'url-http) (defvar url-http-end-of-headers) (when (equal (gnus-group-real-name gnus-newsgroup-name) "gwene.com.ycombinator.news") (make-local-variable 'gnus-article-prepare-hook) (add-to-list 'gnus-article-prepare-hook (lambda () (when (and (buffer-live-p (get-buffer gnus-original-article-buffer)) (buffer-live-p (get-buffer gnus-article-buffer))) (with-current-buffer gnus-original-article-buffer (when-let ((found (re-search-forward "\"\\([^\"]+\\)\">Comments" nil t)) (url (match-string 1)) (resbuf (url-retrieve-synchronously url t nil 5))) (unwind-protect (with-current-buffer gnus-article-buffer (let ((inhibit-read-only t)) (message-goto-body) (save-excursion (delete-region (point) (point-max))) (shr-insert-document (with-current-buffer resbuf (libxml-parse-html-region (1+ url-http-end-of-headers) (point-max)))))) (kill-buffer resbuf)))))))))) ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2022-03-12 17:38 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-03-07 21:44 hackernews & gnus-summary-browse-url Sam Steingold 2022-03-07 23:40 ` Eric Abrahamsen 2022-03-08 15:05 ` Sam Steingold 2022-03-08 15:23 ` Lars Ingebrigtsen 2022-03-08 15:56 ` Eric Abrahamsen 2022-03-08 15:58 ` Lars Ingebrigtsen 2022-03-08 20:50 ` Sam Steingold 2022-03-09 12:04 ` Lars Ingebrigtsen 2022-03-09 19:41 ` Sam Steingold 2022-03-09 19:50 ` Eric Abrahamsen 2022-03-09 21:20 ` Sam Steingold 2022-03-12 17:38 ` Lars Ingebrigtsen 2022-03-08 16:35 ` dick
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 NNTP newsgroup(s).