Wie läuft man von Emacs aus?


9

Beim Schreiben von RoR-Code muss ich häufig Drop in eine Pry- Sitzung oder einen Debugger ausführen . Also platziere ich meine binding.pryZeile im Implementierungscode und führe meine Spezifikation (en) aus. Das funktioniert gut, wenn ich die Spezifikationen in einem Terminal ausführe, aber innerhalb von Emacs erhalte ich eine unordentliche Ausgabe und es ist sehr schwierig, den Debugger / Pry zu verwenden.

Wie macht ihr das?

Geben Sie hier die Bildbeschreibung ein

Antworten:


10

rspec-modehat kürzlich einen Abschnitt in der README-Datei zu diesem Thema hinzugefügt . Es sagt:

Installieren inf-rubySie diese und fügen Sie sie Ihrer Init-Datei hinzu:

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

Wenn Sie den Haltepunkt erreicht haben, drücken Sie, um ihn C-x C-qzu aktivieren inf-ruby.


1
Das funktioniert, aber leider hat es diese seltsamen Farbcodezeichen wie ^[[0G, ^[[1A. Kann ich diese loswerden?
Chalmagean

Informationen zu den Escape-Codes finden Sie in den Anweisungen unten: github.com/nonsequitur/inf-ruby#bugs . Wenn Farbcodes ebenfalls ein Problem darstellen (auf meinem System nicht), fügen Sie sie Pry.config.color = falseauf die gleiche Weise hinzu wie die dort vorgeschlagene Korrektur.
Dmitry

6

Ich finde, dass pry-remote der beste Weg ist, pry in Emacs auszuführen, da pry dann einen eigenen dedizierten Puffer erhält und von überall aus an einen Ruby-Prozess angehängt werden kann (einschließlich eines Nicht-Emacs-Terminals oder Dinge wie pow ). Ich benutze so etwas:

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

Dann geben Sie binding.remote_pryIhren Code ein. Sie hängen an einem Warten prymit C-c r d(oder was auch immer) und beenden pry (setzen den Prozess fort) mit C-c C-d.

Wahrscheinlich möchten Sie auch das Paging in Ihrem deaktivieren ~/.pryrc, da es nicht gut funktioniert mit comint:

Pry.config.pager = false
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.