From 535e2bef6dd7b9abe2567f865c8b24a06a555178 Mon Sep 17 00:00:00 2001 From: Mark Oteiza Date: Thu, 4 Feb 2016 18:00:37 +1100 Subject: [PATCH] Add a new command to switch between erc buffers * doc/misc/eww.texi: Document eww-switch-to-buffer and its keybinding * etc/NEWS: Mention new command * lisp/net/eww.el (eww-mode-map): Bind eww-switch-to-buffer to "s" (eww-mode-map): Add menu item (eww-switch-to-buffer): New command --- doc/misc/eww.texi | 6 +++++- etc/NEWS | 5 +++++ lisp/net/eww.el | 20 ++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi index 0e9bedbe1d0..afb1cafb744 100644 --- a/doc/misc/eww.texi +++ b/doc/misc/eww.texi @@ -164,12 +164,16 @@ You can view stored bookmarks with @kbd{B} (@code{eww-list-bookmarks}). This will open the bookmark buffer @file{*eww bookmarks*}. +@findex eww-switch-to-buffer @findex eww-list-buffers +@kindex s @kindex S @cindex Multiple Buffers To get summary of currently opened EWW buffers, press @kbd{S} (@code{eww-list-buffers}). The @file{*eww buffers*} buffer allows you -to quickly kill, flip through and switch to specific EWW buffer. +to quickly kill, flip through and switch to specific EWW buffer. To +switch EWW buffers through a minibuffer prompt, press @kbd{s} +(@code{eww-switch-to-buffer}). @findex eww-browse-with-external-browser @vindex shr-external-browser diff --git a/etc/NEWS b/etc/NEWS index 31504325587..faf49b0b335 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -52,6 +52,11 @@ in these situations. * Changes in Specialized Modes and Packages in Emacs 25.2 +** eww + ++++ +*** A new `s' command for switching to another eww buffer via the minibuffer. + +++ ** The commands that add ChangeLog entries now prefer a VCS root directory for the ChangeLog file, if none already exists. Customize diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 503651c9a38..bc74a0d31d2 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -689,6 +689,7 @@ the like." (define-key map "R" 'eww-readable) (define-key map "H" 'eww-list-histories) (define-key map "E" 'eww-set-character-encoding) + (define-key map "s" 'eww-switch-to-buffer) (define-key map "S" 'eww-list-buffers) (define-key map "F" 'eww-toggle-fonts) (define-key map [(meta C)] 'eww-toggle-colors) @@ -712,6 +713,7 @@ the like." ["View page source" eww-view-source] ["Copy page URL" eww-copy-page-url t] ["List histories" eww-list-histories t] + ["Switch to buffer" eww-switch-to-buffer t] ["List buffers" eww-list-buffers t] ["Add bookmark" eww-add-bookmark t] ["List bookmarks" eww-list-bookmarks t] @@ -1498,6 +1500,24 @@ If CHARSET is nil then use UTF-8." (eww-reload nil 'utf-8) (eww-reload nil charset))) +(defun eww-switch-to-buffer () + "Prompt for an EWW buffer to display in the selected window." + (interactive) + (let ((completion-extra-properties + '(:annotation-function (lambda (buf) + (with-current-buffer buf + (format " %s" (eww-current-url))))))) + (switch-to-buffer + (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) + (with-current-buffer + (if (consp bufn) (cdr bufn) (get-buffer bufn)) + (derived-mode-p 'eww-mode))))))) + (defun eww-toggle-fonts () "Toggle whether to use monospaced or font-enabled layouts." (interactive) -- 2.39.2