Emacs:如何仅在默认情况下切换缓冲区菜单文件

Emacs:如何仅在默认情况下切换缓冲区菜单文件,emacs,elisp,buffer,Emacs,Elisp,Buffer,在(以及buff menu.el中)有一个名为Buffer menu toggle files only的函数,该函数将变量Buffer menu files only设置为t/nil 当显示缓冲区列表时,我可以用T键切换,以防止非文件缓冲区显示在列表中。我希望在默认情况下设置此筛选器(仅限文件)。如何在我的init.el文件中实现这一点 我试过: (add-hook 'buffer-menu-mode-hook 'Buffer-menu-toggle-files-only 1) 但当我显示缓

在(以及
buff menu.el
中)有一个名为
Buffer menu toggle files only
的函数,该函数将变量
Buffer menu files only
设置为
t
/
nil

当显示缓冲区列表时,我可以用T键切换,以防止非文件缓冲区显示在列表中。我希望在默认情况下设置此筛选器(仅限文件)。如何在我的
init.el
文件中实现这一点

我试过:

(add-hook 'buffer-menu-mode-hook 'Buffer-menu-toggle-files-only 1)
但当我显示缓冲区列表时,它会说:

运行挂钩:参数数目错误:#[(arg)“…”[arg Buffer menu files only prefix numeric value 0 t revert Buffer]2 578818“p”],0

有人能给我一个提示吗?

试试这个:

(add-hook 'buffer-menu-mode-hook
          '(lambda ()
             (Buffer-menu-toggle-files-only 1)))

我不使用缓冲区菜单,所以这是未经测试的。但这是我所有的模式挂钩都遵循的形式,它们都有效。

模式挂钩建议应该很有效

另一种方法是:

(defun my-list-buffers () (interactive) (list-buffers t)) (取消我的列表缓冲区() (互动) (列表(t))
另外,我假设您已经知道C-u C-x C-b只列出文件缓冲区。

这可以工作,并且完全满足您的需要

(global-set-key (kbd "C-x C-b") 'my-buffer-menu)
(defun my-buffer-menu()
   (interactive)
   (buffer-menu)
   (Buffer-menu-toggle-files-only 1))
您也可以只调用
(缓冲区菜单1)
,而不是在之后切换。此外,调用
(缓冲区菜单其他窗口1)
模拟了拆分窗口以显示缓冲区的默认行为。对我来说不起作用(GNU emacs 25.1.1)。我在
*Messages*
中收到一条消息,因为我认为该选项已更改,但仍显示非文件。