From: Daniel Mendler via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 74730@debbugs.gnu.org
Subject: bug#74730: [PATCH] 30.0.92; eww-browse-with-external-browser and eww-follow-link should use browse-url-with-browser-kind
Date: Sun, 08 Dec 2024 18:39:28 +0100 [thread overview]
Message-ID: <87h67e3whb.fsf@daniel-mendler.de> (raw)
In-Reply-To: <86msh6fggg.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 08 Dec 2024 15:32:31 +0200")
[-- Attachment #1: Type: text/plain, Size: 2936 bytes --]
Eli Zaretskii <eliz@gnu.org> writes:
Updated patch attached.
>> (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).
>
> This doc string should explain the assumptions about this and the
> other variable, browse-url-browser-function: that either one or the
> other invokes the external browser, and the other one should then NOT
> do the same. Users should be aware and understand the rules of the
> game here, which are now slightly more complex than they were before,
> so removing the previous assumption without replacing it with anything
> makes the doc string less useful.
I expanded the docstring.
>> (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)
>
> I think we should allow here (and document) more just 2 literal
> functions hard-coded in this command. Perhaps some special property
> on the function's symbol? Then these two specific functions can be
> supported via the property, and what's more important, users and
> applications could use other functions with the same semantics.
In this case I think it is better to use `browse-url-with-browser-kind'
as I had initially suggested. This will be better than introducing yet
another property only for this purpose.
>> (defun eww-follow-link (&optional external mouse-event)
>> "Browse the URL under point.
>> If EXTERNAL is single prefix, browse the URL using
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> What does this mean? does it mean that EXTERNAL is non-nil in
> interactive usage if the command is invoked with C-u? If so, let's
> say that. (Yes, I know that problem came from the original doc
> string.)
I improved the docstring.
>> @@ -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)
>
> I'm not sure I agree. The call to eww-browse-with-external-browser
> will no longer ensure an external browser is used, after these
> changes. Why not call browse-url-default-browser instead?
Now, it is ensured that the external browser is called.
Daniel
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-eww-Use-browse-url-with-browser-kind-in-eww-browse-w.patch --]
[-- Type: text/x-diff, Size: 4170 bytes --]
From f56022cc4b1f9c007ba583ece8f2c714a92eefc6 Mon Sep 17 00:00:00 2001
From: Daniel Mendler <mail@daniel-mendler.de>
Date: Sat, 7 Dec 2024 22:56:15 +0100
Subject: [PATCH] eww: Use browse-url-with-browser-kind in
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' only if it is an
external browser, otherwise fall back to
`browse-url-with-browser-kind'.
(eww-follow-link): Use `eww-browse-with-external-browser' if the
EXTERNAL prefix argument is non-nil. Improve docstring.
* lisp/net/browse-url.el
(browse-url-secondary-browser-function): Update docstring.
---
lisp/net/browse-url.el | 14 ++++++++++----
lisp/net/eww.el | 23 ++++++++++++++---------
2 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index c10bc671a88..8ec025d017b 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -198,10 +198,16 @@ 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 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 `browse-url-at-point',
+`goto-addr-at-point', eww or shr).
+
+This assumption is that `browse-url-secondary-browser-function'
+and `browse-url-browser-function' are set to distinct browsers.
+Either one of the two functions should call an external browser
+and the other one should not do the same.
Also see `browse-url-browser-function'."
:version "27.1"
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 4d4d4d6beac..4609755a902 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -2142,11 +2142,15 @@ 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."
+Use `browse-url-secondary-browser-function' if it is an external
+browser, otherwise use `browse-url-with-browser-kind' to open an
+external browser."
(interactive nil eww-mode)
- (funcall browse-url-secondary-browser-function
- (or url (plist-get eww-data :url))))
+ (setq url (or url (plist-get eww-data :url)))
+ (if (eq 'external (browse-url--browser-kind
+ browse-url-secondary-browser-function url))
+ (funcall browse-url-secondary-browser-function url)
+ (browse-url-with-browser-kind 'external url)))
(defun eww-remove-tracking (url)
"Remove the commong utm_ tracking cookies from URLs."
@@ -2160,11 +2164,12 @@ eww--transform-url
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'.
+ "Browse the URL at point, optionally the position of MOUSE-EVENT.
-If EXTERNAL is double prefix, browse in new buffer."
+EXTERNAL is the prefix argument. If called interactively with
+\\[universal-argument] pressed once, browse the URL using
+`eww-browse-with-external-browser'. If called interactively, with
+\\[universal-argument] pressed twice, browse in new buffer."
(interactive
(list current-prefix-arg last-nonmenu-event)
eww-mode)
@@ -2180,7 +2185,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
next prev parent reply other threads:[~2024-12-08 17:39 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-07 22:02 bug#74730: [PATCH] 30.0.92; eww-browse-with-external-browser and eww-follow-link should use browse-url-with-browser-kind Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-08 5:57 ` Eli Zaretskii
2024-12-08 6:13 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-08 7:03 ` Eli Zaretskii
2024-12-08 7:27 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-08 12:02 ` Eli Zaretskii
2024-12-08 13:00 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-12-08 13:32 ` Eli Zaretskii
2024-12-08 17:39 ` Daniel Mendler via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2024-12-12 10:42 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87h67e3whb.fsf@daniel-mendler.de \
--to=bug-gnu-emacs@gnu.org \
--cc=74730@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=mail@daniel-mendler.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.