如何选择带前导\ $的区域,并用yasnippet包围它

时间:2013-09-02 20:16:05

标签: emacs yasnippet

任何人都可以建议一种方法来围绕一个包含前导\$的区域并用一个片段包围它。在latex-mode中,我经常使用下划线或双重下划线,并且正在使用的yasnippet会删除反斜杠。我希望能够在所有情况下使用相同的代码段 - 使用而不使用前导\$

# -*- mode: snippet -*-
# contributor: lawlist
# key: underline_selected
# group: font
# name: underline_selected
# binding: C-I u s
# --
\uline{`yas/selected-text`}

1 个答案:

答案 0 :(得分:0)

导致原始海报描述的行为的问题很少,原始海报使用自定义修改版tex-mode.el AUCTeX。

首先,函数yas--snippet-parse-create包含以下函数,这些函数与LaTeX转义的美元符号不相符:

(yas--protect-escapes nil `(?\\ ?` ?'))

(yas--protect-escapes)

(yas--restore-escapes)

(yas--delete-regions ys--dollar-regions)

其次,变量yas--simple-mirror-regexp除了$1之类的标准yasnippet字段外,还会获得美元金额。当(yas--delete-regions yas--dollar-regions)调用上述yas--snippet-parse-create时,结果是错误删除。此答案的作者修改了正则表达式以排除带有前面反斜杠的美元符号:

(setq yas--simple-mirror-regexp "[^\\]$\\([0-9]+\\)")

此答案的作者目前尚未对yas--protect-escapesyas--restore-escapes进行修复,并且在此期间仅对其进行了评论。 [对于任何进行编程的人来说,这显然是有问题的,但似乎只足以编写LaTeX文档。]在Github上已经打开了一个问题,如果找到解决方案,这个答案的作者将更新这个帖子:{{3} }