Como você roda o emacs


9

Ao escrever o código RoR, muitas vezes preciso executar o drop em uma sessão de alavanca ou em um depurador. Então, eu coloco minha binding.prylinha no código de implementação e executo minhas especificações. Isso funciona bem se eu executar as especificações em um terminal, mas dentro do Emacs, recebo uma saída confusa e é muito difícil usar o depurador / alavanca.

Como vocês estão fazendo isso?

insira a descrição da imagem aqui

Respostas:


10

rspec-modeadicionou recentemente uma seção no README sobre este assunto. Diz:

Instale inf-rubye adicione isso ao seu arquivo init:

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

Quando você atingir o ponto de interrupção, pressione C-x C-qpara ativar inf-ruby.


1
Isso funciona, mas infelizmente tem esses caracteres estranhos do código de cores ^[[0G, como ^[[1A. Posso me livrar deles?
chalmagean

Para um dos códigos de escape, consulte as instruções na parte inferior: github.com/nonsequitur/inf-ruby#bugs . Se os códigos de cores também apresentarem um problema (no meu sistema, eles não o fazem), adicione Pry.config.color = falseda mesma maneira que a correção sugerida lá.
Dmitry

6

Acho que o pry-remote é a melhor maneira de executar o alavancagem no Emacs, desde então o pry obtém seu próprio buffer dedicado e pode se conectar a um processo ruby ​​de qualquer lugar (incluindo um terminal que não seja do Emacs ou coisas como pow ). Eu uso algo como isto:

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

Então, você colocará binding.remote_pryseu código; você se apega a uma espera prycom C-c r d(ou o que seja) e sai da alavanca (continuando o processo) com C-c C-d.

Você provavelmente também desejará desativar a paginação no seu ~/.pryrc, uma vez que ele não funciona bem com comint:

Pry.config.pager = false
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.