답변:
@Dan의 대답은 완벽하게 훌륭한 솔루션이지만 불필요합니다. 여기서 Emacs 가리스트를 사용하는 이유 중 하나는 리스트를 사용하여리스트 앞에 새로운 요소를 추가 할 수 있고리스트의 아래 부분에 그림자가 일치 하기 때문입니다 .
(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
setf적절한 값을 변경하는 데 사용하십시오 .
(setf (cdr (rassoc 'javascript-mode auto-mode-alist)) 'js2-mode)
목록의 값 을 바꾸 려면 setf일반화해야합니다. 를 다루는 관용적 인 방법 auto-mode-alist은 @Drew의 답변과 그림자에 대한 설명을 참조하십시오.
setf는 실제로 자바 사람들에게 보여 져야한다.)
setfLisp에서는 항상 사용되지만 elisp에서는 자주 사용하지 않습니다.
setfCL에 비해
실제로 단점 셀을 변경하는 가장 빠른 방법은 아마도 setcdr
setcdr is a built-in function in `C source code'.
(setcdr CELL NEWCDR)
Set the cdr of CELL to be NEWCDR. Returns NEWCDR.
setf오래된 Emacsen에서는 사용할 수 없지만 주목할 가치 setcdr가 있습니다.
*** Welcome to IELM *** Type (describe-mode) for help.
ELISP> (setq tmp '((one . 1) (two . 2) (three . 4)))
((one . 1)
(two . 2)
(three . 4))
ELISP> (setcdr (assq 'three tmp) 3)
3 (#o3, #x3, ?\C-c)
ELISP> tmp
((one . 1)
(two . 2)
(three . 3))
setf있습니까?
OP는 문자열 키가있는 목록을 처리하는 솔루션을 요청합니다. 이를 처리하려면 이 질문을 참조하십시오 . 우연히 기호 키로 목록 만 처리하면 Emacs 25부터 다음을 사용할 수 있습니다.
(setf (alist-get <key> <alist>) <value>)
cdr을 교체합니다. Emacs 26에 액세스 할 수있는 경우이 기술은 다음과 같이 문자열 키와 함께 작동합니다.
(setf (alist-get "\\.js\\'" auto-mode-alist nil nil #'equal) 'js2-mode)
Emacs 26에는 문자열 키를 처리하는 다른 방법도 있습니다. 위에서 언급 한이 질문 을 참조하십시오 .
(setf (alist-get "\\.js\\'" auto-mode-alist nil nil #'equal) 'js2-mode)작동해야합니다 (Emacs 26 필요).
alist-getstring을 사용 하고 "\\.js\\'"있지만 alist-get을 기반으로 assq하므로 답변에서 주장하는대로 문자열과 작동하지 않습니다.
자바 스크립트 모드를 다시 사용하지 않을 것이라는 것을 알고 있다면 자동 모드를 그대로 유지하고 init.el에 추가하십시오.
(defalias 'javascript-mode 'js2-mode "Some handy explanation goes here.")
javascript-mode정말 : javascript-mode만의 별칭입니다 js-mode(기본적으로)하고 이런 식으로 이루어졌다 특히 그들이 선호하는 경우에 당신이 제안처럼 사용자가 할 수 있도록 js2-mode(사용할 수있는 기능을 잃지 않고 js-mode그들이 원하는 경우).
js-mode( perl-mode예를 들어 일어나는 것과는 달리) "javascript-mode"를 사용하지 못하게한다고 말하고 있습니다 .