2013-03-07 56 views
1

在Emacs中,我使用一個名爲buffer-stack的東西來查看和瀏覽我打開的緩衝區,如果我不知道要使用什麼緩衝區,這很有用,但我只是想直觀地看到打開的緩衝區(實際內容,而不是文件名)。我有一個buffer-stack-up和另一個buffer-stack-down的鍵綁定,允許我在它們之間左右滾動。如何讓Emacs緩衝區堆棧忽略某些類型的文件?

我想從這種行爲中排除某些類型的緩衝區。我可以通過在名爲buffer-stack-untracked的變量中指定完整的緩衝區名稱來排除特定的緩衝區,例如,我可以將*Messages*標記爲未跟蹤。

如何使用REGEXP來指定某些緩衝區作爲未跟蹤的對象?例如,我想排除包含REGEXP Help.html的緩衝區,即使我無法預測整個文件名。

我該怎麼做?如果無法使用buffer-stack來做到這一點,那麼什麼包會給我我想要的行爲?

回答

2

我相信這將是一個很好的起點。

(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