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