Mettre à jour
Ce comportement a été discuté dans le bogue # 34374 et fusionné le 2019-02-15 .
Ainsi, dans Emacs 27, l'appel eww
avec un argument préfixe lui indique d'utiliser un nouveau tampon au lieu de réutiliser le *eww*
tampon par défaut .
Je suis surpris que cette fonctionnalité ne soit pas seulement intégrée. Suis-je juste en train de le manquer?
Oui et non. Des fonctionnalités similaires ont été ajoutées dans Emacs 26 en tant que commande eww-open-in-new-buffer
, qui est liée aux M-RETtampons EWW par défaut:
eww-open-in-new-buffer is an interactive compiled Lisp function in
‘eww.el’.
It is bound to M-RET, <menu-bar> <Eww> <Follow URL in new buffer>.
(eww-open-in-new-buffer)
Fetch link at point in a new EWW buffer.
Le seul problème est qu'au moment de l'écriture, cette commande se limite à fonctionner uniquement dans les tampons EWW. En particulier, il lance un user-error
si aucun lien significatif n'est trouvé au point, comme déterminé par l'option utilisateur eww-suggest-uris
:
eww-suggest-uris is a variable defined in ‘eww.el’.
Its value is
(eww-links-at-point url-get-url-at-point eww-current-url)
Documentation:
List of functions called to form the list of default URIs for ‘eww’.
Each of the elements is a function returning either a string or a list
of strings. The results will be joined into a single list with
duplicate entries (if any) removed.
You can customize this variable.
This variable was introduced, or its default value was changed, in
version 25.1 of Emacs.
Une autre limitation de la commande est qu'elle ne demande pas à l'utilisateur une URL ou des termes de recherche, comme le eww
ferait la commande .
Voici un exemple simple de la façon dont vous pouvez combler ces différences entre eww
et eww-open-in-new-buffer
:
(defun my-eww-new-buffer (url)
"Like `eww', but fetch URL in a new EWW buffer."
(interactive (advice-eval-interactive-spec (cadr (interactive-form 'eww))))
(let ((eww-suggest-uris (list (lambda () url))))
(eww-open-in-new-buffer)))
Ce que cela fait, c'est d'abord appeler la interactive
spécification de eww
, qui demande des URL ou des termes de recherche comme d'habitude. Il appelle ensuite eww-open-in-new-buffer
avec les URL ou les termes de recherche précédemment entrés comme seul URI suggéré, afin que la commande ne fasse pas de crise.
Cette commande fonctionnera à la fois dans et sans les tampons EWW, elle peut donc agir comme un remplacement de remplacement pour la valeur par défaut eww-open-in-new-buffer
, si vous préférez:
(with-eval-after-load 'eww
(define-key eww-mode-map [remap eww-open-in-new-buffer] #'my-eww-new-buffer))
Quoi qu'il en soit, vous pouvez l'invoquer de n'importe où M-xmy-eww-new-buffer
RETou le lier globalement à une clé plus pratique.
eww
avec un argument préfixe; voir ma réponse ci-dessous.