From: Protesilaos Stavrou <info@protesilaos.com>
To: Lars Ingebrigtsen <larsi@gnus.org>
Cc: 51176@debbugs.gnu.org, Yuchen Pei <hi@ypei.me>,
Abhiseck Paira <abhiseckpaira@disroot.org>,
Juri Linkov <juri@linkov.net>
Subject: bug#51176: eww switch buffer by title
Date: Fri, 15 Oct 2021 09:31:55 +0300 [thread overview]
Message-ID: <87bl3qiysk.fsf@protesilaos.com> (raw)
In-Reply-To: <87r1co1x8f.fsf@gnus.org>
[-- Attachment #1: Type: text/plain, Size: 764 bytes --]
On 2021-10-13, 22:33 +0200, Lars Ingebrigtsen <larsi@gnus.org> wrote:
> Protesilaos Stavrou <info@protesilaos.com> writes:
>
>> In terms of user options, there would be a toggle to enable the
>> behaviour (off by default to not upset existing users) as well as a
>> defcustom with ":type 'function", so users can specify exactly how the
>> renaming scheme should work.
>
> Sounds good to me.
Hello again!
Please find attached the patch which implements a renaming scheme for
EWW buffers. I include Abhiseck, the co-author of this patch, in Cc.
What do you think?
We had entertained the notion of a single defcustom with more options,
but ultimately decided against it on the grounds that it was more
complex.
--
Protesilaos Stavrou
https://protesilaos.com
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Implement-auto-renaming-scheme-for-eww-buffers.patch --]
[-- Type: text/x-patch, Size: 3580 bytes --]
From add8dabc4f3f33707f069865794ec53b2e0e4037 Mon Sep 17 00:00:00 2001
Message-Id: <add8dabc4f3f33707f069865794ec53b2e0e4037.1634279302.git.info@protesilaos.com>
From: Protesilaos Stavrou <info@protesilaos.com>
Date: Fri, 15 Oct 2021 09:24:04 +0300
Subject: [PATCH] Implement auto-renaming scheme for eww buffers
* etc/NEWS: Document the new feature.
* lisp/net/eww.el (eww-auto-rename-buffer-function): Introduce user
option to specify the function which performs the renaming.
(eww-auto-rename-buffer-flag): Add toggle to control the behaviour,
keeping it off by default in order not to surprise existing users.
(eww--rename-buffer): Write function to rename buffers.
(eww-render): Call 'eww--rename-buffer' at the post-render phase, if
appropriate.
Fix bug#51176.
Co-authored-by: Abhiseck Paira <abhiseckpaira@disroot.org>
Co-authored-by: Protesilaos Stavrou <info@protesilaos.com>
---
etc/NEWS | 11 +++++++++++
lisp/net/eww.el | 26 ++++++++++++++++++++++++++
2 files changed, 37 insertions(+)
diff --git a/etc/NEWS b/etc/NEWS
index 7dd4d14274..54d554ee0b 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -89,6 +89,17 @@ Customize this option to limit the amount of entries in the menu
\f
* Changes in Specialized Modes and Packages in Emacs 29.1
+** eww
+
+---
+*** New user option to automatically rename EWW buffers
+When 'eww-auto-rename-buffer-flag' is set to a non-nil value, all
+rendered web pages will have their buffer renamed from the generic
+"*eww*" to a name that includes the web page's title or, if that is
+absent, its URL. The renaming scheme is controlled by the user option
+'eww-auto-rename-buffer-function'. By default, no automatic renaming
+is performed.
+
** image-dired
---
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 24c6335210..2104d09696 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -178,6 +178,21 @@ (defcustom eww-after-render-hook nil
:group 'eww
:type 'hook)
+(defcustom eww-auto-rename-buffer-function #'eww--rename-buffer
+ "Function to rename EWW buffer.
+The function is called just before the `eww-after-render-hook' if
+`eww-auto-rename-buffer-flag' is non-nil."
+ :version "29.1"
+ :group 'eww
+ :type 'function)
+
+(defcustom eww-auto-rename-buffer-flag nil
+ "When non-nil rename EWW buffers after they are rendered.
+Renaming is controlled by `eww-auto-rename-buffer-function'."
+ :version "29.1"
+ :group 'eww
+ :type 'boolean)
+
(defcustom eww-form-checkbox-selected-symbol "[X]"
"Symbol used to represent a selected checkbox.
See also `eww-form-checkbox-symbol'."
@@ -502,6 +517,15 @@ (defun eww-html-p (content-type)
(member content-type '("text/html"
"application/xhtml+xml")))
+(defun eww--rename-buffer ()
+ "Rename the current EWW buffer.
+Use the page's title or URL as an identifier."
+ (when (eq major-mode 'eww-mode)
+ (when-let ((title (or (plist-get eww-data :title)
+ (plist-get eww-data :url))))
+ (rename-buffer
+ (format "*%s # eww*" (truncate-string-to-width title 40)) t))))
+
(defun eww-render (status url &optional point buffer encode)
(let* ((headers (eww-parse-headers))
(content-type
@@ -556,6 +580,8 @@ (defun eww-render (status url &optional point buffer encode)
(setq eww-history-position 0)
(and last-coding-system-used
(set-buffer-file-coding-system last-coding-system-used))
+ (and eww-auto-rename-buffer-flag
+ (funcall eww-auto-rename-buffer-function))
(run-hooks 'eww-after-render-hook)))
(kill-buffer data-buffer))))
--
2.33.0
next prev parent reply other threads:[~2021-10-15 6:31 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-13 4:56 bug#51176: eww switch buffer by title Yuchen Pei
2021-10-13 11:52 ` Lars Ingebrigtsen
2021-10-13 12:15 ` Yuchen Pei
2021-10-13 12:54 ` Lars Ingebrigtsen
2021-10-13 16:28 ` Juri Linkov
2021-10-13 16:47 ` Lars Ingebrigtsen
2021-10-13 17:31 ` Juri Linkov
2021-10-13 18:14 ` Lars Ingebrigtsen
2021-10-13 20:31 ` Protesilaos Stavrou
2021-10-13 20:33 ` Lars Ingebrigtsen
2021-10-15 6:31 ` Protesilaos Stavrou [this message]
2021-10-15 8:32 ` miha--- via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-10-15 10:35 ` Lars Ingebrigtsen
2021-10-15 11:22 ` Protesilaos Stavrou
2021-10-15 12:13 ` Lars Ingebrigtsen
2021-10-15 13:25 ` Jose Antonio Ortega Ruiz
2021-10-15 14:00 ` Lars Ingebrigtsen
2021-10-15 19:59 ` Jose Antonio Ortega Ruiz
2021-10-16 4:16 ` Protesilaos Stavrou
2021-10-16 4:20 ` Protesilaos Stavrou
2021-10-16 14:31 ` Jose Antonio Ortega Ruiz
2021-10-18 6:43 ` Lars Ingebrigtsen
2021-10-18 7:15 ` Protesilaos Stavrou
2021-10-18 7:16 ` Lars Ingebrigtsen
2021-10-13 21:26 ` Yuchen Pei
2021-10-14 0:16 ` bug#51176: [External] : " Drew Adams
2021-10-13 23:48 ` Yuchen Pei
2021-10-14 11:06 ` Lars Ingebrigtsen
2021-10-14 16:05 ` Juri Linkov
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87bl3qiysk.fsf@protesilaos.com \
--to=info@protesilaos.com \
--cc=51176@debbugs.gnu.org \
--cc=abhiseckpaira@disroot.org \
--cc=hi@ypei.me \
--cc=juri@linkov.net \
--cc=larsi@gnus.org \
/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 public inbox
https://git.savannah.gnu.org/cgit/emacs.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).