Emacs flymake pylint
Jak połączyć te trzy programy? Instalujemy emacsa i pylint wykonanie tego kroku zależy od tego jakiego systemu używasz, na debianie wydajemy polecenie apt-get install emacs pylint Najpierw tworzymy katalog w ktorym będziemy trzymać pliki ze skryptami elispa mkdir ~/.elisp<
Do pliku konfiguracyjnego emacsa (~/.emacs) dodajemy taką linijkę (add-to-list 'load-path "~/.elisp") więcej na ten temat tu. W katalogu ~/.elisp tworzymy plik epylint o zawartości
!/usr/bin/env python
import re
import sys
from subprocess import *
p = Popen("pylint -f parseable -r n --disable-msg-cat=C,R --disable-msg=E1101 %s" %
sys.argv[1], shell = True, stdout = PIPE).stdout
for line in p:
match = re.search("\\[([WE])(, (.+?))?\\]", line)
if match:
kind = match.group(1)
func = match.group(3)
if kind == "W":
msg = "Warning"
else:
msg = "Error"
if func:
line = re.sub("\\[([WE])(, (.+?))?\\]", "%s (%s):" % (msg, func), line)
else:
line = re.sub("\\[([WE])?\\]", "%s:" % msg, line)
print line,
p.close()
Nadajemy plikowi atrybut wykonywalności
chmod u+x epylint
Do pliku ~/.emacs dodajemy
(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 "~/.elisp/epylint" (list local-file))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.py\\'" flymake-pylint-init)))
Flymake domyślnie używa niezbyt ładnych kolorów, dlatego warto je zmienić, do pliku ~/.emacs dodajemy
(custom-set-faces
'(flymake-errline ((((class color)) (:underline "OrangeRed"))))
'(flymake-warnline ((((class color)) (:underline "yellow")))))
Teraz aby to uruchomić wystarczy M-x flymake-mode
Efekt końcowy
Na żółto mamy podkreślone ostrzeżenia, na czerwono błędy, po najechaniu kursorem zobaczymy tekst komunikatu.
Wpis opiera się na informacjach zawartych na tych stronach
http://www.emacswiki.org/cgi-bin/wiki/PythonMode#toc8
http://www.credmp.org/index.php/2007/07/18/flymake-in-emacs/