在 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 进行正则表达式搜索,则 - 和 。现在将使用更改后的语法表在任何缓冲区中进行匹配。这些缓冲区中的光标移动命令也会受到影响;例如,forward-word 将不再在这些字符之前停止。同样,kill-word 会删除比以前更多的文本。我认为这种行为在编程模式缓冲区中会非常令人惊讶和不愉快,但在像 HTML 这样的文本模式中,我认为它不会造成太大的麻烦。