emacsの設定その1

今日やったことを忘れないようにメモしておく
あとはgtagsとかflymakeの設定あたりを調べないとあかん気がする
# 環境はosx lion



emacsの設定メモ

ディレクトリ構成

  • ~/
    • .emacs ;; はじめに読み込まれる設定
    • emacs.d/
      • snippets -> elisps/yassnipet/snippets
      • inits/ ;; 起動時に読み込む設定ファイル郡 (区分けはテキトー)
        • 00_base.el ;; 基本設定関連
        • 10_keybind.el ;; キーバインド関連
        • 20_window.el ;; 画面設定関連
        • 30_anything.el
        • 40_auto-complete.el
        • 40_yassnipet.el
        • 40_anything-project.el
      • elisps/ ;; emacsプラグイン
        • init-loader.el
        • anything/
          • anything.el
          • anything-config.el
          • anything-match-plugin.el
          • auto-complete/
        • apel/
        • color-theme/
        • elscreen/
        • yassnipet/

ロードパスの設定

先に全てのロードパスを設定しておく

;; setup load-path
(add-to-list 'load-path "~/.emacs.d/elisps")
(add-to-list 'load-path "~/.emacs.d/elisps/anything")
(add-to-list 'load-path "~/.emacs.d/elisps/apel")
(add-to-list 'load-path "~/.emacs.d/eclisps/auto-complete")
(add-to-list 'load-path "~/.emacs.d/elisps/elscreen")
(add-to-list 'load-path "~/.emacs.d/elisps/color-theme")
(add-to-list 'load-path "~/.emacs.d/elisps/yasnippet")

init-loaderの設定

ロード対象を追加しておく

参考
http://d.hatena.ne.jp/shiba_yu36/20101229/1293624201

;; init-loader
(require 'init-loader)
(init-loader-load "~/.emacs.d/inits")

雑多な設定

起動時の動作とかキーバインドとか

;; prevent from creating backup
(setq make-backup-files nil)

;; skep startup message
(setq inhibit-startup-message t)

;; emphasize blankets
(show-paren-mode t)

;; yen -> backspace
(define-key global-map [?\] [?\\])

;; blink cursor
(blink-cursor-mode t)

;; linum to show line number
(require 'linum)
(global-linum-mode t)
(setq linum-format "%5d ")

;; transmissive window
(add-to-list 'default-frame-alist '(alpha . 80))

;; goto-line -> alt+g
(define-key global-map (kbd "M-g") 'goto-line)

;; replace-string -> alt+r
(define-key global-map (kbd "M-r") 'replace-string)

;; indent-region -> ctrl+x ctrl+i
(define-key global-map (kbd "C-x C-i") 'indent-region)

color-themaの設定

黒字に白文字が好きなので

参考
http://www.emacswiki.org/emacs/ColorTheme

;; use color-theme "dark-laptop"
(require 'color-theme)
(color-theme-initialize)
(color-theme-dark-laptop)

elscreenの設定

screenライクなタブ
apelも一緒にインストールする必要がある
# 確かディレクトリ内でmakeすればよかったような

参考
http://d.hatena.ne.jp/gom68/20090606/1244307000

;; use elscreen
(require 'elscreen)

anythingの設定

あらゆる検索をひとつに集約して効率化
# もっと色々追加できるようにしたい

参考
http://d.hatena.ne.jp/tomoya/20090423/1240456834
http://www.emacswiki.org/emacs/Anything

;; use anything
(require 'anything)
(require 'anything-config)

;; anything -> \C-;
(define-key global-map (kbd "C-;") 'anything)

;; show file history
(require 'recentf)
(setq recentf-max-saved-items 1000)
(recentf-mode 1)

;; show buffer
(setq anything-sources
'(anything-c-source-buffers
))

auto-completeの設定

自動補完で用いる

参考
http://cx4a.org/software/auto-complete/index.ja.html

auto-completeをmakeする

tar zxvf auto-complete-1.3.1.tar
cd auto-complete-1.3.1
make DIR=$HOME/.emacs.d/elisps/auto-complete

設定

;; load auto-complete
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/elisps/auto-complete/ac-dict")
(ac-config-default)

yasnippetの設定

言語のテンプレ集
# 独自テンプレの作成方法とかも知りたい

anything-c-yasnippet
"cons: Symbol's function definition is void: yas/snippet-table-hash"
というメッセージが出てうまく動作しなかったので断念

どうも~/.emacs.d/snippetsをロードしようとしてエラーを出していたので、
ln -s ~/.emacs.d/elisps/yasnippet/snippets snippets
とした

参考
https://github.com/capitaomorte/yasnippet
http://d.hatena.ne.jp/IMAKADO/20080401/1206715770l
http://d.hatena.ne.jp/shiba_yu36/20100615/1276612642
https://gist.github.com/711583

;; load yasnippet
(require 'yasnippet)
(yas/global-mode 1)
(yas/initialize)
;(yas/load-directory "~/.emacs.d/elisps/yasnippet/snippets")
(yas/load-directory "~/.emacs.d/snippets")

;; setup anything-c-yasnipet
;(require 'anything-c-yasnippet)
;(setq anything-c-yas-space-match-any-greedy t)
;; anything-c-yas-complete -> \C-x y
;(global-set-key (kbd "C-x y") 'anything-c-yas-complete)

anythin-projectの設定

設定がとっても怪しい, プロジェクト管理するときに役立つ?

参考
http://d.hatena.ne.jp/yuheiomori0718/20111226/1324902529

;; setup anything-project
(require 'anything-project)
(global-set-key (kbd "M-p") 'anything-project)

;; project for cpp
;; is this setting right? hmm...
(ap:add-project
:name 'cpp
:look-for '(".svn" ".git")
:include-regexp '("\\.c$" "\\.cc$" "\\.cpp$" "\\.h$" "\\.hpp$")
)