2009-08-11 5 views
22

मैं pyflakesमैं पाइक्लेक्स और पिलिंट जांच कोड के साथ पाइथन के लिए Emacs Flymake मोड का उपयोग कैसे कर सकता हूं?

साथ flymake का उपयोग अजगर मोड में कोड की जाँच के लिए इसके अलावा, मैं pylint साथ कोड शैली (pep8) चेक (pyflakes साथ एक ही पृष्ठ पर विवरण)

यह समाधान काम करना चाहते हैं। लेकिन मैं एक साथ pyflakes और pylint के साथ काम के लिए फ्लाईमेक कॉन्फ़िगर नहीं कर सकता। मैं इसे कैसे कर सकता हूं?

उत्तर

34

खैर, फ्लाईमेक सिर्फ एक निष्पादन योग्य कमांड की तलाश में है जो एक पूर्वनिर्धारित प्रारूप में आउटपुट लाइनों को देखता है।

यह वह जगह है: आप errorlevel 0. लौटने तो यह एक उदाहरण है द्वारा

आप यह भी सुनिश्चित करें कि अपनी स्क्रिप्ट समाप्त होता है करना चाहिए उदाहरण है कि क्रमिक सभी चेकर्स आप चाहते हैं कॉल करेंगे के लिए एक खोल स्क्रिप्ट कर सकते हैं ... क्या मैं एक "pycheckers" स्क्रिप्ट में क्या किया है:

#!/bin/bash 

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

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))) 
+0

यह काम करता है! धन्यवाद! – dixon

+0

जबकि मैं त्रुटियों को दूर कर सकता हूं, emacs 23 प्रदर्शित नहीं कर रहा है कि वास्तव में त्रुटि क्या है। क्या आप मदद कर सकते हैं? – RichieHH

+0

Emacs के तहत फ्लाईमेक के मैनुअल देखें। आपको लाइन पर होना चाहिए और: एम-एक्स फ्लाईमेक-डिस्प्ले-एर-मेन-फॉर-वर्तमान-लाइन है। आप इसे एक कुंजी से बांध सकते हैं। – vaab

0

आप यहां लिस्प स्क्रिप्ट को देख सकते हैं (http://charlie137-2.blogspot.com/2009/08/check-python-coding-style-on-fly-with.html), जो पीईपी 8 ला ला 8-8 जांचने में मदद करनी चाहिए। मैं pyflakes या pylint का उपयोग नहीं करता, लेकिन मुझे लगता है कि आप आसानी से अन्य चेकर्स के साथ काम करने के लिए समायोजित कर सकते हैं।

+0

मैं कोशिश उपयोग pep8.py. के Windows बैच संस्करण -: समाधान की स्थिति है जहाँ आप हुक जोड़ने संशोधित करने के लिए है एक ही समस्या - मैं दो कॉन्फ़िगर मर्ज सही नहीं कर सकता। केवल एक - pyflakes या pep8.py काम करें। – dixon

7

आमतौर पर एक अजगर मोड हुक में मोड 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) 
     )) 
+0

आप '(स्थानीय-सेट-कुंजी [एफ 4] 'फ्लाईमेक-डिस्प्ले-एर-मेनू-फॉर-वर्तमान-लाइन' जोड़ना चाहेंगे) –

0

vaab के pychechker

@echo on 
pylint %1 
pep8 --ignore=E221,E701,E202 --repeat %1 
pyflakes %1 
संबंधित मुद्दे