4

Windows XP の Emacs で Pylint を使用しようとしています。私のEmacsのバージョンはEmacsW32 23.1で、pylintはPython 2.5で0.21.3です。easy_install pylint の後、次の行を Emacs 初期化ファイルに追加し、Emacs Wiki からコピーしました。

.py ファイルで flymake-mode を呼び出すと、flymake が構文チェックを開始し、モード ステータスが flymake* に変わり、数秒後に flymake に戻るのを確認できます。ただし、エラーは報告されず、構文エラーの強調表示もありません

コマンドラインで pylint を使用しようとしましたが、コマンド "pylint test.py"で動作し、同じファイルの構文エラーを報告します。

.emacs ファイルをクリアしようとさえしましたが、役に立ちません。

誰かがこれについて私を助けることができますか? どうもありがとう。

(when (load "flymake" t)
  (defun flymake-pylint-init ()
    (let* ((temp-file (flymake-init-create-temp-buffer-copy
                       'flymake-create-temp-inplace))
       (local-file (file-relative-name
                    temp-file
                    (file-name-directory buffer-file-name))))
      (list "epylint" (list local-file))))

  (add-to-list 'flymake-allowed-file-name-masks
           '("\\.py\\'" flymake-pylint-init)))

質問の更新: 「pylint」と「epylint」を使用して、コマンド ライン プロンプトで次のことを試しました。これはエピリントに問題があるということですか?

C:\Projects>pylint test_lib.py
No config file found, using default configuration
************* Module test_lib
E: 13: invalid syntax

C:\Projects>epylint test_lib.py
'test_lib.py':1: [F] No module named 'test_lib.py'

C:\Projects>epylint
Traceback (most recent call last):
  File "C:\Python25\Scripts\epylint", line 5, in <module>
    pkg_resources.run_script('pylint==0.21.3', 'epylint')
  File "C:\Python25\Lib\site-packages\pkg_resources.py", line 489, in run_script

    self.require(requires)[0].run_script(script_name, ns)
  File "C:\Python25\Lib\site-packages\pkg_resources.py", line 1207, in run_script
    execfile(script_filename, namespace, namespace)
  File "c:\python25\lib\site-packages\pylint-0.21.3-py2.5.egg\EGG-INFO\scripts\epylint", line 3, in <module>
    epylint.Run()
  File "c:\python25\lib\site-packages\pylint-0.21.3-py2.5.egg\pylint\epylint.py", line 93, in Run
    lint(sys.argv[1])
IndexError: list index out of range
4

3 に答える 3

3

flymake によって呼び出されたプログラムは 0 errorlevel を返す必要があります。そうでない場合、flymake はサブプロセスの呼び出しに問題があると判断します。

この回答それらのパッチを読んで、私は pylint で flymake を実行することができました:

Windows でも、Un*x でも同じようなことができます。バッチ ファイルを作成しましたpycheckers.bat(PATH でアクセス可能):

pylint -f parseable -r n --disable=C,R,I %1 %2 %3 %4 %5 %6 %7 %8 %9
exit /b 0

私の.emacsでは、これらの行を入れました:

(when (load "flymake" t)
  (defun flymake-pyflakes-init ()
    (let* ((temp-file (flymake-init-create-temp-buffer-copy
                       'flymake-create-temp-inplace))
           (local-file (file-relative-name
                        temp-file
                        (file-name-directory buffer-file-name))))
      (list "pycheckers"  (list local-file))))
  (add-to-list 'flymake-allowed-file-name-masks
               '("\\.py\\'" flymake-pyflakes-init)))

今、.py ファイルを開くと、M-x flymake-modeそれをアクティブにするために a を実行します。Flymake は、Python のエラーと警告を問題なく検出します。

pycheckers.batファイルに他のツールを追加できることに注意してください。

于 2010-10-01T08:35:59.970 に答える
0

これが私の2セントです...

(defun flymake-pylint-init ()
  (list python-python-command
        (list "-m" "pylint.lint" "-f" "parseable" buffer-file-name)))

(add-to-list 'flymake-allowed-file-name-masks
              '("\\.py\\'" flymake-pylint-init))

WinXP、Linux、OS-X でテスト済み。

于 2011-12-16T22:25:59.273 に答える
0

私は Linux で emacs22-nox を使用しているので、「font-lock-mode」をググって、コンピューターでそれを行う方法を理解する必要があるかもしれません。まず、 を押して emacs コマンド ラインに入りEsc+xます。これで、font-lock-mode と入力して Enter キーを押すことができます (コマンド ラインは画面の下部にあります)。クライアントサーバーの1つで同じ問題が発生しました。彼らの emacs は、デフォルトで font-lock-mode をオンにしませんでした。それが役立つことを願っています。

于 2010-09-30T05:24:04.633 に答える