Syntax Check
今回は構文シンタックスチェックを扱います。
flymake-python-pyflakes と flymake-cursor と pep8 を入れる
それぞれ pip でインストールします。
面倒なので python 設定まとめw
;; python (require 'python-mode) (setq auto-mode-alist (cons '("\\.py\\'" . python-mode) auto-mode-alist)) (add-hook 'python-mode-hook '(lambda () (setq indent-tabs-mode nil) (setq indent-level 4) (setq python-indent 4) (setq tab-width 4) (elpy-enable) (elpy-mode) (flymake-mode t) )) ;; flymake (require 'flymake) (setq flymake-allowed-file-name-masks '()) (add-hook 'find-file-hook 'flymake-find-file-hook) (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 "/usr/local/bin/pychecker" (list local-file)))) (add-to-list 'flymake-allowed-file-name-masks '("\\.py\\'" flymake-pyflakes-init))) ;; show message on mini-buffer (defun flymake-show-help () (when (get-char-property (point) 'flymake-overlay) (let ((help (get-char-property (point) 'help-echo))) (if help (message "%s" help))))) (add-hook 'post-command-hook 'flymake-show-help) ;; 下波線は見づらいので変える (custom-set-faces '(flymake-errline ((((class color)) (:foreground "red" :bold t :underline t)))) '(flymake-warnline ((((class color)) (:foreground "red" :bold t :underline t))))); :background "white"))))) (require 'jedi) (add-hook 'python-mode-hook 'jedi:setup) (setq jedi:complete-on-dot t)
ここで、/usr/local/bin/pychecker ってなんやねん!
と思ったそこのあなた。するどい!
このファイルは自分で作りますw
#!/bin/bash /usr/bin/pyflakes "$1" /usr/bin/pep8 --ignore=E221,E701,E202 --repeat "$1" true
こんなのを /usr/local/bin/pychecker として作成。pyflakes と pep8 の絶対パスは適宜置き換えてください。
あと実行権限付与を忘れないように。
$ chmod +x /usr/local/bin/pychecker
で、たぶん出来ます。
オペレーター(ここでは代入記号)の周りにスペースを入れないとダメ。
foo は定義されてない。
このように構文の警告やエラーの指摘をしてくれます。