coursera で Python をつかう講座を 2 つとった.
もちろん Emacs で開発環境をつくったので, 構築メモ.
入力支援
python.el は公式, python-mode.el は Python コミュニティによって作成されたもの.
python
Emacs にデフォルトではいっているやつ.
python-mode
Python コミュニティによって作成されたもの.
ショートカットがまとまっている.
インデント設定
4 で設定.
(add-hook 'python-mode-hook
'(lambda ()
(setq indent-tabs-mode nil)
(setq indent-level 4)
(setq python-indent 4)
(setq tab-width 4)))
コードリーディング
helm-etags-plus
ダグジャンプ. ctags を利用する. そして, ctags を Emacs から利用するために, 最近は helm-etags-plus なるものを使っていたりする.
(require 'helm-etags+)
$ ctags -o TAGS *.py
swoop
ctags はメソッドの定義にはジャンプできるけど, 変数の宣言にジャンプできない.
変数の宣言に飛びたいときは, swoop が最近は大のお気に入り.
(require 'swoop)
(global-set-key (kbd "M-o") 'swoop)
(global-set-key (kbd "C-M-o") 'swoop-multi)
;; (global-set-key (kbd "M-o") 'swoop-pcre-regexp)
(global-set-key (kbd "C-S-o") 'swoop-back-to-last-position)
(define-key isearch-mode-map (kbd "M-o") 'swoop-from-isearch)
(define-key swoop-map (kbd "M-o") 'swoop-multi-from-swoop)
;; サイズ変更禁止
(setq swoop-font-size-change: nil)
imenu
関数一覧を表示する. そのままだと動かなかったので, いかのリンクを参考にした.
(semantic-mode 1)
(add-hook 'python-mode-hook
(lambda ()
(setq imenu-create-index-function 'python-imenu-create-index)))
リファクタリング
主に名前変更の Elisp を導入.
参考リンク:
anzu
インタラクティブな補完.
iedit
C-;から気軽に同じキーワードを編集できる.
Ropemacs
Python 用のリファクタリングツール.
コーディング支援
jedi
Python のオムニ補完 (かしこい補完) をしてくれる.
ac-python
auto-complete の python 強化版.
(require 'ac-python)
(add-to-list 'ac-modes 'python-2-mode)
quickrun
quickrun を利用すれば, python コードを Emacs から実行可能.
システムの version が 3 で, Emacs からは 2 を利用したいときは, 以下のようにすれば実行コマンドをオーバライドできる.
(quickrun-add-command "python"
'((:command . "python2"))
:override t)
静的解析
flymake
flymake でエラーチェックを実施. エラーチェックのエンジンに pyflakes を利用する.
$ sudo pip install pyflakes
Emacswiki を参考に設定.
(when (load "flymake" t)
(defun flymake-pyflakes-init ()
; Make sure it's not a remote buffer or flymake would not work
(when (not (subsetp (list (current-buffer)) (tramp-list-remote-buffers)))
(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 "pyflakes" (list local-file)))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.py\\'" flymake-pyflakes-init)))
さいごに
Environment
- ArchLinux
- Emacs 24.4
Special Thanks
- EmacsWiki: Python Programming In Emacs
- Emacs as a Python IDE - Jessica Hamrick
- Configuring Emacs as a Python IDE - Pedro Kroger
- Emacs を Python 用 IDE としてセットアップ - uchikoshi22’s blog
- emacs の python 開発環境を整える - フリーフォーム フリークアウト
- Emacs の Python 開発環境を整えた
- Vim を最強の Python 開発環境にする 2 - Λ Lisue’s blog
- gabrielelanaro/emacs-for-python