Pregunta

Estoy tratando de utilizar Pylint con Emacs en Windows XP. Mi versión de Emacs es EmacsW32 23.1, pylint es 0.21.3 con Python 2.5. Después easy_install pylint, he añadido las siguientes líneas al archivo de inicialización de Emacs, forma copiado Wiki Emacs.

Cuando invoco la flymake-mode en un archivo .py, puedo ver el flymake de iniciar la comprobación de sintaxis, el estado del modo cambiado a Flymake *, y luego regresa a Flymake después de varios segundos. Sin embargo, se informó ningún error, y poner de relieve ningún error de sintaxis .

He intentado utilizar pylint en línea de comandos, y funciona con el comando "test.py pylint" , la presentación de informes de errores de sintaxis en el mismo archivo.

Incluso trató de despejar mi archivo .emacs, pero no sirve de ayuda.

¿Puede alguien me ayuda en esto? Muchas gracias.

(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)))

Pregunta de actualización: He intentado lo siguiente en la línea de comandos consulta con "pylint" y "epylint". ¿Esto epylint media tiene un problema?

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
¿Fue útil?

Solución

El programa llamado por flymake debe devolver 0 o nivel de error flymake otro piensa que ha habido problemas de llamada subprocesos.

Lectura esta respuesta y los parches , he conseguido ejecutar flymake con pylint:

En Windows, pero se puede hacer el mismo tipo de cosas en Un * x, he creado un archivo por lotes pycheckers.bat (accesible en su PATH):

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

En mis .emacs, he puesto estas líneas:

(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)))

Ahora, cuando abra un archivo .py, hago un M-x flymake-mode para activarlo. Flymake encuentra mis errores y advertencias pitón sin problema.

Tenga en cuenta que puede agregar otras herramientas en el archivo pycheckers.bat.

Otros consejos

Yo uso emacs22-nox en Linux por lo que puede que tenga que google "font-lock-mode" para averiguar cómo hacerlo en su ordenador. En primer lugar entrar en la línea de comandos emacs pulsando Esc+x. Ahora puedes escribir font-lock-mode y pulse Enter (la línea de comandos es en la parte inferior de la pantalla). Yo tenía el mismo problema en los servidores uno de mis clientes. Sus emacs no se volvían font-lock-mode activado de forma predeterminada. Espero que ayude.

Aquí están mis dos centavos ...

(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))

probado en WinXP, Linux, OS-X.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top