【问题标题】:Yasnippet: How to expand on " or" but not on "-or"Yasnippet:如何扩展“或”而不是“-or”
【发布时间】:2013-01-15 09:58:57
【问题描述】:

标题说,是否有可能改变 yasn-ps 的行为,以便不能在“-or”上展开,但只能在“[newline]or”或“[tab]or”上展开?

我想要这个,因为我试图在可以扩展时自动扩展我的 yasn-ps,并且只有在我编写变量名时才会发生冲突。

【问题讨论】:

  • 你可以直接问yasn-p的开发者。
  • 我猜你可以使用condition directive 来指定这个。它是否应该在所有情况下都扩展,但在 or 之前有连字符时?
  • 我会说是的,但是一旦可以改变这种行为,也许更高级的事情就成为可能。
  • 我相信通过你的链接确实可以解决这个问题。
  • @Dualinity 我猜只需要一行 lisp 代码,如果 yasn-p 键之前的字符直接在该点之前,则返回 true 不是连字符,否则返回 false。甚至可以做一个丑陋的黑客检查,检查从该点后退三步的字符是否不是连字符。

标签: emacs yasnippet


【解决方案1】:

我在这里得到了解决方案: http://ergoemacs.org/emacs/emacs_tip_yasnippet_expand_whole_hyphenated_word.html

有一个变量(defvar yas-key-syntaxes (list "w" "w_" "w_." "w_.()" "^ ")..),它控制着各种扩展。 "w" 表示`"-or" 扩展为单独的"or"。

如果

(setq yas-key-syntaxes '("w_" "w_." "w_.()" "^ "))

然后"-or" 仅扩展为复杂表达式"<some>-or"。但是" or" 像往常一样被扩展。

所以,"buffer-substring" 将仅在文件 buffer-substring.yasnippet 包含内容时才会扩展

# contributor: Xah Lee (XahLee.org)
# name: buffer-substring
# key: buffer-substring
# --
(buffer-substring START$0 END)

但是用"w"关键字"buffer-substring"会扩展为substring.yasnippet

如果文件buffer-substring.yasnippet 中有额外的字符串# key: bs,那么"buffer-substring" 将根本不会被扩展。 (适用于版本:0.8.0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 2010-10-02
    • 2020-06-24
    • 2021-05-17
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多