如何比较Emacs中的多个功能

Tet*_*tsu 2 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)))
Run Code Online (Sandbox Code Playgroud)

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

jla*_*ahd 5

(defun foo (input)
  (if (memql major-mode '(foo-mode foo1-mode foo2-mode))
      (myfunc-one input)
      (myfunc-two input)))
Run Code Online (Sandbox Code Playgroud)

  • 像''foo-mode`这样的符号将被实习,这意味着`eq`就足够了.`memq`可能是比'memql`更好的选择. (3认同)