3

abbrev-mode有没有办法防止在某些符号之后自动扩展内置的缩写?例如,我希望我的缩写在空格、换行符、逗号等之后扩展,而不是在破折号或下划线之后。

我知道我可以 C-q在输入(比如说)下划线之前点击,但是自动解决方案会更好,因为这经常发生在我身上。

手册中有一些缩写钩子,但由于我是 Elisp 的初学者,我没有看到明显的解决方案......

非常感谢!

4

2 回答 2

1

使下划线成为当前模式的单词组成字符。从Emacs 手册中,节点Expanding Abbrevs

[A] 任何不是单词组成的字符都会扩展缩写,并且任何单词组成字符都可以是缩写的一部分。

使用 functionmodify-syntax-entry修改 的语法类_,使其成为单词成分:

(modify-syntax-entry ?_ "w")

_此解决方案仅在作为单词组成字符不麻烦的情况下才有用。你想_表现得好像它是一个词的一部分吗?这是第一个问题。

于 2014-10-03T04:00:03.283 回答
0

好的,所以问题本身已经暗示了解决方案。这对我有用:

(defun protect-underscore ()
 (interactive)
 (insert "_"))

(defun protect-dash ()
 (interactive)
 (insert "-"))

(defun protect-equal ()
 (interactive)
 (insert "="))

(global-set-key (kbd "_") 'protect-underscore)
(global-set-key (kbd "-") 'protect-dash)
(global-set-key (kbd "=") 'protect-equal)

我确信必须有一个更优雅的解决方案......感谢 Magnar。

于 2011-08-17T08:55:39.170 回答