与 AUCTeX 一起使用时,在 $0 之后以 % 结束行的 yasnippets 行为很奇怪

2023-12-14

有百分号的 Yasnippet 片段,%,以片段的最后一个点结束一行,$0,在百分号表现奇怪之前,光标被放置在百分号之后而不是之前。我想知道如何才能避免这种奇怪的行为。

考虑以下片段:

# -*- mode: snippet -*-
# name: test snippet
# key: ts
# --
{
$0%
}

我认为它已被激活should在第一行包含的位置插入三行{,最后一行}和第二行%并将光标置于之前%在第二行,如下例所示:

{
[cursor]%
}

但发生的情况如下:

{
  % [cursor]
}

我怎样才能使代码片段的行为符合我的预期?

我的猜测是,这是由于 AUCTeX 中的某些原因造成的,因为它发生在 AUCTeX 激活的情况下,但不是在主要模式 Lisp Interaction 中。


它适用于我的配置,但我怀疑它与自动缩进有关(我的配置是经过大量定制的,因此可能有所不同)。如果您添加,您是否仍然看到问题

# expand-env: ((yas/indent-line 'fixed))

or

# expand-env: ((yas/indent-line t))

到片段的标题?您也可以尝试添加$>到您想要缩进的行,看看这是否会产生影响(如果确实如此,则会大大缩小范围)。 yasnippet 代码中有一条关于标记更改位置的一些问题的注释,但看起来几年前已修复。

您还应该检查一下indent-line-function具有正确的值,即LaTeX-indent-line.

你可以添加一些sit-for的定义yas/indent-according-to-mode看看不同阶段的点在哪里。例如,将以下内容放入临时缓冲区中,将光标置于其末尾并键入C-x C-e。然后照常插入您的代码片段,在代码中您看到的每个位置都会暂停 1 秒(sit-for 1)。因此,如果光标从错误的位置开始,那么您就知道问题出在缩进之前,等等。您必须监视缩进的每一行,因此您可能希望通过以下方式关闭缩进,除了有问题的行之外$>。添加或删除sit-for可以让你缩小范围。

(defun yas/indent-according-to-mode (snippet-markers)
  "Indent current line according to mode, preserving
SNIPPET-MARKERS."
  (sit-for 1)
  (goto-char (yas/real-line-beginning))
  (sit-for 1)
  (let ((trouble-markers (remove-if-not #'(lambda (marker)
                                            (= marker (point)))
                                        snippet-markers)))
    (save-restriction
      (widen)
      (sit-for 1)
      (condition-case err
          (indent-according-to-mode)
        (error (message "[yas] warning: yas/indent-according-to-mode habing problems running %s" indent-line-function)
               nil)))
    (sit-for 1)
    (mapc #'(lambda (marker)
              (set-marker marker (point)))
          trouble-markers)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 AUCTeX 一起使用时,在 $0 之后以 % 结束行的 yasnippets 行为很奇怪 的相关文章

  • 如何去掉 CR (^M) 并保留 LF (^J) 字符?

    我正在尝试使用 Hexl 模式手动从文本文件中删除一些特殊字符 但不知道如何在 Hexl 模式下删除任何内容 我真正想要的是删除回车符并保留换行符 Hexl 模式是执行此操作的正确方法吗 无需寻找替代 就用吧 M x delete trai
  • 在Emacs中,这个错误是什么意思? “警告:运行时需要 cl 包”

    我正在字节编译一个模块 它给了我这个警告 Warning cl package required at runtime 为什么这是一个警告 我很清楚我正在使用cl包裹 事实上有一个 require cl 模块中的语句 使用有什么问题吗cl
  • 在 Atom 中使用变量创建片段

    是否可以将变量合并到 Atom 中的片段中 例如 当您想要预先填充即将出现的点时 这对于 for 循环非常有用 The snippets cson我想以java作为源的条目 不幸的是它不起作用 source java For Loop pr
  • Emacs Windows 拼写检查 - aspell 或 hunspell

    我在Windows XP操作系统上使用emacs 23 1 50版本 我无法使用 emacs wiki 提供的示例将 hunspell 或 aspell 设置为 emacs 的一部分 任何人都有 Windows XP 的工作配置 请帮助我
  • Emacs 中的 C 注释 - Linux 内核风格

    我在用着 setq default comment style multi line and my region comments when doing M are void main int i int b printf format s
  • Emacs 关于 python 模式函数的默认提示

    在 python 模式下 有一个名为 py execute region 的函数 它将突出显示的代码区域发送到 Python 缓冲区进行评估 评估后 光标位于 Python 缓冲区中 但我希望它保留在脚本缓冲区中 以便我可以继续生成更多代码
  • IPython 自动完成 emacs24 不起作用

    我将 emacs24 0 92 与 IPython 12 一起使用 我从 IPython 存储库中获取了 ipython el 文件并尝试了这个补丁 https github com ipython ipython pull 204但是自动
  • 如何配置 Firefox 在某些链接上运行 emacsclientw?

    我有一个 Perl 脚本 它会在一堆日志文件中查找 有趣 的行 以获取一些有趣的定义 它生成一个 HTML 文件 其中包含一个表 该表的列是时间戳 文件名 行号引用和 有趣 位 我想做的是让文件名 行号成为一个实际的链接 它将在 emacs
  • Emacs 23.1.50.1 在 Windows XP 上随机挂起 6-8 秒

    我的 Windows XP 机器上有 EmacsW32 23 1 50 1 emacs 运行 它随机挂起 5 到 8 秒 非常令人沮丧 有人有解决办法吗 我什至尝试使用来自 gnu ftp 站点的 emacs win32 二进制文件 23
  • 并排镜像两个打开的缓冲区中的文件位置

    我试图在 emacs 中找到一个包 函数 它可以并排打开两个文件 使其位于同一行位置 镜像正在移动的缓冲区的移动 这意味着 对于并排打开的两个缓冲区 在其中一个缓冲区中移动 向上 向下翻页 移动光标等 将在另一个缓冲区中进行相同的移动 更具
  • eshell (elisp shell) 启动时读取什么设置文件? eshell 如何设置它的 PATH?

    使用 emacs eshell echo PATH 显示与 PATH 环境变量不同的路径 我还检查了 eshell 不读取 bashrc 或 profile 我认为这就是路径不同的原因 eshell 启动时读取什么设置文件 eshell 如
  • Emacs:调试Python的方法

    我把这个贴在程序员 stackexchange com https softwareengineering stackexchange com questions 29844 emacs methods for debugging pyth
  • Emacs:结合 isearch-forward 和 center-top-bottom

    预先非常感谢您的帮助 在 Emacs 中 我喜欢使用 iseach forward C s 但如果突出显示的字体单词位于屏幕中间而不是最底部的中心 我会更喜欢它 我发现自己不断地这样做 C s foo C s C s C s 哦 这就是我一
  • 在 Emacs Paredit 中交换括号和方括号

    如何在 paredit 模式下定义交换括号和方括号的命令 所以任务就是把它变成这样 例如 blah a b c 进入这个 blah a b c 使用 paredit 模式 移至表达式的开头 a 进而 C M SPC
  • 如何在 Emacs Lisp 中“URL 解码”字符串?

    我有一个像 foo 20bar 这样的字符串 我想要其中的 foo bar 我知道 Emacs Lisp 中必须有一个内置函数来解码 URL 编码的字符串 查询字符串 但我今天找不到它 无论是在我的文档中还是在我的文档中都找不到它 lisp
  • 如何使用 Emacs 通过 HTTP 打开远程文件?

    大多数开源软件都通过某些 HTTP 服务公开其代码 我想从 Emacs 打开并浏览此类代码 但 AFAICS trapmp 只允许ssh and ftp 因此 我的第一个问题是如何打开 HTTP URL 以便在 Emacs 中进行读取 然后
  • “swank-clojure”到底是做什么的,我们有“swank-SOMETHING_ELSE”吗?

    我的肤浅理解是 swank clojure 使 M x slime connect 成为可能 我的意思是 它提供了与 clojure 服务器的连接 例如 lein swank 我的理解正确吗 如果不是 那swank的目的是什么 那么 是否有
  • Emacs 行编号性能

    我试过了linum and nlinum 两者对于超过 100k 行的文件的性能都很糟糕 for x in 1 100000 do echo x done gt 100k txt emacs q 100k txt M x load libr
  • Resharper:使用 tab+tab 的代码片段

    在 VS 中 要使用片段 例如自动实现的属性 我输入 prop 然后按 TAB 两次 然而 R 我使用的是 R 6 会在一个选项卡后插入代码片段 导致我总是输入错误 是否有某个选项可以将其设置为使用two tabs 不幸的是 据我所知 您无
  • 在 Emacs 中,如何确定哪个包正在加载 Tramp?

    我与 ranp 和 cygwin mount 有一个奇怪的交互 我认为 Emacs 文件名的制表符补全会附加一个额外的 i cygwin https stackoverflow com questions 1705802 emacs tab

随机推荐

  • Sparql 使用变量绑定计数结果

    有什么办法可以bind的结果count到一个变量 我尝试了以下方法 不起作用 SELECT totalSubject WHERE s p o BIND COUNT s AS totalSubject COUNT is an 总计的函数 只能
  • 睡眠/等待,不消耗CPU

    所以我正在将这个智能手机应用程序模拟到 Windows 这是一个运行其逻辑并绘制方法的游戏1 60速度 以毫秒为单位 这是16 6667 我已经实现了这个游戏循环 private const double UPDATE RATE 1000d
  • clusterExport到R并行中的单线程

    我想分割一个大的data frame分成块并将每个块单独传递给集群的不同成员 就像是 library parallel cl lt makeCluster detectCores for i in 1 detectCores cluster
  • iOS 13 Beta 版本中的应用程序启动时应用程序崩溃

    这是崩溃报告 崩溃仅发生在 iOS 13 beta 版本上 Crashed com apple main thread 0 libsystem pthread dylib 0x1ae056484 pthread get qos class
  • SwiftUI 列表正在使用 .navigationBarItems 进行剪辑[重复]

    这个问题在这里已经有答案了 When I add navigationBarItems modifier list is clipping and doesn t take all space like this It should be
  • Google plus API 可像 Facebook 一样在墙上发布

    我一直在谷歌上搜索教程 以便在谷歌加上发布一些文本 但好像没有 我还尝试浏览谷歌为 mac 和 iPhone 开发人员提供的文档 但找不到任何可以解决我的问题的内容 此外 关于如何让用户登录 google plus 帐户的信息也很少 我不确
  • object-fit 如何与 canvas 元素配合使用?

    我一直无法找到任何文档来告诉我一种或另一种方式 我可以在画布元素上使用适合对象的封面吗 我做了一些实验 但它的表现并不符合预期 有人能给我一个明确的答案吗 object fit1 will only have an effect when
  • 为什么我会收到此 NullPointer 异常?

    两个表 一个的主键是另一个的外键 旧数据库 我使用双向一对一映射 Entity public class First Id protected int a OneToOne mappedBy first cascade CascadeTyp
  • 将 Microsoft Office Communicator 2007 集成到 ASP.NET 页面中

    我正在为我公司的 Intranet 使用 ASP NET 和 C 构建网站 那么是否可以将 Microsoft Office Communicator 2007 集成到 ASP NET Page 中 即该网站应该能够提供所有联系人的当前状态
  • PyQt4 - “运行时错误:底层 C/C 对象已被删除”

    我不断收到此运行时错误 我不知道如何修复 这就是我想要实现的目标 当我单击 QTreeView 中的不同项目时 我想用值动态更新此 QTableWidget 在大多数情况下 我的代码可以工作 除非我单击第二个项目并且我需要更新我的 QTab
  • 缓存sql数据库的结果,还是每次查询?

    我正在根据 sql 查询生成页面 这是查询 CREATEPROCEDURE sp searchUsersByFirstLetter searchQuery nvarchar 1 AS BEGIN SET NOCOUNT ON SELECT
  • 以编程方式自动静音 Android 手机的音量?

    我正在开发一个可以自动关闭 Android 手机声音的应用程序 如何检测声音的音量并以编程方式将其关闭 if hour myTime getHour minute myTime getMinute if Settings getSetMyT
  • Twilio环境变量错误

    Twilio Python如果我将 account sid 和 auth token 直接放入代码中 则工作正常 但当我将它们设置为环境变量时 则无法工作 我正在使用 PyCharm 并通过编辑配置 gt 环境变量来设置它们 就像我过去对其
  • 如何根据生效日期获取当前记录?

    如何根据生效日期获取当前记录 我应该使用子查询吗 除了 MAX 之外还有什么可以使用的吗 我有这些表格示例 ResourceID is the ID number of the Resource OrganizationId is the
  • ios 7 中的解密无法使用 aes

    在我的应用程序中 我从 xml 获取数据 数据已加密 我需要解密收到的 nsstring UserName QEjbHvzPjk YuLDVPUJuEA 我需要将此 nsstring 解密为常规格式 我搜索并找到 aes 但它没有进行任何更
  • C# 中的 ArrayList 与 List<>

    有什么区别ArrayList and List lt gt in C 难道仅此而已List lt gt 有一个类型 而ArrayList不是吗 是的 差不多 List
  • preg_replace 屏蔽电话号码的部分内容

    好吧 在重新阅读我之前寻求帮助的帖子后 我发现我没有完全清楚地说明我想要做什么 也没有指出原因 我正在忙于开发一个网站 该网站可能会显示人们留下电话号码的消息 尽管这很愚蠢 我需要负责并确保在这种情况下号码被屏蔽 首先 我需要搜索存储在变量
  • Azure Devops yaml管道if else条件与变量

    我正在尝试将 Azure Devops yaml 管道中的 if else 条件与变量组一起使用 我正在尝试按照最新的 Azure Devops yaml 管道构建来实现它 以下是我的场景中 if else 条件的示例代码 test 是 m
  • int * & 有实际意义吗?

    我在大学里找了一些关于 C 的练习 我发现了这个练习 include
  • 与 AUCTeX 一起使用时,在 $0 之后以 % 结束行的 yasnippets 行为很奇怪

    有百分号的 Yasnippet 片段 以片段的最后一个点结束一行 0 在百分号表现奇怪之前 光标被放置在百分号之后而不是之前 我想知道如何才能避免这种奇怪的行为 考虑以下片段 mode snippet name test snippet k