2012-01-12 18 views
8

几个emacs扩展创建“垃圾”缓冲区,我不得不从各种缓冲区列表中手动删除它们。如何使任意Emacs缓冲区“隐藏”?

Emacs有一个“隐藏缓冲区”的概念,例如用于小型缓冲区。

如何使一个任意的缓冲区成为一个隐藏的缓冲区?

+0

错误的地方问... – 2012-01-12 21:15:00

+0

@ Ahmed正确的地方问,只是真的写得不好。 – 2012-01-12 21:20:52

+2

@Trey Jackson为什么?我认为这很清楚 – sabof 2012-01-12 21:22:50

回答

13

Emacs确实有一个无趣/隐藏缓冲区的概念 - 并且通过使它们的名字以空格开头来指定它们。请参阅buffer names的文档。您可以通过将其名称更改为以空格开头来使缓冲区“无趣”。

尝试的Mx使缓冲 - 无趣

(defun make-buffer-uninteresting() 
    "rename the current buffer to begin with a space" 
    (interactive) 
    (unless (string-match-p "^ " (buffer-name)) 
    (rename-buffer (concat " " (buffer-name))))) 
+0

一个问题:如果您像这样重命名缓冲区,原始扩展名将如何知道您已更改它。或者,相当于是否有一种简单的方法隐藏缓冲区而不会混淆使用扩展名的任何扩展名? – 2012-01-12 21:29:38

+0

假设它会在某处保留对缓冲区对象的引用,并会以这种方式找到它。 由于如果您打开第二个缓冲区名称相同,名称会发生​​变化,这种做法应该很常见 – sabof 2012-01-12 21:37:37

+0

@Tikhon - 这就是为什么我说这个问题写得不好,这个例程可能会破坏扩展名(不管它们是什么)如果他们正在寻找缓冲区名称。如果他们通过价值追踪缓冲区,他们就可以B/C只有名称改变... – 2012-01-12 21:44:51

4

如果启用ido(你应该,因为我不知道你为什么会用emacs没有它),那么你可以配置它缓冲使用ido-ignore-buffers列表忽略,该列表是正常缓冲区切换忽略的正则表达式缓冲区列表。 (真的,如果你还没有,你应该使用ido)。