使用sass-mode和yasnippet时,防止加载HAML代码段

时间:2014-03-01 16:29:25

标签: emacs elisp yasnippet

我正在使用带有sass-mode和yasnippet的Emacs来编辑.sass文件。这一切都很有效,并且片段正在扩展。但是由于sass-mode需要haml-mode,因此在编辑sass文件时也会加载haml片段。这很麻烦,因为haml片段在sass中没用。

我已经检查了我的snippets目录中的.yas-parents文件并没有找到。我搜索了文档和elisp代码,但设置或功能没有跳出来。当我在sass缓冲区中运行M-x yas-describe-table时,我会显示sass和haml的扩展表。

理想情况下,我想在打开sass缓冲区时阻止haml片段在打开时加载。但是如果我可以设置某种钩子来在加载sass缓冲区时移除片段的haml表,那也很好。

谢谢!

1 个答案:

答案 0 :(得分:0)

yasnippets似乎没有办法做你想做的事。因此,您应该在yasnippet github repo上打开问题,请求此功能。

作为临时解决方案,您可以通过建议haml-mode按以下方式禁用sass-mode yas--modes-to-activate个代码段的加载。请记住,这是推荐

(eval-after-load "yasnippet"
  '(progn (defadvice yas--modes-to-activate (after my-simple-advise)
           (when (eq major-mode 'sass-mode)
             (setq ad-return-value (remove 'haml-mode ad-return-value))))

         (ad-activate 'yas--modes-to-activate)))

以上建议yas--modes-to-activate,以便在haml-mode时不会将sass-mode作为要加载的模式返回。