emacs - YASnippet 基于缓冲区/文件名的条件激活
问题描述
我有一堆 YASnippet 用于单一模式,有时很难在主列表中找到我正在寻找的片段。
预期行为:
我的目标是在名称中带有“模型”的所有文件/缓冲区中激活这样的片段(例如,app/models/my_model.rb)
# that's ruby-mode/model-foo:
# -*- mode: snippet -*-
# name: model - foo activation name
# condition: (string-match-p (regexp-quote "models") (buffer-file-name (window-buffer (minibuffer-selected-window))))
# --
model_foo
这个在文件/缓冲区中,名称中带有“控制器”(例如 app/controllers/another_model.rb 或 test/controllers/another_model.rb 等)
# that's ruby-mode/controller-foo:
# -*- mode: snippet -*-
# name: controller - foo activation name
# condition: (string-match-p (regexp-quote "controllers") (buffer-file-name (window-buffer (minibuffer-selected-window))))
# --
controller_foo
实际行为:
在 ruby 模式下的所有文件中,这两个片段都被激活(可供选择)。看起来condition:
完全被忽略了。我什至尝试将其设置为“# condition: false”,并且片段仍在工作/可见。
什么可能导致此问题?
pkg-info-package-version yasnippet
20191222.2206
解决方案
我还没有解决这个问题的方法,但我只是偶然发现了导致它的原因。
该问题仅存在于 SpacemacsSPC i s
中使用的默认快捷方式中,该快捷方式spacemacs/helm-yas
似乎完全忽略# condition:
了 YASnippet 系统。作为一种(临时?)解决方法,您可以使用yas-insert-snippet
与它非常相似spacemacs/helm-yas
但条件系统运行正常的方法。
推荐阅读
- excel - 带有输入的 EXCEL 动态下拉列表
- java - 调用类时收到 null
- php - 如何增加变量
- vue.js - Echarts - 如何在vuejs中绘制不同数据值的组合图表
- javascript - 我得到 'TypeError: t.nodeName is undefined' 无论我使用 'this' 关键字迭代并从我的 HTML 表单中的输入字段中获取值
- angular - 向api发送空数据
- apache-kafka - 如何从 Java Api 生成消息。卡夫卡
- python - 从 NBA API 收集特定球员信息
- c++ - Visual Studio 2017 和 2019 拒绝为 C++ 项目加载符号
- spring-boot - 加载配置属性时出错