Subscribed unsubscribe Subscribe Subscribe

oinume journal

Scratchpad of what I learned

EmacsでPythonの設定

Python

最近Pythonいいなぁと思ってPython始めているのですが、コードを書くにあたってエディタの設定も多少しとかないと、ということでEmacsPython回りの設定をしました。あんまりヘビーなことはしないので、とりあえず今回は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

 

 

DebianUbuntuにはdebがあるので

 

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

 

 

実行イメージとしてはこんな感じ。

 

pyflakes_on_emacs

 

ちなみに自分は 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