Comment exécuter pry depuis emacs

9

Lors de l'écriture de code RoR, j'ai souvent besoin d'exécuter drop dans une session de levier ou un débogueur. Je place donc ma binding.pryligne dans le code d'implémentation et exécute mes spécifications. Cela fonctionne bien si j'exécute les spécifications dans un terminal, mais à partir d'Emacs, j'obtiens une sortie désordonnée et il est très difficile d'utiliser le débogueur / levier.

Comment allez-vous les gars?

entrez la description de l'image ici

chalmagean
la source

Réponses:

10

rspec-modea récemment ajouté une section dans le README à ce sujet. Ça dit:

Installez inf-rubyet ajoutez ceci à votre fichier init:

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

Lorsque vous avez atteint le point d'arrêt, appuyez sur C-x C-qpour l'activer inf-ruby.

Dmitry
la source
1
Cela fonctionne , mais malheureusement , il a ces étranges personnages code couleur comme ^[[0G, ^[[1A. Puis-je m'en débarrasser?
chalmagean
Pour l'un des codes d'échappement, consultez les instructions en bas: github.com/nonsequitur/inf-ruby#bugs . Si les codes de couleur posent également un problème (sur mon système, ils ne le font pas), ajoutez Pry.config.color = falsede la même manière que le correctif suggéré ici.
Dmitry
6

Je trouve que pry-remote est le meilleur moyen d'exécuter pry dans Emacs, car alors pry obtient son propre tampon dédié et peut se connecter à un processus ruby ​​de n'importe où (y compris un terminal non Emacs ou des choses comme pow ). J'utilise quelque chose comme ça:

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

Ensuite, vous mettrez binding.remote_pryvotre code; vous vous attachez à une attente pryavec C-c r d(ou autre) et quittez le levier (poursuivant le processus) avec C-c C-d.

Vous voudrez aussi probablement désactiver la pagination dans votre ~/.pryrc, car elle ne fonctionne pas bien avec comint:

Pry.config.pager = false
shosti
la source