이맥스 : dolist가 도트와 작동하지 않습니다


1

저는 Emacs를 처음 사용합니다. sh-mode파일 이름 패턴에 몇 가지 를 사용하려고 하므로 다음 행을 추가했습니다 ~/.emacs.d/init.el.

(dolist (pattern '("\\.zsh$"
                   "\\.?zshrc$"
                   "zshrc\\."))
  (add-to-list 'auto-mode-alist (pattern . sh-mode)))

그러나 다음과 같은 오류가 표시됩니다.

심볼의 함수 정의가 void : pattern

내가 사용하는 경우 :

(dolist (pattern '("\\.zsh$"
                   "\\.?zshrc$"
                   "zshrc\\."))
  (add-to-list 'auto-mode-alist '(pattern . sh-mode))) ;; Note the additional quote

pattern 이 목록에 추가되지만 목록에는 추가되지 않습니다.

누구든지 나를 도울 수 있습니까? 감사!


1
문제는 마지막 행입니다 ... (pattern . 괄호를 앞에두면 patternEmacs는 이름이 지정된 함수를 호출하려고한다고 생각합니다 pattern. Google 검색 add-to-list dolist emacs을 수행합니다.이 작업을 수행하는 방법에 대한 최소한 몇 가지 예가 표시됩니다 (예 : stackoverflow.com/a/221449/2112489
lawlist

2
다음은 lunaryorn이 목록의 변수에 아포스트로피 대신 백틱을 사용하는 방법과 변수 앞에 쉼표를 사용하여 가르쳐주는 스레드 링크입니다. stackoverflow.com/a/22440553/2112489
lawlist

답변:


3

해결책:

(dolist (pattern '("\\.zsh$"
                   "\\.?zshrc$"
                   "zshrc\\."))
  (add-to-list 'auto-mode-alist `(,pattern . sh-mode)))

이 구문이 필요한 이유 / (cons pattern 'sh-mode)작동 하지 않는 이유는 무엇입니까?
binki

아 죄송합니다 (cons pattern 'sh-mode). 이번에는 마지막 닫는 괄호가 누락되어 (add-to-list…)비트를 직접 실행하려고 시도 했기 때문에 물론 patternxD에 대해서는 정의되지 않았습니다.
binki
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.