Aktualisieren
Dieses Verhalten wurde in Fehler # 34374 besprochen und am 15.02.2019 zusammengeführt .
Wenn Sie in Emacs 27 eww
mit einem Präfixargument aufrufen , wird ein neuer Puffer verwendet, anstatt den Standardpuffer *eww*
wiederzuverwenden.
Ich bin überrascht, dass diese Funktionalität nicht nur integriert ist. Vermisse ich es nur?
Ja und nein. In Emacs 26 wurde eine ähnliche Funktionalität hinzugefügt wie der Befehl eww-open-in-new-buffer
, an den M-RETstandardmäßig in EWW-Puffern gebunden ist :
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.
Das einzige Problem ist, dass dieser Befehl zum Zeitpunkt des Schreibens nur in EWW-Puffern ausgeführt werden kann. Insbesondere wird ein user-error
Punkt ausgelöst, wenn an der Stelle kein aussagekräftiger Link gefunden wird, wie durch die Benutzeroption festgelegt 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.
Eine weitere Einschränkung des Befehls besteht darin, dass der Benutzer nicht wie im Befehl nach einer URL oder Suchbegriffen gefragt wird eww
.
Hier ist ein einfaches Beispiel, wie Sie diese Unterschiede zwischen eww
und überbrücken können 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)))
Was dies bedeutet ist erster Aufruf der interactive
Spezifikation von eww
, die Eingabeaufforderungen für URLs oder Begriffe wie gewohnt suchen. Anschließend wird eww-open-in-new-buffer
mit den zuvor eingegebenen URLs oder Suchbegriffen als einziger vorgeschlagener URI aufgerufen, sodass der Befehl keinen Wutanfall auslöst.
Dieser Befehl funktioniert sowohl innerhalb als auch außerhalb von EWW-Puffern, sodass er als Ersatz für die Standardeinstellung dienen kann eww-open-in-new-buffer
, wenn Sie Folgendes bevorzugen:
(with-eval-after-load 'eww
(define-key eww-mode-map [remap eww-open-in-new-buffer] #'my-eww-new-buffer))
In beiden Fällen können Sie es von überall aus aufrufen M-xmy-eww-new-buffer
REToder global an einen bequemeren Schlüssel binden.
eww
mit einem Präfixargument. siehe meine Antwort unten.