Emacs:带有破折号和点的模式局部宏

Emacs:带有破折号和点的模式局部宏

在 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 这样的文本模式中,我认为它不会造成太大的麻烦。

相关内容