2012-09-17 2 views
0

Je cherche un moyen de mettre rapidement <%%> tags sur la région marquée. J'utilise rinari avec le mode rhtml. Je veux faire une telle chose (je suis en RHTML-mode):Emacs et ruby ​​intégré <% %> Tags

J'ai un code Ruby par exemple

a.each do |e| 
    puts e 
end 

et je sélectionne avec select région, mettre un peu clé magique et j'ai:

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

je le redemanderai devrait le faire intelligent, par exemple, si je choisi le code Ruby avec quelques balises HTML mélangés, il devrait appliquer <%%> uniquement au code rubis, laissant le reste indemne. De plus, si je ne sélectionne rien, il faut mettre <%%> avec le point juste au milieu, en attendant ma saisie. Je me demande est quelque chose comme ça existe comme une fonction ou un paquet emacs peut-être?

J'essayais de le faire, en tant qu'extrait pour le mod YAsnippet, mais c'est loin de ce que j'aime.

Répondre

1

Si vous utilisez OS qui a intégré GNU awk, vous pouvez utiliser ce simple script un ungly en ligne:

(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) 

Vous devez l'ajouter dans votre fichier .emacs et évaluer les fonctions ci-dessus.

0

Il y a un petit utilitaire, appelé wrap region, que vous pourriez trouver utile.

P.S. Travailler avec du code ruby ​​intégré dans Emacs est généralement une douleur dans le cul - j'ai essayé rhtml et mumamo, mais je ne les ai pas trouvé particulièrement polis. Enfin, j'ai décidé d'utiliser HAML et Slim - de plus belles langues de gabarit avec un support solide d'Emacs.

Questions connexes