>From 9d782ed2123b34fd09268f6c83305d7d9d4acf7d Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Sat, 7 Dec 2024 22:56:15 +0100 Subject: [PATCH] eww: Improve eww-browse-with-external-browser Guarantee that an external browser is used by EWW if `browse-url-secondary-browser-function' is set to `eww-browse-url'. * lisp/net/eww.el (eww-browse-with-external-browser): Use `browse-url-secondary-browser-function' if it does not correspond to EWW, otherwise fall back to `browse-url'. (eww-follow-link): Use `eww-browse-with-external-browser' if the EXTERNAL prefix argument is non-nil. * lisp/net/browse-url.el (browse-url-secondary-browser-function): Update docstring. --- lisp/net/browse-url.el | 8 ++++---- lisp/net/eww.el | 14 ++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index c10bc671a88..c9d8b2ee80d 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -198,10 +198,10 @@ browse-url-browser-function (defcustom browse-url-secondary-browser-function 'browse-url-default-browser "Function used to launch an alternative browser. -This is usually an external browser (that is, not eww or w3m), -used as the secondary browser choice, typically when a prefix -argument is given to a URL-opening command in those modes that -support this (for instance, eww/shr). + +This is browser is used as the secondary browser choice, typically +when a prefix argument is given to a URL-opening command in those +modes that support this (for instance `goto-addr-at-point', eww or shr). Also see `browse-url-browser-function'." :version "27.1" diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 4d4d4d6beac..b2d295a4dcf 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -2142,10 +2142,13 @@ eww-submit (defun eww-browse-with-external-browser (&optional url) "Browse the current URL with an external browser. -The browser to used is specified by the -`browse-url-secondary-browser-function' variable." +Calls `browse-url-secondary-browser-function' if it does not correspond +to EWW. Otherwise `browse-url' is used." (interactive nil eww-mode) - (funcall browse-url-secondary-browser-function + (funcall (if (memq browse-url-secondary-browser-function + '(eww eww-browse-url)) + #'browse-url + browse-url-secondary-browser-function) (or url (plist-get eww-data :url)))) (defun eww-remove-tracking (url) @@ -2162,8 +2165,7 @@ eww--transform-url (defun eww-follow-link (&optional external mouse-event) "Browse the URL under point. If EXTERNAL is single prefix, browse the URL using -`browse-url-secondary-browser-function'. - +`eww-browse-with-external-browser'. If EXTERNAL is double prefix, browse in new buffer." (interactive (list current-prefix-arg last-nonmenu-event) @@ -2180,7 +2182,7 @@ eww-follow-link ;; and `browse-url-mailto-function'. (browse-url url)) ((and (consp external) (<= (car external) 4)) - (funcall browse-url-secondary-browser-function url) + (eww-browse-with-external-browser url) (shr--blink-link)) ;; This is a #target url in the same page as the current one. ((and (setq target (url-target (url-generic-parse-url url))) -- 2.45.2