如何让Emacs缓冲区堆栈忽略某些类型的文件?

问题描述:

在Emacs中,我使用一个名为buffer-stack的东西来查看和浏览我打开的缓冲区,如果我不知道要使用什么缓冲区,这很有用,但我只是想直观地看到打开的缓冲区(实际内容,而不是文件名)。我有一个buffer-stack-up和另一个buffer-stack-down的键绑定,允许我在它们之间左右滚动。如何让Emacs缓冲区堆栈忽略某些类型的文件?

我想从这种行为中排除某些类型的缓冲区。我可以通过在名为buffer-stack-untracked的变量中指定完整的缓冲区名称来排除特定的缓冲区,例如,我可以将*Messages*标记为未跟踪。

如何使用REGEXP来指定某些缓冲区作为未跟踪的对象?例如,我想排除包含REGEXP Help.html的缓冲区,即使我无法预测整个文件名。

我该怎么做?如果无法使用buffer-stack来做到这一点,那么什么包会给我我想要的行为?

我相信这将是一个很好的起点。

(defun buffer-stack-filter-regexp (buffer) 
    "Non-nil if buffer is in buffer-stack-tracked." 
    (not (or (string-match "Help\\|html" (buffer-name buffer)) 
      (member buffer buffer-stack-untracked)))) 
(setq buffer-stack-filter 'buffer-stack-filter-regexp) 
+0

事实上,这具有相反的效果。我发现自己在编辑服务器,Minibuf-0,Echo-area-1,Echo-area-2和code-conversion-work等缓冲区中翻转。 – incandescentman 2013-03-07 18:32:36

+0

编辑答案以更好地匹配原始行为 – 2013-03-07 18:38:43

+0

我在分析过程中得到'文件结束'。 – incandescentman 2013-03-08 00:21:45