GNU bug report logs -
#37592
Using tabs in EWW
Previous Next
Reported by: Juri Linkov <juri <at> linkov.net>
Date: Wed, 2 Oct 2019 20:34:02 UTC
Severity: wishlist
Tags: patch
Done: Juri Linkov <juri <at> linkov.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#37592: Using tabs in EWW
which was filed against the emacs package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 37592 <at> debbugs.gnu.org.
--
37592: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=37592
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
>> I agree, let's try this heuristics to open new tabs
>> when tab-bar-mode is enabled:
>
> Looks good to me, too.
I also updated the Info documentation on opening tabs by 'C-u RET'.
but can't find a suitable place to describe using tabs on clicking
with the Ctrl key, because currently the EWW documentation has
no mentions of mouse commands.
[Message part 3 (message/rfc822, inline)]
[Message part 4 (text/plain, inline)]
Severity: wishlist
Tags: patch
Like <C-mouse-1> in web browsers opens links in a new tab,
the attached patch does the same for EWW.
The change that implements support for tabs in EWW is just 3 lines:
(when eww-browse-url-new-window-is-tab
(let ((tab-bar-new-tab-choice t))
(tab-new)))
Everything else is replicating the existing code:
1. A new defcustom eww-browse-url-new-window-is-tab is a copy
of existing browse-url-firefox-new-window-is-tab
2. The docstring for eww-browse-url is copied from browse-url-firefox
3. The code for shr-browse-url is copied from browse-url-at-point
[eww-tabs.patch (text/x-diff, inline)]
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index fb495a9858..a39f8b87cc 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -876,9 +876,32 @@ eww-mode
(buffer-disable-undo)
(setq buffer-read-only t))
+(defcustom eww-browse-url-new-window-is-tab nil
+ "Whether to open up new windows in a tab or a new buffer.
+If non-nil, then open the URL in a new tab rather than a new buffer if
+`eww-browse-url' is asked to open it in a new window."
+ :version "27.1"
+ :group 'eww
+ :type 'boolean)
+
;;;###autoload
(defun eww-browse-url (url &optional new-window)
+ "Ask the EWW browser to load URL.
+
+Interactively, if the variable `browse-url-new-window-flag' is non-nil,
+loads the document in a new buffer tab on the window tab-line. A non-nil
+prefix argument reverses the effect of `browse-url-new-window-flag'.
+
+If `eww-browse-url-new-window-is-tab' is non-nil, then
+whenever a document would otherwise be loaded in a new buffer, it
+is loaded in a new tab in the tab-bar on an existing frame.
+
+Non-interactively, this uses the optional second argument NEW-WINDOW
+instead of `browse-url-new-window-flag'."
(when new-window
+ (when eww-browse-url-new-window-is-tab
+ (let ((tab-bar-new-tab-choice t))
+ (tab-new)))
(pop-to-buffer-same-window
(generate-new-buffer
(format "*eww-%s*" (url-host (url-generic-parse-url
diff --git a/lisp/net/shr.el b/lisp/net/shr.el
index ef236bf7c4..390be4deff 100644
--- a/lisp/net/shr.el
+++ b/lisp/net/shr.el
@@ -201,6 +201,7 @@ shr-map
(define-key map [?\M-\t] 'shr-previous-link)
(define-key map [follow-link] 'mouse-face)
(define-key map [mouse-2] 'shr-browse-url)
+ (define-key map [C-down-mouse-1] 'shr-mouse-browse-url-new-window)
(define-key map "I" 'shr-insert-image)
(define-key map "w" 'shr-maybe-probe-and-copy-url)
(define-key map "u" 'shr-maybe-probe-and-copy-url)
@@ -967,7 +968,13 @@ shr-mouse-browse-url
(mouse-set-point ev)
(shr-browse-url))
-(defun shr-browse-url (&optional external mouse-event)
+(defun shr-mouse-browse-url-new-window (ev)
+ "Browse the URL under the mouse cursor in a new window."
+ (interactive "e")
+ (mouse-set-point ev)
+ (shr-browse-url nil nil t))
+
+(defun shr-browse-url (&optional external mouse-event new-window)
"Browse the URL at point using `browse-url'.
If EXTERNAL is non-nil (interactively, the prefix argument), browse
the URL using `browse-url-secondary-browser-function'.
@@ -987,7 +994,9 @@ shr-browse-url
(progn
(funcall browse-url-secondary-browser-function url)
(shr--blink-link))
- (browse-url url))))))
+ (browse-url url (if new-window
+ (not browse-url-new-window-flag)
+ browse-url-new-window-flag)))))))
(defun shr-save-contents (directory)
"Save the contents from URL in a file."
This bug report was last modified 5 years and 213 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.