如何杀死不在用户输入的目录中的已打开文件?

时间:2013-08-05 20:34:09

标签: emacs elisp

有时我会打开来自不同源树的文件来与当前树进行比较。 我希望有一个函数可以杀死所有这些打开的文件,这些文件不存在于用户在执行函数时保持或更改的“默认树”中。

1 个答案:

答案 0 :(得分:1)

将default-tree设置为所需目录的名称(必须是绝对路径)。

(defun bruce-connor-buffer-killer ()
(interactive)
(unless (file-directory-p default-tree) (error "You forgot to set `default-tree'."))
(let ((case-fold-search nil)
      (dir-length (length default-tree)))
  (dolist (buffer (buffer-list))
    (when (buffer-file-name buffer)
    (unless (equal t (compare-strings
                      (expand-file-name (buffer-file-name buffer)) 0 dir-length
                      default-tree 0 nil)))
       (kill-buffer buffer)))))