Atualizar
Esse comportamento foi discutido no bug # 34374 e mesclado em 15/02/2019 .
Assim, no Emacs 27, chamar ewwcom um argumento prefix diz para usar um novo buffer em vez de reutilizar o *eww*buffer padrão .
Estou surpreso que essa funcionalidade não seja apenas incorporada. Eu só estou sentindo falta disso?
Sim e não. Funcionalidade semelhante foi adicionada no Emacs 26 como o comando eww-open-in-new-buffer, que está vinculado aos M-RETbuffers do EWW por padrão:
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.
O único problema é que, no momento da escrita, esse comando se limita a trabalhar apenas em buffers EWW. Em particular, ele lança um user-errorse nenhum link significativo for encontrado no momento, conforme determinado pela opção do usuário 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.
Uma limitação adicional do comando é que ele não solicita ao usuário um URL ou termos de pesquisa, como ewwseria o comando .
Aqui está um exemplo simples de como você pode superar essas diferenças entre ewwe 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)))
O que isto significa é primeira chamada a interactiveespecificação de ewwque prompts para URLs ou pesquisar termos como de costume. Em seguida, chama eww-open-in-new-buffercom os URLs inseridos anteriormente ou termos de pesquisa como o único URI sugerido, para que o comando não faça birra.
Este comando funcionará dentro e sem os buffers EWW, portanto, ele pode atuar como um substituto para o padrão eww-open-in-new-buffer, se você preferir:
(with-eval-after-load 'eww
(define-key eww-mode-map [remap eww-open-in-new-buffer] #'my-eww-new-buffer))
De qualquer forma, você pode invocá-lo de qualquer lugar M-xmy-eww-new-bufferRETou vinculá-lo globalmente a uma chave mais conveniente.
ewwcom um argumento de prefixo; veja minha resposta abaixo.