如何让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)
事实上,这具有相反的效果。我发现自己在编辑服务器,Minibuf-0,Echo-area-1,Echo-area-2和code-conversion-work等缓冲区中翻转。 – incandescentman 2013-03-07 18:32:36
编辑答案以更好地匹配原始行为 – 2013-03-07 18:38:43
我在分析过程中得到'文件结束'。 – incandescentman 2013-03-08 00:21:45