17

ここで提案されているように、私はflymakeを使用してpyflakesを実行しようとしています

これはローカルファイルでは問題なく機能し、少し調整を加えたリモートファイルでもほとんど機能しますが、flymake / pyflakesが実行時にバッファを「変更」するという問題が残ります(実際には何も変更されていないようですが)。実際には少し役に立たない(たとえば、ファイルを保存すると、すぐにバッファを再度変更するflymakeが実行されます)。

これが私がほとんどそれを機能させるためにしたことです:

  1. リモートボックスにpyflakesをインストールしました。
  2. 変数をカスタマイズしてtramp-remote-process-environment、そのPATHでpyflakesを見つけられるようにしました
  3. 上記のwikiリンクからのコードの変形を使用しました。明らかに、リモートバッファに対してそれを無効にするチェックを除外しました。また、(when (load "flymake" t) ...)構成が期待どおりに機能していないように見えましたが、それほど心配していません。
  4. 関数を再定義して(テスト目的で、これを機能させることができればアドバイスは問題ありません)、flymake-start-syntax-check-process関数を(機能しないstart-file-process)代わりに(トランプで機能する)使用するようにしstart-processます。

#4での変更は、ローカルファイルの処理時に問題を引き起こすようには見えませんが、これにより、flymakeがリモートファイルのリモートpyflakesを実行できるようになります(エラーは予想どおりに強調表示されます)が、この場合、バッファーは「変更」されます。 flymakeが実行されるときはいつでも。

リモートstart-file-processプロセスの場合、ローカルプロセスでは発生しない追加の戻り値/データが生成されると思います。

誰かが洞察/アドバイスを持っていますか?

  • Ubuntu上のEmacs23.1および23.2
  • Python 2.4.6
  • Pyflakes 0.4.0(easy_install経由)
4

2 に答える 2

9

flymake にバッファのコピーをローカルのどこかに作成するように指示する必要があります。私はディレクトリを使用することを好みます。これにより、書き込み権限を持たないディレクトリ内のファイルに対してもトランプを使用できるようになるからです$TMP

flymake-pythonの私のフォークをチェックアウトすることをお勧めします。

于 2011-08-27T22:10:49.930 に答える
6

Flymake のフォーク ( https://github.com/illusori/emacs-flymake ) でこれを修正しました。

バッファ変更の問題が発生することなく、Tramp を介してリモート マシンで構文チェックを実行します。または、に設定flymake-run-in-placeするnilと、通常の非 Tramp バッファで flymake と同じように、ローカル マシンで構文チェックが実行されます。

Flymake レベルで修正されているため、この修正は pyflakes だけでなく、すべての言語と構文チェックで機能します。

なぜそれが起こっているのかの詳細に興味がある場合は、基本的に start-file-process の Tramp ハンドラーが起動すると、出力フィルターが接続される前に、接続のログインメッセージが現在のバッファーの最後にダンプされます。処理する。

通常、これは /etc/issue の内容がファイルの最後に表示され、「You have mail.」と一緒に表示されることで明らかになります。等々。

あなたの場合、ログイン メッセージが空または単なる改行である可能性があるため、バッファを変更済みとして設定しているにもかかわらず、テキストが追加されていません。

于 2011-10-24T10:40:37.277 に答える