6

xxx随着最近从 MELPA 更新的 Yasnippet ,我希望能够只停用todo带有文本模式的片段。第一个用 展开,x另一个用展开t,这让我很困扰,因为我在 org 模式下写数学课本,我需要自己写几个x' 和t',然后按TAB退出括号。

yas-buffer-local-condition看来,如果片段中有#condition:指令,我可能会做一些事情,但提到的片段没有。

如果我只是删除文件,我会按自己的方式行事,但不幸的是,它们会在 Yasnippet 的每次更新时重新出现。

4

1 回答 1

3

一种可能的解决方案是通过向每个片段添加一行代码来控制具有键绑定# binding: C-I a b c的片段 - 例如,或者# binding: C-I d e f  该组合C-I等效于制表键,并且以下字母之间的空格意味着它们被单独按下一个时间。此外,还可以修改以下代码行以反映不同的键: # key: a_b_c# key: d_e_f

该变量yas-snippet-dirs可用于控制片段的位置。将片段移动到不同的位置可能是个好主意,这样它们就不会被未来的更新所触及(例如,el-get)。


xxx片段如下所示:

原来的

# -*- mode: snippet -*-
# name: xxx
# key: x
# --
`(yas-with-comment "XXX: ")`

修改的

# -*- mode: snippet -*-
# name: xxx
# key: a_b_c
# binding: C-I a b c 
# --
`(yas-with-comment "XXX: ")`

todo片段如下所示:

原来的

# -*- mode: snippet -*-
# name: todo
# key: t
# --
`(yas-with-comment "TODO: ")`

修改的

# -*- mode: snippet -*-
# name: todo
# key: d_e_f
# binding: C-I d e f
# --
`(yas-with-comment "TODO: ")`

对于那些好奇的人,函数yas-with-comment看起来像这样

(defun yas-with-comment (str)
  (format "%s%s%s" comment-start str comment-end))
于 2014-03-07T02:46:43.497 回答