防止Emacs中某些符号后的缩写扩展

时间:2011-08-09 09:14:47

标签: emacs abbreviation

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

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

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

非常感谢!

2 个答案:

答案 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。