]> git.eshelyaron.com Git - emacs.git/commitdiff
(eww-switch-to-buffer): Don't let-bind `completion-extra-properties`
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 17 May 2025 16:34:33 +0000 (12:34 -0400)
committerEshel Yaron <me@eshelyaron.com>
Wed, 21 May 2025 06:09:12 +0000 (08:09 +0200)
* lisp/net/eww.el (eww--buffer-p): New function.
(eww-switch-to-buffer): Use it.  And set `completion-extra-properties`
buffer-locally rather than let-binding it.

(cherry picked from commit f77f464637c6ce86d5d69963543f86bc517ad14c)

lisp/net/eww.el

index ffcc47d87472c6212290b272d3cacd25cdc63e24..db13497f356c32f7c40ba793d2e01263a3f035ec 100644 (file)
@@ -2292,26 +2292,31 @@ If CHARSET is nil then use UTF-8."
       (eww-reload nil 'utf-8)
     (eww-reload nil charset)))
 
+(defun eww--buffer-p (buf)
+  (provided-mode-derived-p (buffer-local-value 'major-mode buf)
+                           'eww-mode))
+
 (defun eww-switch-to-buffer ()
   "Prompt for an EWW buffer to display in the selected window."
   (interactive nil eww-mode)
-  (let ((completion-extra-properties
-         `(:annotation-function
-           ,(lambda (buf)
-              (with-current-buffer buf
-                (format " %s" (eww-current-url))))))
+  (let ((list (cl-loop for buf in (nreverse (buffer-list))
+                       if (eww--buffer-p buf)
+                       return buf))
         (curbuf (current-buffer)))
     (pop-to-buffer-same-window
-     (read-buffer "Switch to EWW buffer: "
-                  (cl-loop for buf in (nreverse (buffer-list))
-                           if (with-current-buffer buf (derived-mode-p 'eww-mode))
-                           return buf)
-                  t
-                  (lambda (bufn)
-                    (setq bufn (if (consp bufn) (cdr bufn) (get-buffer bufn)))
-                    (and (with-current-buffer bufn
-                           (derived-mode-p 'eww-mode))
-                         (not (eq bufn curbuf))))))))
+     (minibuffer-with-setup-hook
+         (lambda ()
+           (setq-local completion-extra-properties
+                       `(:annotation-function
+                         ,(lambda (buf)
+                            (with-current-buffer buf
+                              (format " %s" (eww-current-url)))))))
+       (read-buffer "Switch to EWW buffer: "
+                    list t
+                    (lambda (bufn)
+                      (setq bufn (or (cdr-safe bufn) (get-buffer bufn)))
+                      (and (eww--buffer-p bufn)
+                           (not (eq bufn curbuf)))))))))
 
 (defun eww-toggle-fonts ()
   "Toggle whether to use monospaced or font-enabled layouts."