Emacs에서 HTML 모드에 맞는 매크로를 만들고 대시와 점을 사용하려면 어떻게 해야 합니까? 아래의 Elisp를 살펴보세요.
(define-abbrev-table 'html-mode-abbrev-table
'(("..." "…") ; won't work
("---" "—") ; won't work
("aaa" "…") ; works
("bbb" "—") )) ; works
답변1
약어에는 현재 버퍼 구문 테이블에 지정된 대로 단어 구문으로 간주되는 문자만 포함될 수 있습니다. "." 및 "-" 단어 문자를 사용하면 약어로 사용할 수 있습니다.
(require 'sgml-mode)
(modify-syntax-entry ?- "w" html-mode-syntax-table)
(modify-syntax-entry ?. "w" html-mode-syntax-table)
그러나 단점도 있습니다. 정규식 검색에 \w를 사용하는 경우 - 및 . 이제 변경된 구문 테이블을 사용하여 모든 버퍼에서 일치가 이루어집니다. 이러한 버퍼의 커서 이동 명령도 영향을 받습니다. 예를 들어 앞으로 단어는 더 이상 이러한 문자 앞에서 중지되지 않습니다. 마찬가지로 kill-word는 이전보다 더 많은 텍스트를 삭제합니다. 프로그래밍 모드 버퍼에서는 이 동작이 매우 놀랍고 불쾌할 것이라고 생각하지만 HTML과 같은 텍스트 모드에서는 큰 문제가 발생하지 않을 것이라고 생각합니다.