コンパイル時にTrampがハングしたり、別のコマンドでTrampを使用すると失敗する

私はリモートマシン上で compile コマンドを実行するためにscpxメソッドでTrampを使用しています。ビルドには数分かかります。その実行がTrampを使用しようとする間に何か他のものに取り掛かろうとすると、Emacsがハングアップし、コンパイルバッファがビルドを中止するように見えます。

たとえば、コンパイルを開始した後、リモートマシンのdiredバッファに移動してナビゲートしようとすると、これが発生しました。

もう一度、コンパイルを開始した後、リモートパスで ido-find-file を使用しようとしましたが、コンパイルバッファは失敗しました。

私はTrampとEmacsにはとても新しいです。 Trampは複数のプロセスを同時に扱うことができるでしょうか?私は何かが誤って構成されていないのだろうかと思います。

ありがとうございました!

4
追加された 編集された
ビュー: 2

1 答え

Trampは複数のコンパイルプロセスを並行して実行できます。ハードコードされたバッファ名のためにこれを防ぐのは compile コマンドです。

コンパイルのドキュメントストリングを C-h fコンパイルで確認してください。そこにあなたが見る

一度に複数のコンパイルを実行するには、コンパイルを開始してから、   'コンパイル'バッファをM-x rename-bufferで他の名前にバッファリングします。   次に、バッファを切り替えして新しいコンパイルを開始します。それは、   新しい 'コンパイル'バッファです。

1
追加された
そうですか。最近のEmacs 25.1/Tramp 2.3.0-preで問題を再現しようとしましたが、すべてが期待どおりに動作します。どのEmacs/Trampのバージョンを使用していますか?
追加された 著者 celtschk,
私は、Ubuntu 15.10のようにGNU Emacs 24.5.1/Tramp 2.2.11-24.5で再現しようとしました。コンパイル中に M-x ido-find-file を呼び出して、リモートホスト上で M-x compile を呼び出し、 M-x ido-find-file 問題ない。唯一の違いは、Emacsを emacs24 -Q として開始したことです。 Emacsを-Qオプションで起動してみましたか?
追加された 著者 celtschk,
はい。責任コードを見つけるために init.el を二等分してみてください。
追加された 著者 celtschk,
返事をありがとう、マイケル。私は私の質問ではっきりしていないと思う。私は M-x compile をもう一度実行しようとしていません。コンパイルバッファのプロセスがまだ実行中のときに ido-find-file を実行しようとしています。
追加された 著者 DistributionUnit,
私はEmacs 24.5.1とTramp 2.2.11-24.5を使用しています。
追加された 著者 DistributionUnit,
私はそれを試していませんでしたが、あなたが正しいです、私の問題は、私が emacs -Q を使うと消えてしまいます。それは私の init.el の何かが問題を引き起こしているということですか?
追加された 著者 DistributionUnit,
少なくとも2つのことが起こっていると思う。まず、 rel="nofollow noreferrer"> diff-hl を使用していました。これは、オープンしたときにリモートマシン上でMercurialを呼び出しますファイルを作成し、ハングアップします。 tramp-remote-process-environment に "HGPLAIN = 1"を追加すると、コンパイルを続行しながら dired バッファをナビゲートしてファイルを開くことができるようになりました。しかし、私はまだ ido-find-file を使用することはできません。私は、 ido-ubiquitous が問題を引き起こしていると思います。それを無効にすると物事が修正されます。助けてくれてありがとう、マイケル!
追加された 著者 DistributionUnit,
私は ido-ubiquitous-mode を再び有効にしましたが、それでも問題は解決しました。 ido-find-file を使用しようとするとEmacsがハングアップすることがありますが、 Cg を押してからもう一度やり直す必要があります。 。だから、いくつかの問題はまだ潜んでいます。しかし、ほとんどの場合、物事はうまく機能しています。
追加された 著者 DistributionUnit,