emacs - 检查主模式是否等于几个emacs之一

标签 emacs elisp

我找到了一个片段来关闭所有干燥的缓冲区,我想在日出指挥官中使用它:

(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模式和dired模式。
如何检查“主要模式是sr-mode还是dired-mode”?

编辑:
只是语法错误。
应该
(when (or (equal major-mode 'dired-mode) (equal major-mode 'sr-mode))

必须承认它不是太直观。

最佳答案

规范的方法是(when (derived-mode-p 'sr-mode 'dired-mode) ...)

关于emacs - 检查主模式是否等于几个emacs之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16242391/

相关文章:

emacs - 在 Emacs 中使用 split-window-below。如何获取底部窗口的缓冲区?

emacs - 是什么让 Emacs 成为 Lisp 程序员的绝佳编辑器?

emacs - Emacs Org 模式下的时序图?

lisp - flet 相当于 let*?

emacs - 提供和要求 Emacs Lisp 包子功能(如何)

emacs - 格式化 Emacs 函数中的 header 以将缓冲区打印到 PDF(带换行)

Emacs 停止标记区域而不使用键盘退出

emacs - 优化 key-chord.el 触发

Emacs 每帧制作 ibuffer 过滤器

emacs - 在进程退出并出现错误或警告之前,不要在 Emacs 中显示 *compilation* 缓冲区