从switch-to-buffer列表中排除"讨厌的缓冲区"

SFb*_*007 6 emacs elisp

我的.emacs中有这个:

(global-set-key "\M-s" 'switch-to-buffer)
Run Code Online (Sandbox Code Playgroud)

并且:

(defvar crs-hated-buffers
  '("KILL" "*Compile-Log*" "*Buffer List*" "*Messages*" "*Occur*"
    "*Completions*" "*compilation*" "TAGS" "*scratch*" "*grep*"
    "source" "headers"))
(setq iswitchb-buffer-ignore (append '(
    "^ "
    "^\\*Buffer"
    "^\\*Completions\\*"
    "^\\*tramp"
    "^\\*Dired log\\*"
    "^\\*Quail Completions\\*"
    "^\\*Disabled Command\\*"
    "^TAGS"
    )
    crs-hated-buffers))
Run Code Online (Sandbox Code Playgroud)

如何从交换机到缓冲区列表中排除这些讨厌的缓冲区?

Ste*_*fan 5

也许是这样的:

(global-set-key [?\M-s] 'my-switch-to-buffer)

(defun my-switch-to-buffer ()
  (interactive)
  (let ((completion-regexp-list '("\\`[^*]"
                                  "\\`\\([^T]\\|T\\($\\|[^A]\\|A\\($\\|[^G]\\|G\\($\\|[^S]\\|S.\\)\\)\\)\\).*")))
    (call-interactively 'switch-to-buffer)))
Run Code Online (Sandbox Code Playgroud)

它可能值得通过功能请求M-x report-emacs-bug.