كيف يمكنني استخدام وضع EMACS FlyMake for Python مع Pyflakes ورمز فحص الصلب؟

StackOverflow https://stackoverflow.com/questions/1259873

سؤال

لفحص التعليمات البرمجية في وضع Python، استخدم FlyMake مع pyflakes.

أيضا أريد أن تحقق رمز رمز (PEP8) مع pylint (وصف في نفس الصفحة مع pyflakes)

هذه الحلول تعمل. لكن لا يمكنني تكوين FlyMake للعمل مع Pyflakes و Bylint معا. كيف يمكنني فعل ذلك؟

هل كانت مفيدة؟

المحلول

حسنا، FlyMake يبحث فقط عن أمر قابل للتنفيذ خطوط الإخراج بتنسيق محدد مسبقا. يمكنك إنشاء برنامج نصي شل على سبيل المثال الذي سيدعو إلى جميع الداما التي تريدها على التوالي

يجب عليك أيضا التأكد من أن البرنامج النصي ينتهي عن طريق إرجاع ErrorLevel 0. لذلك هذا مثال:

هذا ما قمت به في برنامج نصي "Pycheckers":

#!/bin/bash

epylint "$1" 2>/dev/null
pyflakes "$1"
pep8 --ignore=E221,E701,E202 --repeat "$1"
true

بالنسبة إلى جزء EMACS Lisp:

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

نصائح أخرى

عادة ما يمكن للمرء تمكين وضع flymake في ربط وضع الثعبان. لسوء الحظ، يؤدي ذلك إلى مشكلات مع أشياء مثل py-execute-buffer التي تخلق المخازن المؤقتة المؤقتة التي تستدعي الخطاف ثم تسبب وضع flymake إلى الفواق بسبب عدم وجود "ملف حقيقي". الحل هو تعديل الشروط التي تضيف فيها الخطاف: - مثل الألغام هي:

(add-hook 'python-mode-hook 
      (lambda () 
        (unless (eq buffer-file-name nil) (flymake-mode 1)) ;dont invoke flymake on temporary buffers for the interpreter
        (local-set-key [f2] 'flymake-goto-prev-error)
        (local-set-key [f3] 'flymake-goto-next-error)
        ))

قد ترغب في التحقق من البرنامج النصي LISP هنا (http://charlie137-2.blogspot.com/2009/08/check-python-coding-style-on-fly-with.html.)، والتي يجب أن تساعد في التحقق من PEP8 a la pep8.py. لا أستخدم Pyflakes أو pylint، لكنني أتصور أنك يمكن ضبط هذا بسهولة للعمل مع الداما الأخرى.

نسخة دفعة ويندوز من فاب pychechker

@echo on
pylint %1
pep8 --ignore=E221,E701,E202 --repeat %1
pyflakes %1
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top