Emacs和嵌入式ruby< %%>标签

时间:2012-09-17 16:54:30

标签: ruby-on-rails ruby emacs erb rhtml

我正在寻找一种快速投放< %%>的方法标记区域上的标记。 我正在使用rinari和rhtml模式。我想做这样的事情(我是在rhtml模式下):

我有一个ruby代码,例如

a.each do |e|
  puts e
end

我正在选择区域选择它,放一些魔法键并且我有:

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

我要求它应该聪明,例如,如果我选择混合了一些HTML标签的ruby代码,它应该应用&lt; %%&gt;只有ruby代码,其余的安然无恙。另外,如果我什么都不选,那么它应该放在&lt; %%&gt;只是在中间点,等待我的输入。我想知道像emacs函数或软件包那样存在吗?

我试图这样做,作为YAsnippet mod的片段,但它远非我喜欢它。

2 个答案:

答案 0 :(得分:1)

如果您使用内置GNU Awk的操作系统,您可以使用这个简单的单行脚本:

(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文件中并评估上述功能。

答案 1 :(得分:0)

有一个很好的小实用程序,称为wrap region,您可能会发现它很有用。

P.S。在Emacs中使用嵌入式ruby代码通常是一个痛苦的屁股 - 我尝试过rhtml和mumamo,但没有发现它们特别精致。最后,我决定使用HAMLSlim - 更好的模板语言和强大的Emacs支持。