私はemacsでpython koansを完成させていました。kdbマクロを使用して、シェルバッファーでの変更をテストし、pythonコードに戻りました。シェルバッファーから次のエラーの行番号を取得して直接ジャンプできるようにしたかったのですが、実行に少し時間がかかったため、代わりに以前の出力が強制終了されました。
記録中に一時停止をマクロに挿入するにはどうすればよいですか?
私はemacsでpython koansを完成させていました。kdbマクロを使用して、シェルバッファーでの変更をテストし、pythonコードに戻りました。シェルバッファーから次のエラーの行番号を取得して直接ジャンプできるようにしたかったのですが、実行に少し時間がかかったため、代わりに以前の出力が強制終了されました。
記録中に一時停止をマクロに挿入するにはどうすればよいですか?
回答:
(sleep-for n)
を使用して、マクロの実行中に評価を試すことができますM-:
。これによりEmacsのメインスレッドがスリープ状態になるため、残りのマクロアクションが遅延しますが、Pythonなどの他のプロセスからの出力の取得には影響しません。
(Pythonプロセスの結果のように)正しい出力を取得している場合、これによりカーソルで奇妙な動作が発生する可能性があることに注意してください。すべての出力を取得する必要がありますが、カーソルは終了の追跡を停止する場合があります。少なくとも、今それをテストしているときに、時々それが起こったことがあります。
説明から推測しているのですが、シェルバッファでpythonを実行していますか?pythonを同期コマンドとして実行するか、少なくともcompile
pythonの実行に使用する方が理にかなっている可能性があります。
を使用する場合はcompile
、それにキーをバインドし、C-x `(command-next-error
)またはM-g n、M-g p(next-error
、previous-error
)を使用して組み込みのエラー解析でエラーをジャンプする方が簡単だと思います。
私は組み込み使用してテストpython-mode
、およびC-c C-c実行python-shell-send-buffer
のpythonを開始し、それにバッファを送信します。Pythonシェルはエラーを認識しているように見えるので、繰り返し呼び出すC-x `とエラーのある各行にジャンプします。
「以前の出力を無効にする」という意味がよくわかりませんか?プログラムを再度同時に実行しながらエラーをステップスルーしようとしていますか?