ปรับปรุง
ลักษณะการทำงานนี้ได้รับการกล่าวถึงในข้อผิดพลาด # 34374และกลมกลืนบน2019/02/15
ดังนั้นใน Emacs 27 การเรียกeww
ด้วยอาร์กิวเมนต์ prefixจะบอกให้ใช้บัฟเฟอร์ใหม่แทนการใช้*eww*
บัฟเฟอร์เริ่มต้นใหม่
ฉันประหลาดใจที่ฟังก์ชั่นนี้ไม่ได้มีมาให้ในตัว ฉันเพิ่งจะหายไปหรือไม่
ใช่และไม่. ฟังก์ชันที่คล้ายกันถูกเพิ่มใน Emacs 26 เป็นคำสั่งeww-open-in-new-buffer
ซึ่งถูกผูกไว้M-RETในบัฟเฟอร์ EWW โดยค่าเริ่มต้น:
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.
ปัญหาเดียวก็คือว่าในขณะที่เขียนคำสั่งนี้ถูก จำกัด ให้ทำงานเฉพาะในบัฟเฟอร์ EWW โดยเฉพาะอย่างยิ่งมันจะส่งuser-error
ลิงก์หากไม่พบลิงก์ที่มีความหมาย ณ จุดที่กำหนดโดยตัวเลือกผู้ใช้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.
ข้อ จำกัด เพิ่มเติมของคำสั่งคือไม่ให้ผู้ใช้ใส่ URL หรือคำค้นหาตามที่คำสั่งeww
จะใช้
นี่คือตัวอย่างง่ายๆของวิธีที่คุณสามารถเชื่อมความแตกต่างระหว่างeww
และ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)))
สิ่งนี้จะเป็นสายแรกinteractive
ข้อมูลจำเพาะของeww
ที่แจ้งสำหรับ URL หรือคำค้นหาได้ตามปกติ จากนั้นเรียกใช้eww-open-in-new-buffer
ด้วย URL อินพุตหรือคำค้นหาก่อนหน้านี้เป็น URI ที่แนะนำเท่านั้นดังนั้นคำสั่งจะไม่ส่งเสียงฉุนเฉียว
คำสั่งนี้จะทำงานทั้งภายในและไม่มีบัฟเฟอร์ EWW ดังนั้นจึงสามารถทำหน้าที่แทนการดรอปอินสำหรับค่าเริ่มต้นeww-open-in-new-buffer
ได้หากคุณต้องการ:
(with-eval-after-load 'eww
(define-key eww-mode-map [remap eww-open-in-new-buffer] #'my-eww-new-buffer))
ไม่ว่าจะด้วยวิธีใดคุณสามารถเรียกใช้จากที่ใดก็ได้M-xmy-eww-new-buffer
RETหรือผูกไว้ทั่วโลกกับคีย์ที่สะดวกกว่า
eww
ด้วยอาร์กิวเมนต์คำนำหน้า; ดูคำตอบของฉันด้านล่าง