首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查主模式是否等于几个emacs中的一个。

检查主模式是否等于几个emacs中的一个。
EN

Stack Overflow用户
提问于 2013-04-26 17:51:49
回答 3查看 3K关注 0票数 9

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

代码语言:javascript
复制
(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模式还是dired模式”?

编辑:只是语法错误。应该是

代码语言:javascript
复制
(when (or (equal major-mode 'dired-mode) (equal major-mode 'sr-mode))

必须承认这不是太直观。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-26 21:35:59

典型的方式是(when (derived-mode-p 'sr-mode 'dired-mode) ...)

票数 16
EN

Stack Overflow用户

发布于 2016-09-09 16:39:47

我尝试了一些东西,发现这对我的emacs-ielm -也许也有帮助:

代码语言:javascript
复制
(if (member major-mode '(fsharp-mode c-mode java-mode inferior-emacs-lisp-mode))
(message "yeah right"))
票数 2
EN

Stack Overflow用户

发布于 2018-04-02 15:56:19

也许正确的检查功能是:

代码语言:javascript
复制
(derived-mode-p &rest MODES)

见“Subr.el”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16242391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档