'이전 버퍼'와 '다음 버퍼'를 만들어 일부 버퍼를 무시하십시오.


10

투구에 내가 사용하는 경우 보여주는 일부 버퍼를 무시 C-x b, 내가 명령을 만들 수있는 방법을 찾고 있어요 previous-buffernext-buffer일부 버퍼를 무시 동일하게 동작합니다.

답변:


8

두 가지 방법이 있습니다.

  1. switch-to-next-buffer라이브러리에서 함수의 정의를 살펴보면 window.el프레임 매개 변수의 값인 술어 (있는 경우)로 버퍼를 필터링 함을 알 수 있습니다 buffer-predicate. 이 기능은에 의해 사용됩니다 next-buffer.

    해당 프레임 매개 변수를 원하는 방식으로 필터링하는 술어로 설정할 수 있습니다.

  2. switch-to-next-buffer원하는 방식으로 필터링 하도록 함수 에 조언 할 수 있습니다 . 본질적으로 정의를 거의 동일한 정의로 바꾸지 만 원하는 방식으로 추가로 필터링합니다.

비슷합니다 switch-to-previous-buffer.


7
(defvar my-skippable-buffers '("*Messages*" "*scratch*" "*Help*")
  "Buffer names ignored by `my-next-buffer' and `my-previous-buffer'.")

(defun my-change-buffer (change-buffer)
  "Call CHANGE-BUFFER until current buffer is not in `my-skippable-buffers'."
  (let ((initial (current-buffer)))
    (funcall change-buffer)
    (let ((first-change (current-buffer)))
      (catch 'loop
        (while (member (buffer-name) my-skippable-buffers)
          (funcall change-buffer)
          (when (eq (current-buffer) first-change)
            (switch-to-buffer initial)
            (throw 'loop t)))))))

(defun my-next-buffer ()
  "Variant of `next-buffer' that skips `my-skippable-buffers'."
  (interactive)
  (my-change-buffer 'next-buffer))

(defun my-previous-buffer ()
  "Variant of `previous-buffer' that skips `my-skippable-buffers'."
  (interactive)
  (my-change-buffer 'previous-buffer))

(global-set-key [remap next-buffer] 'my-next-buffer)
(global-set-key [remap previous-buffer] 'my-previous-buffer)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.