エマックでフライメイクとトランプでリモートでpyflakesを実行しますか?
質問
提案されているように、フライメイクを使用してpyflakesを実行しようとしています ここ
これはローカルファイルで正常に機能し、少し調整してリモートファイルでほぼ動作しますが、FlyMake/Pyflakesが実行時にバッファを「変更」する問題が残っています(実際には変更されていないようですが)。実際には少し役に立たない(たとえば、ファイルを保存するとフライメイクが実行されるため、すぐにバッファを再度変更します)。
これが私がそれをほとんど機能させるためにしたことです:
- リモートボックスにpyflakesを取り付けました。
- カスタマイズされた私
tramp-remote-process-environment
Pyflakesがそのパスで見つかるように変数 - 上記のWikiリンクのコードのバリアントを使用しました。明らかに、リモートバッファーに対して無効にする小切手を除外しました。また、
(when (load "flymake" t) ...)
私が予想したように構成は機能しなかったようですが、私はそれについてあまり心配していません。 - 再定義された(テスト目的で - これが機能するために作られればアドバイスは問題ないはずです)
flymake-start-syntax-check-process
使用するように機能しますstart-file-process
(トランプで動作する)の代わりにstart-process
(そうではありません)。
#4の変更はローカルファイルを処理するときに問題を引き起こすことはありませんが、これによりフライメイクがリモートファイルのリモートPyflakesを実行できるようになりましたが(エラーは予想どおり強調表示されます)、この場合、バッファは「変更されました」フライメイクが実行されるたびに。
私はそれを推測しています start-file-process
, 、リモートプロセスの場合、ローカルプロセスでは発生しない追加の返品値/データが得られます。
誰かが洞察/アドバイスを持っていますか?
- UbuntuのEmacs 23.1および23.2
- Python 2.4.6
- pyflakes 0.4.0(easy_install経由)
解決
フライメイクに伝える必要があります 作成 バッファのコピーです どこか ローカルでは、私はそれを使用することを好みます $TMP
これ以来ディレクトリ また 書き込み許可がないディレクトリのファイルでTRAMPを使用することができます。
あなたは私のフォークをチェックアウトしたいかもしれません Flymake-python これをすべて行うからです。
他のヒント
私はこれをフライメイクのフォークに固定しています(https://github.com/illusori/emacs-flymake).
表示されているバッファ変更の問題はありません。または設定することができます flymake-run-in-place
に nil
また、通常の非トランプバッファーのフライメイクと同様に、ローカルマシンで構文チェックを実行します。
Flymakeレベルで固定されているため、この修正はPyflakesではなくすべての言語と構文チェックに対して機能します。
それが起こっている理由の詳細に興味がある場合、基本的にはスタートファイルプロセスのトランプハンドラーがキックインすると、出力フィルターが任意の出力フィルターを添付する前に、接続のログインメッセージを現在のバッファーの端にダンプします。処理する。
通常、これは、 /etc /問題の内容を見ている人々がファイルの最後に「you have mail」と表示されます。等々。
あなたの場合、ログインメッセージが空であるか、単なる新ラインである可能性があるため、バッファーを変更しているとしても、テキストが追加されていないことがわかりません。