¿Cómo ejecutas la palanca desde emacs?


9

Mientras escribo el código RoR, a menudo necesito ejecutar drop en una sesión de palanca o un depurador. Así que coloco mi binding.prylínea en el código de implementación y ejecuto mis especificaciones. Eso funciona bien si ejecuto las especificaciones en un terminal, pero desde dentro de Emacs, obtengo un resultado desordenado y es muy difícil usar el depurador / palanca.

¿Cómo están haciendo eso?

ingrese la descripción de la imagen aquí

Respuestas:


10

rspec-moderecientemente ha agregado una sección en el archivo README sobre este tema. Dice:

Instala inf-rubyy agrega esto a tu archivo init:

(add-hook 'after-init-hook 'inf-ruby-switch-setup)

Cuando haya alcanzado el punto de interrupción, presione C-x C-qpara habilitar inf-ruby.


1
Que funciona, pero por desgracia tiene los códigos de color raro personajes como ^[[0G, ^[[1A. ¿Puedo deshacerme de esos?
chalmagean

Para obtener uno de los códigos de escape, consulte las instrucciones en la parte inferior: github.com/nonsequitur/inf-ruby#bugs . Si los códigos de color también plantean un problema (en mi sistema, no lo hacen), agregue Pry.config.color = falsede la misma manera que la solución sugerida allí.
Dmitry

6

Creo que Pry-Remote es la mejor manera de ejecutar Pry dentro de Emacs, ya que Pry obtiene su propio búfer dedicado y puede conectarse a un proceso de Ruby desde cualquier lugar (incluido un terminal que no sea Emacs o cosas como Pow ). Yo uso algo como esto:

(defun my-run-remote-pry (&rest args)
  (interactive)
  (let ((buffer (apply 'make-comint "pry-remote" "pry-remote" nil args)))
    (switch-to-buffer buffer)
    (setq-local comint-process-echoes t)))

(define-key ruby-mode-map (kbd "C-c r d") 'my-run-remote-pry) ; (or whatever keybinding)

Luego, pondrás binding.remote_prytu código; se adjunta a una espera prycon C-c r d(o lo que sea) y sale de la palanca (continuando el proceso) con C-c C-d.

Probablemente también desee deshabilitar la paginación en su ~/.pryrc, ya que no funciona bien con comint:

Pry.config.pager = false
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.