有没有办法防止在某些符号后自动扩展内置abbrev-mode
中的缩写?例如。我希望我的缩写在空格,换行符,逗号等之后展开,但在短划线或下划线之后不。
我知道在键入(比方说)下划线之前我可以点击 C-q ,但自动解决方案会更好,因为这种情况经常发生在我身上。
手册中有一些缩写钩子,但由于我是Elisp的初学者,我没有看到明显的解决方案......
非常感谢!
答案 0 :(得分:1)
使下划线成为当前模式的单词构成字符。来自Emacs manual, node Expanding Abbrevs
:
[A]不是单词构成的字符扩展缩写,任何单词构成字符都可以是缩写的一部分。
使用函数modify-syntax-entry
修改_
的语法类,使其成为单词构成:
(modify-syntax-entry ?_ "w")
只有当_
成为单词构成字符时,此解决方案才有用。你想让_
表现得好像是一个词的一部分吗?这是第一个问题。
答案 1 :(得分: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。