任何人都可以建议一种方法来围绕一个包含前导\$
的区域并用一个片段包围它。在latex-mode
中,我经常使用下划线或双重下划线,并且正在使用的yasnippet会删除反斜杠。我希望能够在所有情况下使用相同的代码段 - 使用或而不使用前导\$
。
# -*- mode: snippet -*-
# contributor: lawlist
# key: underline_selected
# group: font
# name: underline_selected
# binding: C-I u s
# --
\uline{`yas/selected-text`}
答案 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-escapes
和yas--restore-escapes
进行修复,并且在此期间仅对其进行了评论。 [对于任何进行编程的人来说,这显然是有问题的,但似乎只足以编写LaTeX文档。]在Github上已经打开了一个问题,如果找到解决方案,这个答案的作者将更新这个帖子:{{3} }