我找到了一个代码片段来关闭所有直接缓冲区,我想在日出指挥官中使用它:
(defun er/kill-all-dired-buffers()
"Kill all dired buffers."
(interactive)
(save-excursion
(let((count 0))
(dolist(buffer (buffer-list))
(set-buffer buffer)
(when (equal major-mode 'sr-mode)
(or (equal major-mode 'dired-mode))
(setq count (1+ count))
(kill-buffer buffer)))
(message "Killed %i dired buffer(s)." count ))))
(setq sr-quit-hook 'er/kill-all-dired-buffers)
问题是,我不能让sr-mode和dired-mode一起工作。 如何检查“主模式是否为sr-mode或dired-mode”?
编辑: 只是语法错误。 应该是
(when (or (equal major-mode 'dired-mode) (equal major-mode 'sr-mode))
不得不承认它不太直观。
答案 0 :(得分:13)
规范方式是(when (derived-mode-p 'sr-mode 'dired-mode) ...)
。
答案 1 :(得分:2)
我尝试了一些东西,并发现这可以在我的emacs-ielm上运行 - 也许它可能也有帮助:
for (Item* i : foo.items) {
// either positive
if (i) {
// ...
}
// or negative
if (!i) continue;
// ...
}
答案 2 :(得分:1)
也许正确的检查功能是:
(derived-mode-p &rest MODES)
参见'subr.el'。