답변:
@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
는 실제로 자바 사람들에게 보여 져야한다.)
setf
Lisp에서는 항상 사용되지만 elisp에서는 자주 사용하지 않습니다.
setf
CL에 비해
실제로 단점 셀을 변경하는 가장 빠른 방법은 아마도 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-get
string을 사용 하고 "\\.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"를 사용하지 못하게한다고 말하고 있습니다 .