답변:
eww
자동으로 새 버퍼를 작성하지 않는 것이 맞습니다 . 그러나 나는 ergoemacs.org 에서이 트릭을 사용하고 있으며 훌륭하게 작동합니다!
아래의 평가판을 사용하면 비 eww 버퍼 M-x eww
에서 작업 할 때마다 고유 한 eww 버퍼가 생성됩니다.
;; Auto-rename new eww buffers
(defun xah-rename-eww-hook ()
"Rename eww browser's buffer so sites open in new page."
(rename-buffer "eww" t))
(add-hook 'eww-mode-hook #'xah-rename-eww-hook)
eww 버퍼에있는 동안 새 eww 버퍼를 생성하려면 아래의 조언을 평가하십시오 (새 eww
버퍼에 고유 한 이름이 할당 되도록 위의 평가를 계속해야 합니다).
;; C-u M-x eww will force a new eww buffer
(defun modi/force-new-eww-buffer (orig-fun &rest args)
"When prefix argument is used, a new eww buffer will be created,
regardless of whether the current buffer is in `eww-mode'."
(if current-prefix-arg
(with-temp-buffer
(apply orig-fun args))
(apply orig-fun args)))
(advice-add 'eww :around #'modi/force-new-eww-buffer)
rename-uniquely
정품 인증을하면 효과가 있지만, eww
비 우욱 버퍼를. 그러나 eww 버퍼에 있으면 모드가 변경되지 않기 때문에 후크가 실행되지 않습니다. 적어도 나는 그것이 일어나고 있다고 생각합니다.
M-x eww
비 eww 버퍼에서 수행하는 경우에만 의도 한대로 작동합니다 . eww 버퍼에있는 동안 새로운 eww 버퍼를 만들려는지 확실하지 않았습니다. 무언가를 생각해 내면 솔루션을 업데이트 할 것입니다. 나는 또한 최신 마스터 빌드에 있습니다.
eww
소스 코드에서 볼 수 있듯이 함수 디자인에 (pop-to-buffer-same-window (if (eq major-mode 'eww-mode) (current-buffer) (get-buffer-create "*eww*")))
있습니다.
최신 정보
이 문제는 논의 된 버그 # 34374 와의 합병 2019년 2월 15일 .
그래서 이맥스 (27)에 호출 eww
와 접두사 인수하는 것은 기본 재사용하는 대신 새로운 버퍼를 사용하도록 지시 *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로 호출 하여 명령에서 tantrum을 발생시키지 않습니다.
이 명령은 EWW 버퍼 내외부에서 모두 작동하므로 eww-open-in-new-buffer
원하는 경우 default 대신 드롭 인 대체 기능을 수행 할 수 있습니다 .
(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하거나보다 편리한 키에 전역 적으로 바인딩 할 수 있습니다 .
RP Dillon 스 니펫을 약간 확장했습니다 . (defalias 'w #'af/eww)
아래 함수를 사용하여 별칭을 만들고 eww를 여는 것이 좋습니다 . 유일한 차이점은 *eww*
버퍼가 이미 존재하는 경우 조건부 검사 이며, 네이티브 eww
가 호출 되지 않은 경우 새 버퍼가 작성 됩니다.
(defun af/eww ()
(interactive)
(let ((eww-current-buffer (get-buffer "*eww*"))
(url nil))
(if (eq eww-current-buffer nil)
(eww)
(setq url (read-from-minibuffer "Enter URL or keywords: "))
(switch-to-buffer (generate-new-buffer "eww"))
(eww-mode)
(eww url)
)))
Emacs 25.1을 사용하는데 eww-open-in-new-buffer
기능이 없습니다. 그래서 나는 현재있는 페이지에 대한 쉬운 제목으로 eww 버퍼의 이름을 바꾸고 eww
Emacs에서 열린 다른 버퍼 (예 : 버퍼 모드 버퍼 또는 dired 버퍼)에서 다시 호출해야합니다 . 처음부터 다른 문서, 다른)를 다른 eww 버퍼로 데려갑니다. 마지막으로 S
eww 버퍼 목록 으로 이동하여 거기서 선택합니다. 홀수이지만 작동하지만 몇 단계 만 거치면됩니다. 왜 eww-new
처음부터 내장되지 않았 는지 궁금 합니다. 물론 위의 코드로 더 깨끗합니다. 나는 그것을 시도 할 것입니다. 이맥스 26에 기능이 추가 된 것을 알게되어 기쁩니다.
eww
prefix 인수로 호출 하면 새로운 EWW 버퍼가 생성됩니다. 위의 답변을 참조하십시오.
M-x rename-uniquely
.
eww
prefix 인수로 호출 하는 기능을 지원합니다 . 아래 내 답변을 참조하십시오.