emacsでpython開発をするのにとりあえず設定したこと

しばらく続いたrails開発の案件から、python開発に移って、最初はeclipse+pydevで開発しようかなと思ったのですが、
なんだかんだで結局emacsに戻ってます。


ただ、ずっと使ってたemacsの設定ファイルが、windowsmaclinuxで共通で使えるようにしようとしてたせいもあって、
ごちゃごちゃになってたので、一度すっぱりすてて、設定をシンプルにしようとしてます。
当分macでしか開発しないですし。


いまのところインストールしたライブラリはanything、monky.el、moccur-edit、python-mode.el、flymake-cursor.el、color-theme.elくらいものです。

flymakeの設定はここで紹介されていたものをパクってるのですが、素敵すぎます。
pep8とpyflakesのチェックが常にかかり、エラー行を示してくれ、ミニバッファには何がpep8に違反しているのかが表示されます。

こいつを設定する前は、行末に無駄なスペースがあったり、空行が余計にあったりするコードを書いてしまってましたが、
今ではなくなったはず。

今のところの設定はだいたいこんな感じです。

;; 現在行に色をつける
(global-hl-line-mode nil)

;; 対応する括弧を表示させる
(show-paren-mode 1)

;; シェルに合わせるため、C-hをバックスペースに割り当てる
(global-set-key (kbd "C-h") 'delete-backward-char)

;; モードラインに時刻を表示
(display-time)

;; 行番号、桁番号を表示する
(line-number-mode t)
(column-number-mode t)

;; リージョンに色をつける
(transient-mark-mode 1)

;; yes -> y
(defalias 'yes-or-no-p 'y-or-n-p)

;; hide toolbar and scrollbar
(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(if (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(if (fboundp 'menu-bar-mode) (menu-bar-mode -1))


;; Invoke M-x without the Alt key
(global-set-key "\C-x\C-m" 'execute-extended-command)
(global-set-key "\C-c\C-m" 'execute-extended-command)
;; Prefer backward-kill-word over Backspace
(global-set-key "\C-w" 'backward-kill-word)
(global-set-key "\C-x\C-k" 'kill-region)
(global-set-key "\C-c\C-k" 'kill-region)

;; back slash
(define-key global-map [?\] [?\\])

;; alt と commandを入れ替える
(setq ns-command-modifier (quote meta))
(setq ns-alternate-modifier (quote super))

(require 'moccur-edit)

;; color-theme
(require 'color-theme-zenburn)
(color-theme-zenburn)

;; monky
(global-set-key (kbd "M-G") 'monky-status)

;; anything
(global-set-key (kbd "C-l") 'anything-for-files)

;; python
(autoload 'python-mode "python-mode" "Python editing mode." t)
(setq auto-mode-alist (cons '("\\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist (cons '("python" . python-mode)
                                   interpreter-mode-alist))

;;; flymake for python
(add-hook 'python-mode-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 "pycheckers"  (list local-file))))
  (add-to-list 'flymake-allowed-file-name-masks
               '("\\.py\\'" flymake-pyflakes-init)))
(load-library "flymake-cursor")

必要になったらちょこちょこ設定を追加していこうと思います。