我找到了关于多字缩写的邮件列表message,但是 仍然无法扩展工作。
我定义了这两个缩写:
"agw" 0 "a great whale"
"a g w" 0 "a great whale"
在“agw”工作后按空格键,但不是“a g w”。但是,如果我打电话
(abbrev-expansion "a g w")
,然后返回正确的扩展。
问题是如何让Emacs向后搜索一个单词边界?
是的,yasnippet存在并且我使用它,但是缩写更加无缝(例如按 “1/2”后的空格将其变成unicode的一半)。我也不想改变 语法表。
答案 0 :(得分:0)
SPACE,在插入之前,将在点之前寻找缩写以进行扩展。它使用`后向词',它将在前一个空格处停止。因此,SPACE不能扩展缩写内的空格。
答案 1 :(得分:0)
正如安德烈亚斯所解释的那样,它不起作用,因为默认情况下,缩写只有在由“单词成分”和“”不是单词成分的字符组成时才有效。对于给定的表,您可以更改此规则,例如(abbrev-table-put <table> :regexp <regexp>)
,其中像"\\<\\(\\w+:?\\)\\W*"
这样的正则表达式几乎会重现默认行为。
现在对于你的情况,你想要一个匹配“agw”和“agw”的正则表达式,但请注意它不应该匹配“dawg”的“agw”,它也不应该匹配“ag agw”,这使得这有点棘手。一种方法是将你的正则表达式定义为(concat "\\<" (regexp-opt '("agw" "a g w")) "\\W*")
,这很简单,但它有缺点,它需要在你添加缩写时随时更改正则表达式。