2013-07-25 3 views
2

메이저 모드에 따라 마이너 모드 동작을 변경하고 싶습니다. 이제 다음과 같이 쓰고 있습니다.Emacs에서 여러 함수를 비교하는 방법

(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 번 쓰고 싶지 않습니다. 어떻게하면 더 효율적으로 작성할 수 있습니까?

답변

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

''foo-mode'와 같은 기호는''eq'가 충분해야 함을 의미하는 인턴됩니다. 'memq'는 아마도'memql'보다 더 나은 선택 일 것입니다. – ataylor

+0

답변 해 주셔서 감사합니다. – Tetsu

2

일반적으로 major-mode을 직접 테스트하지 않으려합니다. 대신 (derived-mode-p 'foo1-mode 'foo2-mode 'foo3-mode)을 사용하려고합니다.

관련 문제