2012-09-17 48 views
0

我正在尋找一種方法來快速將<%%>標籤放在標記區域。 我使用rinari和rhtml模式。我想要做這樣的事情(我在RHTML模式):Emacs和嵌入式紅寶石<% %>標籤

我有例如

a.each do |e| 
    puts e 
end 

,我有選擇區域中選擇一個Ruby代碼,把一些法寶和我有:

<% a.each do |e| %> 
    <%= puts e %> 
<% end %> 

我需要,如果我選擇用混合一些HTML標記Ruby代碼應該做聰明的,例如,它應該適用<%%>只Ruby代碼,留下其餘的人沒有受傷。另外,如果我不選擇任何內容,它應該將<%%>點放在中間,等待我的輸入。我想知道是否存在作爲emacs功能或包可能?

我試圖做到這一點,作爲YAsnippet mod的一個片段,但它遠離我喜歡的東西。

回答

1

如果您在使用已經內置了GNU AWK OS,你可以使用簡單的一ungly行腳本:

(defun make-it-erb (begin end) 
    "Add <%=? %> for each string" 
    (interactive "r") 
    (shell-command-on-region begin end "gawk '/^[ \t]*(puts)|(print)/{ printf \"<%=\" $0 \"%>\"; next } // { printf \"<%\" $0 \"%>\" } '" nil "")) 
    (global-set-key [f7] 'make-it-erb) 

你應該在你的.emacs文件中添加它,並評估功能之上。

0

有一個不錯的小工具,名爲wrap region,您可能會覺得有用。

P.S.在Emacs中使用嵌入式ruby代碼通常是屁股疼痛 - 我嘗試過rhtml和mumamo,但沒有發現它們特別精緻。最後,我決定使用HAMLSlim - 更好的模板語言,並支持Emacs。