Function: eww-list-buffers
eww-list-buffers is an interactive and byte-compiled function defined
in eww.el.gz.
Signature
(eww-list-buffers)
Documentation
Enlist eww buffers.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/net/eww.el.gz
;;; eww buffers list
(defun eww-list-buffers ()
"Enlist eww buffers."
(interactive)
(let (buffers-info
(current (current-buffer)))
(dolist (buffer (buffer-list))
(with-current-buffer buffer
(when (derived-mode-p 'eww-mode)
(push (vector buffer (plist-get eww-data :title)
(plist-get eww-data :url))
buffers-info))))
(unless buffers-info
(error "No eww buffers"))
(setq buffers-info (nreverse buffers-info)) ;more recent on top
(set-buffer (get-buffer-create "*eww buffers*"))
(eww-buffers-mode)
(let ((inhibit-read-only t)
(domain-length 0)
(title-length 0)
url title format start)
(erase-buffer)
(dolist (buffer-info buffers-info)
(setq title-length (max title-length
(length (elt buffer-info 1)))
domain-length (max domain-length
(length (elt buffer-info 2)))))
(setq format (format "%%-%ds %%-%ds" title-length domain-length)
header-line-format
(concat " " (format format "Title" "URL")))
(let ((line 0)
(current-buffer-line 1))
(dolist (buffer-info buffers-info)
(setq start (point)
title (elt buffer-info 1)
url (elt buffer-info 2)
line (1+ line))
(insert (format format title url))
(insert "\n")
(let ((buffer (elt buffer-info 0)))
(put-text-property start (1+ start) 'eww-buffer
buffer)
(when (eq current buffer)
(setq current-buffer-line line))))
(goto-char (point-min))
(forward-line (1- current-buffer-line)))))
(pop-to-buffer "*eww buffers*"))