初心者が頑張ってEmacsを利用する話. 色々なサイトで述べられているので今更感満載ですが,誰かの役にたつと信じて. ※ご指摘等ありましたらmakabi [at] jnlp.orgまで. ※設定すごい変わっていたのに変更するのが遅くなった…ごめんなさい^^; そして途中まで書いて力尽きたorz また今度書き足します. 当方の環境は以下の通り. OS: Mac OS X Lion,CentOS 6,LinuxMint 12 Emacs: GNU Emacs 23 ※基本的に全環境で同じ設定ファイルを転用している. ※インストールはbrewでもyumでもapt-getでも一発で入れられるはず. 環境構築.emacs.d/の構成Emacsの設定ファイルは.emcas.d/以下に格納することが推奨されています. (一度Emacsを起動すると,$HOME直下に作成されているはず.) Emacs起動時に.emacs.d/init.elが自動で読み込まれます. 私の.emacs.d/の構成は超シンプル.以下の通り(※随時変更有). init.elはemacsを起動すると最初に読み込まれるファイルです. このファイルに最低限書いておくことは,「各種設定ファイル/フォルダへのload-pathを通しておく」事だと思います(多分). load-pathを通しておくことで,Emacsにどこから設定を読み込むのかを教えることができます. (setq load-path (cons "~/.emacs.d/site-lisp" load-path)) (setq load-path (cons "~/.emacs.d/orig-lisp" load-path)) その他便利な設定はいっぱいあるので,色々調べてみてください. orig-lisp/基本的にorig-***.el形式でファイルを保存しています. 現在あるファイルは以下の通り.
これらのファイルを適応させるためには,init.elに以下の通り記述します(※orig-settingの例). (load "orig-setting") site-lisp/site-lispは他サイト様から頂いた便利なElisp(Emacs lisp)ファイルが格納されています. これらのElispファイルを自分の環境で利用するために,ダウンロードしてきたファイルをこのsite-lisp以下に置いて,それをEmacsに教える必要があります. 具体的な手順は以下の通り(※auto-completeの例,あえてmanual導入します) 1. サイトからauto-complete-1.3.1.tar.bz2をdownload. 2. downloadしたファイルをsite-lisp/以下で展開. 3. init.elにload-pathを設定 (setq load-path (cons "~/.emacs.d/site-lisp/auto-complete-1.3.1" load-path)) 4. 上記サイトに従い,init.elに以下の行を追加(各々のファイルに追記情報が書かれているかと思います). (require 'auto-complete-config) (ac-config-default) (add-to-list 'ac-dictionary-directories "~/.emacs.d/site-lisp/auto-complete-1.3.1/dict") Python環境の設定Python関連の設定をまとめます. EmacsのPythonモードにはpython.elとpython-mode.elがあります. python.elは公式,python-mode.elはPythonコミュニティによって作成されたものです. どちらがいいかは色々なとろこで議論されていますが,まぁ一長一短という印象です. (興味のある方はこの2つで検索したら比較サイトなどいっぱい出てきます) 以下はpython.elを前提とした設定になります. orig-python.elの設定Pythonistaな方におすすめな設定を紹介. 改行時のオートインデント (add-hook 'python-mode-hook '(lambda () (define-key python-mode-map "\C-m" 'newline-and-indent))) flymakeの設定 orig-python.elを編集する前に,以下の処理を実行 ※外部チェッカーとしてpyflakes(文法チェック)とpep8(スタイルチェック)を利用. ※$HOME以下にpycheckerというファイルを保存 #!/bin/bash pyflakes "$1" pep8 --ignore=E221,E701,E202 --repeat "$1" ※flymake-cursor.elをsite-lisp以下に保存. (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 "~/pychecker" (list local-file)))) (add-to-list 'flymake-allowed-file-name-masks '("\\.py\\'" flymake-pyflakes-init))) (load-library "flymake-cursor") (global-set-key [f10] 'flymake-goto-prev-error) (global-set-key [f11] 'flymake-goto-next-error) あとはPymacsとかRopeとかyasnippetとか… まとめるのにくじけたので,ココを参照してください. ※以下はorig-setting.el内の設定で,Pythonのコーディングに関連しそうなもの. 対応する括弧の補完 (global-set-key (kbd "(") 'skeleton-pair-insert-maybe) (global-set-key (kbd "{") 'skeleton-pair-insert-maybe) (global-set-key (kbd "[") 'skeleton-pair-insert-maybe) (global-set-key (kbd "\"") 'skeleton-pair-insert-maybe) (global-set-key (kbd "\'") 'skeleton-pair-insert-maybe) (setq skeleton-pair t) tabの設定 (setq default-tab-width 4) (setq indent-line-function 'indent-relative-maybe) C-aで行頭とインデントを飛ばした行頭を行き来する. (global-set-key "\C-a" 'beginning-of-indented-line) (defun beginning-of-indented-line (current-point) (interactive "d") (if (string-match "^[ ¥t]+$" (save-excursion (buffer-substring-no-properties (progn (beginning-of-line) (point)) current-point))) (beginning-of-line) (back-to-indentation))) 参考サイト |