如何比较Emacs中的多个功能

时间:2013-07-25 22:00:44

标签: emacs elisp

我想改变一个小模式的行为取决于主模式。 现在我写的就像跟随。

(defun foo (input)
  (if (or
    (eql major-mode 'foo-mode)
    (eql major-mode 'foo1-mode)
    (eql major-mode 'foo2-mode))
     (myfunc-one input)
   (myfunc-two input)))

我工作,但我不想写3次类似的条件陈述。 我怎样才能更有效地写它?

2 个答案:

答案 0 :(得分:5)

(defun foo (input)
  (if (memql major-mode '(foo-mode foo1-mode foo2-mode))
      (myfunc-one input)
      (myfunc-two input)))

答案 1 :(得分:2)

您通常不希望直接测试major-mode。相反,您想使用(derived-mode-p 'foo1-mode 'foo2-mode 'foo3-mode)