Emacs:如何在默认情况下切换Buffer-menu-files

时间:2010-10-19 15:45:01

标签: emacs elisp buffer

buff-menu+.el(以及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)

但是当我显示缓冲区列表时,它会显示:

  

run-hooks:参数数量错误:#[(arg)“...”[arg Buffer-menu-files-only prefix-numeric-value 0 t revert-buffer] 2 578818“P”],0

有人可以给我一个提示吗?

3 个答案:

答案 0 :(得分:4)

试试这个:

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

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

答案 1 :(得分:2)

模式挂钩建议应该可以正常工作。

另一种方法是:

    (defun my-list-buffers ()
      (interactive)
      (list-buffers t))

另外,我假设您已经知道 C-u C-x C-b 仅列出文件缓冲区。

答案 2 :(得分:2)

这可以完全满足您的需求。

(global-set-key (kbd "C-x C-b") 'my-buffer-menu)
(defun my-buffer-menu()
   (interactive)
   (buffer-menu)
   (Buffer-menu-toggle-files-only 1))