Macros copadas de emacs para ruby

by Gastón Ramos

Hoy aprendí algo re copado, definir macros con Emacs, me pregunto por qué no aprendí esta herramienta increiblemente útil, antes!

Stallman y la Iglesia de Emacs

Es muy sencillo definir una macro, tenés que hacer esto:

C-x (

Luego tipear todo lo que necesitemos que haga la macro
y para terminar:

C-x )

Después podemos nombrar la macro con:

M-x name-last-kbd-macro

esto nos permite llamar nuestra macro directamente haciendo:

M-x el-nombre-de-tu-macro

Además podés guardar las macro para que sean persistentes entre
sesión y sesión y esto lo podés hacer por ej, abriendo tu archivo
.emacs y ejecutando:

M-x insert-kbd-macro

Acá les dejo una serie de macro útiles para ruby,
donde además le seteo una combinación de teclas que paso a detallar:

C-c d   -> inserta un debugger
C-c D   -> Borra todas las ocurrencias de debugger
C-c r m -> inserta un bloque map
C-c r e -> inserta un bloque each
C-c r q -> inserta un bloque para una app Cuba, sí cuba! :)

Copien esto dentro de su .emacs

;; Macros copadas para ruby
(fset 'ruby-insert-debugger
   "require 'debugger' ; debugger")

(global-set-key (kbd "C-c d") 'ruby-insert-debugger)

(fset 'ruby-remove-debugger
   [escape ?x ?r ?e ?p ?l tab ?s tab tab return ?r ?e ?q ?u ?i ?r ?e ?  ?\' ?d ?e ?u backspace ?b ?u ?g ?g ?e ?r ?\' ?  ?\; ?  ?d ?e ?u backspace ?b ?u ?g ?g ?e ?r return return])
(global-set-key (kbd "C-c D") 'ruby-remove-debugger)


(fset 'ruby-insert-map
   "map{|| }")
(global-set-key (kbd "C-c r m") 'ruby-insert-map)

(fset 'ruby-insert-each
   "each{|| }")
(global-set-key (kbd "C-c r e") 'ruby-insert-each)

(fset 'ruby-insert-class
   [?c ?l ?a ?s ?s return return ?e ?n ?d up up right right ? ])

(global-set-key (kbd "C-c r c") 'ruby-insert-class)

(fset 'ruby-insert-test
   [?t ?e ?s ?t ?  ?\' ?\' ?  ?d ?o ?  return return ?e ?n ?d up up right right right])
(global-set-key (kbd "C-c r t") 'ruby-insert-test)

(fset 'ruby-insert-cuba-app
   [?\C-c ?r ?c ?< ?  ?C ?u ?a backspace ?b ?a return return ?  
   ?  ?d ?e ?f ?i ?n ?e ?  ?d ?o return return ?  ?  
   ?e ?n ?d up up up up right])

(global-set-key (kbd "C-c r q") 'ruby-insert-test)

No sé si los dije, pero soy fanático de hacer todo con el teclado,
casi no uso el mouse.

About these ads