Memperbarui
Perilaku ini dibahas dalam bug # 34374 dan bergabung pada 2019-02-15 .
Jadi dalam Emacs 27, memanggil eww
dengan argumen awalan memberitahu untuk menggunakan buffer baru alih-alih menggunakan kembali *eww*
buffer default .
Saya terkejut fungsi ini bukan hanya bawaan. Apakah saya hanya melewatkannya?
Iya dan tidak. Fungsionalitas serupa ditambahkan di Emacs 26 sebagai perintah eww-open-in-new-buffer
, yang terikat M-RETpada buffer EWW secara default:
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.
Satu-satunya masalah adalah bahwa, pada saat penulisan, perintah ini terbatas hanya berfungsi di buffer EWW. Secara khusus, ia melempar user-error
jika tidak ada tautan yang berarti ditemukan di titik, sebagaimana ditentukan oleh opsi pengguna 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.
Batasan lebih lanjut dari perintah ini adalah tidak meminta pengguna untuk URL atau istilah pencarian, seperti yang eww
akan dilakukan oleh perintah .
Berikut adalah contoh sederhana tentang bagaimana Anda dapat menjembatani perbedaan antara eww
dan 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)))
Apa yang dilakukan adalah panggilan pertama interactive
spesifikasi dari eww
, yang petunjuknya untuk URL atau istilah pencarian seperti biasa. Ini kemudian memanggil eww-open-in-new-buffer
dengan URL input sebelumnya atau istilah pencarian sebagai satu-satunya URI yang disarankan, sehingga perintah tidak membuat ulah.
Perintah ini akan berfungsi baik di dalam maupun tanpa buffer EWW, sehingga dapat bertindak sebagai pengganti drop-in untuk default eww-open-in-new-buffer
, jika Anda lebih suka:
(with-eval-after-load 'eww
(define-key eww-mode-map [remap eww-open-in-new-buffer] #'my-eww-new-buffer))
Apa pun itu, Anda dapat memintanya dari mana saja M-xmy-eww-new-buffer
RETatau mengikatnya secara global ke kunci yang lebih nyaman.
eww
dengan argumen awalan; lihat jawaban saya di bawah ini.