Yasnippet片段有一个百分号,%
,结束了与片段最后一个点$0
的一行,在百分号符号行为奇怪之前,光标放在百分号后面而不是在它之前。我想知道如何避免这种奇怪的行为。
请考虑以下代码段:
# -*- mode: snippet -*-
# name: test snippet
# key: ts
# --
{
$0%
}
我认为,当它被激活时,应该插入三行,其中第一行包含{
,最后一行}
和第二行%
和将光标放在%
之前的第二行,如下例所示:
{
[cursor]%
}
但是会发生以下情况:
{
% [cursor]
}
我怎样才能使代码片段符合我的想法呢?
我的猜测是,这是由AUCTeX中的某些东西引起的,因为它发生在AUCTeX激活但不在主模式Lisp Interaction中。
答案 0 :(得分:2)
它适用于我的配置,但我怀疑它与自动缩进有关(我的是大量定制的,这可能是不同的)。如果添加
,您仍然会看到问题吗?# expand-env: ((yas/indent-line 'fixed))
或
# expand-env: ((yas/indent-line t))
到代码片段的标题?您还可以尝试将$>
添加到要缩进的行中,以查看是否会产生影响(如果这样做会缩小范围)。 yasnippet代码中有一个关于标记更改位置的问题的注释,但看起来它几年前已修复。
您还应该检查indent-line-function
是否具有正确的值LaTeX-indent-line
。
您可以在sit-for
的定义中添加一些yas/indent-according-to-mode
,以查看不同阶段的点。例如,将以下内容放在暂存缓冲区中,将光标放在其末尾并键入C-x C-e
。然后像往常一样插入您的代码段,它会在您看到(sit-for 1)
的代码中的每个位置暂停1秒钟。因此,如果光标在错误的位置开始,那么你知道问题是在缩进之前等等。你必须为每个缩进的行观察它,所以你可能希望关闭缩进除了有问题的行通过{ {1}}。添加或删除$>
将允许您缩小范围。
sit-for