実行M-x compileすると、新しいサブシェルが生成され、コンパイルコマンドが実行されます。コンパイルコマンドが戻るとすぐに、シェルプロセスは強制終了されます。これがほとんどの場合に望ましい理由はわかりますが、現在は役に立たない状況にあります。
現在、専用のビルド環境で作業しています。コンパイラーを実行する前に、ビルドをセットアップするためにいくつかの初期手順を実行する必要があります。環境が持続する限り、セットアップ手順を1回だけ実行する必要があります。しかし、それを使用M-x compileすると、コンパイルまたは再コンパイルするたびに手順を実行する必要があることを意味します。
バックグラウンドで持続するサブシェルを生成する方法はありますか?一つM-x compileとM-x gdb彼らはシェルプロセスを実行する必要があるたびに使用することができますか?
動機:
xcc特別なプラットフォーム用のCコードをビルドするプログラム(これをと呼びます)があります。コードをビルドするには、まずプロンプトxccから始めtcshます。
$ xcc
プログラムの読み込みに10秒以上かかり、インタラクティブプロンプトでコマンドを入力できます
xcc>> add target myprogram
xcc>> set source myprogram $PROJDIR/src/
xcc>> set includes myprogram $PROJDIR/include/
xcc>> set type myprogram primitive
xcc>> set inputs myprogram int8,int8
xcc>> set outputs myprogram fix16,fix16
xcc>> build myprogram
上記の手順はカスタムマクロに組み込むことができるbuildmyprog.macroので、シェルから直接、またはemacsから実行できます。M-x compile
$ xcc buildmyprog.macro
このアプローチの主な問題は、xccコンパイルが始まるまでにプログラムのロードに10秒かかることです。私はすべての時間、私は私が実行し始めていることをコンパイルし、余分な10秒待っているの疲れ十分に得xccにansi-term別のバッファでは。コードを変更して保存した後、ansi-termバッファに切り替えて実行します
xcc>> build myprogram
これは問題なく動作しますが、そのバッファーに切り替えるたびに、「プッシュするだけでF7コンパイルコマンドが既に実行中のインスタンスに送信されたら、すばらしいと思いませんxccか?」
comintはあなたの環境のために派生モードが必要だと思います。あなたが冒険心を持っているなら、ここにそれを書くためのガイドがあります。
comint-send-inputです。これは基本的に手動で行うものであり、elispへの変換はそれほど難しくありません(特に、comintの設定と比較すると)。