当密钥前没有空格时,yasnippets不会扩展

时间:2011-10-21 10:05:38

标签: emacs code-snippets

在emacs中使用yasnippet并且在应该触发片段的键之前没有空格时,按下 Tab 时不会展开片段。它是否可以制作成即使在它之前没有空格的情况下片段也会扩展?

这是一个测试案例。制作以下代码段

# -*- mode: snippet -*-
# name: \textsubscript (from fixltx2e)
# key: tsub
# --
\textsubscript{$1}$0

试一试。请注意,只要在tsub之前有空格并且没有触发它就会在tsub之前有一个字母时触发它。另外,请注意,如果在其前面有标点符号或括号,它会正确扩展。

http://groups.google.com/group/smart-snippet/browse_thread/thread/0d08f2c90e24a94d/0a3d7c00d993a7ce?show_docid=0a3d7c00d993a7ce

也观察到了类似的行为

1 个答案:

答案 0 :(得分:2)

在内部,yas / snippet使用函数skip-syntax-backward来查找模板键。因此,必须通过不同语法类中的字符将片段密钥与前一文本分开才能被识别。语法类包括'word-constituent','punctuation','whitespace'等。详细信息为in the elisp manual

当我读到它时,这意味着如果你想在另一个字母之后立即插入模板,你就不能使用所有字母的键(即单词成分)。

对你来说不是好消息,但也许以下是可接受的解决方案?实际上,您需要在之前调用代码片段,而不是 之后的

# -*- mode: snippet -*-
# name: \textsubscript (from fixltx2e)
# key: tsub
# --
$1\textsubscript{$2}$0

这可能值得报告为yasnippet维护者的错误或功能请求。