2013-02-28 57 views
0

不工作时,我添加的缩写 ("s:", "std::")缩写在Emacs

它不工作,上面和下面的工作,而其他的缩写。

语法中有什么问题吗?我怎样才能使这个工作?

+0

你如何创建它? '.emacs','C-X ag'? – 2013-02-28 18:47:35

+0

我用abbrev_defs.el编写它并重新加载它。 – navderm 2013-02-28 18:48:48

回答

0

字符:,具有空间,沿着? ...不被认为是一个(按照Emacs的定义)的一部分,并触发缩写机构,其检测是否在此之前,:输入单词是一个缩写,必须扩展(Using Word Abbrev)。

因此,虽然s:缩写定义,进入的

s: 

:使得Emacs的触发为缩写的搜索s。换句话说,包含标点符号的缩写不能被扩展。

更简单的解决办法是选择数字+字母,例如

8s or s8 

-

有一个正则表达式识别什么是触发缩写搜索字符,但它仅适用于dynamic abbrevs

我试图修改反向字的行为,但它甚至不用于捕获Emacs最新版本中的反向字(缩写)。

1

正如ring0所解释的那样,它不起作用,因为默认情况下,如果缩写仅由“词组成”字符组成且“:”不是单词组成部分的字符组成,则它们才起作用。 你可以改变这个规则,对于一个给定的表,使用类似(abbrev-table-put <table> :regexp "\\<\\(\\w+:?\\)\\W*")的东西,其中像"\\<\\(\\w+:?\\)\\W*"这样的正则表达式几乎可以重现默认行为。

+0

是否有一个多字缩写解决方案为我的Q http://stackoverflow.com/questions/14426748/multi-word-abbrev-expansion? – 2013-03-01 12:12:18