タグ付けされた質問 「async」

3
バッファをポップアップせずにバックグラウンドで非同期プロセスを実行するにはどうすればよいですか?
async-shell-command.emacs を使用して非同期バックグラウンドプロセスを実行する関数をいくつか定義しましたが、コマンドを実行するたびに新しいウィンドウ(フレームではない)が作成され、プロセスのバッファーが表示されます。「ポップアップ」バッファなしでコマンドを実行するにはどうすればよいですか?
23 shell  async  process 

1
アクティブなM-を回す!into M-&(a'ka emacsはbash Ctrl-Zに相当)
ときどきM-! some_command、コマンドが予想よりも長く実行され、emacsが長時間フリーズされたままになることがあります。だから、凍結したemacsをglみ、使用しないことで自分を蹴り、次回M-& some_command使用することを約束しますM-&。しかしM-!、何十年も私の筋肉の記憶にあります...そしてもちろんありますがCtrl-G、コマンドを中断して再実行することが好ましくない場合があります(おそらく、それはsthを中断する可能性があり、おそらくは再実行に費用がかかります...)。 シェルkonsoleでの同様の間違いは修正するのは簡単Ctrl-Zでbg、ジョブはバックグラウンドで実行されています。 emacsに同様のトリックがありますか?現在実行中のフォアグラウンド(同期)コマンドをバックグラウンド化(非同期)コマンドに変える方法はありますか? 注:default が不可能な場合M-!、私はM-!他の何かに再バインドする方法の提案を受け入れます(このトリック以外は機能的に同等です)。

1
comintプロセスからの出力を非同期に待機します
まず、免責事項。私はこれを何度も研究しました、そして、私はすでに何らかの方法で答えをすでに見つけたと確信していますが、私はそれを理解しません。 私の問題は次のとおりです。 comintを実行しているプロセスがあります 入力行を送信し、出力をキャプチャして、それが終了したとき(出力の最後の行がプロンプトの正規表現に一致したとき)を確認したい プロセスが出力の送信を完了したときにのみ、別の入力行を送信したい(たとえば)。 少しの背景として、プログラムとの対話を実装するメジャーモードを考えてください。プログラムは、任意の時間で任意の量の出力を返す可能性があります。これは異常な状況ではありませんよね?さて、 入力間で待機する必要がある部分は珍しいかもしれませんが、入力全体を送信するよりもいくつかの利点があります。 出力バッファはきれいにフォーマットされています:入力出力入力出力... さらに重要なことは、プロセスに大量のテキストを送信する場合、テキストは断片に分割され、その断片はプロセスによって貼り付けられます。切断ポイントは任意であり、これにより無効な入力が行われることがあります(たとえば、プロセスは識別子の途中で入力カットを正しく貼り付けません) とにかく、珍しいかどうかにかかわらず、それは複雑であることがわかります。今、私はの線に沿って何かを使用しています (defun mymode--wait-for-output () (let ((buffer (mymode-get-buffer))) (with-current-buffer buffer (goto-char (point-max)) (forward-line 0) (while (not (mymode-looking-at-prompt)) (accept-process-output nil 0.001) (redisplay) (goto-char (point-max)) (forward-line 0)) (end-of-line)))) 入力ラインを送信した後、次のラインを送信する前に毎回これを呼び出します。まあ...それは動作します、それはすでに何かです。 ただし、出力を待機しているときにemacsがハングすることもあります。その理由は明らかでありsleep-for、ループに何らかの非同期(たとえば1)を含めると、出力は1秒遅延しますが、ハングは抑制されると考えました。この種の非同期sleep-for は存在しないように見えることを除いて 。 それともそうですか?より一般的には、emacsでこれを達成する慣用的な方法はありますか?言い換えると: プロセスに入力を送信し、出力を待ってから、さらに入力を非同期に送信する方法は? 周りを検索するとき(関連する質問を参照)、主にセンチネル(プロセスが終了しないため、私の場合には当てはまらないと思います)といくつかのcomintフック(しかし、何をすべきですか?フックをバッファローカルにし、「残りの行を評価する」を関数に変え、この関数をフックに追加し、その後フックをきれいにしますか?それは本当に汚いですね?) 自分自身を明確にしない場合、またはどこかで利用可能な明らかな答えがある場合、プロセスの相互作用のすべての複雑さに本当に混乱しています。 必要に応じて、これをすべて実用的な例にすることができますが、以前に見つけて助けにならなかったすべてのような「特定のプロセスの答えを持つ特定のプロセスの質問」をもう1つ作成するだけです。 SOに関するいくつかの関連する質問: /programming//q/16815598/1083706 /programming//q/3572532/1083706 /programming//q/6578373/1083706

4
非同期シェルプロセスバッファーは常にウィンドウの配置を覆います
私はM-!、FirefoxやEvinceなどのを使用してemacsから外部プログラムを頻繁に起動します。実行するたびに、バッファがプロセスの結果でいっぱいにポップアップします。これにより、ウィンドウの配置に関して私が行っている他のことはすべて破棄されます。 デフォルトでそのようなバッファを埋める方法はありますか?そうすれば、バッファを探しに行くことに決めない限り、それらを見る必要はありませんか?
8 window  shell  async 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.