2014-03-01 17 views
0

我使用Emacs和sass-mode和yasnippet來編輯.sass文件。這一切都很好,片段正在擴大。但是由於sass模式需要haml模式,編輯sass文件時也會加載haml片段。這很麻煩,因爲haml片斷在sass中是無用的。防止使用sass-mode和yasnippet加載HAML片段

我檢查了一個.yas-parents文件的片段目錄,但沒有找到它。我已經通過文檔和elisp代碼進行了搜索,但一個設置或功能沒有跳出來對我。當我在sass緩衝區中運行M-x yas-describe-table時,我將顯示sass和haml的擴展表。

理想情況下,我想防止haml片段在加載sass緩衝區時打開。但是,如果我可以設置某種鉤子來刪除haml表的片段時,sass緩衝區加載,這也會很好。

謝謝!

+0

你知道爲什麼'sass-mode'主模式是從'haml-mode'派生出來的。這是這個概念,在我看來這是錯誤的,這是打破了雅斯尼普。在http://github.com/capitaomorte/yasnippet/issues/465 –

回答

0

似乎沒有辦法在yasnippets做你想做的事情。所以你應該在yasnippet github repo上請求這個功能。

作爲臨時解決方案,您可以通過如下建議yas--modes-to-activate來禁止在sass-mode中加載haml-mode片段。記住,這是不建議

(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時加載。

+1

見我的評論你是一個天才!謝謝。我剛剛用yasnippet https://github.com/capitaomorte/yasnippet/issues/465打開了一個問題,所以也許我們會爲此選擇一個選項。 –

+0

此外,您的修補程序與我的yasnippet版本完美配合。版本:20140227.703 –