通常、あなたが何かを実行したい場合コンパイルが完了したら、コンパイルコマンドに追加します。 、代わりに
M-x compile RET make RET
の例えばあなたは
M-x compile RET make && ./test RET
を入力する可能性があるかどうかは多分
M-x compile RET make test RET
を行うことができますので、あなたは、あなたのメイクファイルにいくつかの適切なターゲットにプログラムを追加することができますコンパイルされたプログラムをeshellで実行したい理由を説明できるので、より良いアドバイスを提供できます。コンパイル処理が終了したときに呼び出す
機能:あなたはESHELL使用を主張する場合
しかし、あなたはcompilation-finish-functions
を使用することができるかもしれません。各関数は、コンパイルバッファとプロセスの終了方法を記述する文字列という2つの引数で呼び出されます。
これはすべてが文書化されているわけではありませんが、処理が正常に終了した場合は、文字列は"finished\n"
です。ですから、このような何かがあります
(defun run-compilation-output-in-eshell (buf msg)
"If compilation finished successfully, switch to eshell and execute a command."
(when (string= msg "finished\n")
(eshell)
(goto-char (point-max))
(eshell-kill-input)
(insert "echo command goes here")
(eshell-send-input)))
(add-hook 'compilation-finish-functions #'run-compilation-output-in-eshell)
をしかし、これはむしろ失礼ようだ:あなたはコンパイルが完了したときにeshell
バッファに入力することが起こるならば、これはあなたの入力を削除します。上で述べたように、もう少しコンテキストが役立つかもしれません。
こんにちは。答えをありがとう、あなたのポストの最後の機能は、そのトリックです。これは現在のところ関係しませんが、文脈では、 'g ++ source.cc 'で簡単にコンパイルできるC++(spoj/topcoder)の単純なソースファイルがたくさん書かれています。私はそれをテストすることができます。 – zeroDivisible
私はそれを理解していますが、eshell *でコンパイルされたプログラムを実行する必要がある理由はまだ分かりません。コンパイルされたプログラムとコマンドラインで対話する必要があるからですか? –
私は家庭や職場でemacsで働いています。仕事では私のPC(win xp)の権限が非常に限られています。eshellはUnixシェルにとってもっとも近いものです。さらに、Emacsにはキーストロークが少ないので、基本的なコマンドが少ないシェルが必要なので、それだけで十分です。また、私はこのハックをどのように行うことができるのだろうと思っていた;) – zeroDivisible