最近Pythonいいなぁと思ってPython始めているのですが、コードを書くにあたってエディタの設定も多少しとかないと、ということでEmacsでPython回りの設定をしました。あんまりヘビーなことはしないので、とりあえず今回はpython-mode.elとflymakeの設定だけしています。
python-mode.el
ここからpython-mode.elをダウンロードして load-path が通っているところに置きます。自分はこんな感じのコードを .emacs に書いています。
(add-hook 'python-mode-hook
'(lambda ()
(setq indent-tabs-mode nil)
(setq py-indent-offset 4)))
flymake(PyFlakes)
Pythonのコードのシンタックスチェックを行うPyFlakesというソフトウェアをダウンロードして下記の要領でインストールします。
$ tar xvzf pyflakes-0.4.0.tar.gz
$ cd pyflakes-0.4.0
$ sudo python setup.py install
sudo aptitude install pyflakes
すればよいでしょう。あとは下記の設定を .emacs に追加すれば、.pyなファイルを保存したときに pyflakes によるシンタックスチェックが走ります。
(defun flymake-python-init ()
(let* *1
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "pyflakes" (list local-file))))
(defconst flymake-allowed-python-file-name-masks '*2
(ad-activate 'flymake-post-syntax-check)
(setq flymake-allowed-file-name-masks (append flymake-allowed-file-name-masks flymake-allowed-python-file-name-masks))
(setq flymake-err-line-patterns flymake-python-err-line-patterns)
(flymake-mode t))
(add-hook 'python-mode-hook '(lambda () (flymake-python-load)))
実行イメージとしてはこんな感じ。
ちなみに自分は C-c e でエラー内容が表示できるように下記の設定も足しています。
(defun next-flymake-error ()
(interactive)
(flymake-goto-next-error)
(let ((err (get-char-property (point) 'help-echo)))
(when err
(message err))))
(global-set-key "C-c e" 'next-flymake-error)
さて、これからPythonのコードをガンガン書いていきます!
[tmkm-amazon]4797353953[/tmkm-amazon]
*1:temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace
*2:"\.py$" flymake-python-init)))
(defvar flymake-python-err-line-patterns '(("\(.*\):\([0-9]+\):\(.*\)" 1 2 nil 3)))
(defun flymake-python-load ()
(interactive)
(defadvice flymake-post-syntax-check (before flymake-force-check-was-interrupted)
(setq flymake-check-was-interrupted t