Emacsの設定
今年は,Emacsを使えるようになろうと決意.とりあえず,いままで設定したものをまとめる.環境は,Ubuntu Gutsy+Emacs23.
日本語にアンチエイリアスを効かせる.
Emacsの安定版は22だが,それでは日本語にアンチエイリアスが効かない.開発中の23からは,日本語フォントにもアンチエイリアスが効くのでEmacs23をインストールする.自前でソースからビルドする方法と,パッケージからインストールする方法があるが,今回はパッケージからインストールすることにする.
標準のリポジトリでは,開発中のEmacsは含まれないのでリポジトリを追加する.
% vi /etc/apt/sources.list // 以下を追加. deb http://ppa.launchpad.net/avassalotti/ubuntu gutsy main deb-src http://ppa.launchpad.net/avassalotti/ubuntu gutsy main
aptの更新および,Emacsのインストール.
% apt-get update % apt-get install emacs-snapshot emacs-snapshot-el
.Xresourceの作成
$ vi $HOME/.Xresource // 以下を追加. Emacs.FontBackend: xft
.Xresourceのマージ
$ xrdb -merge .Xresource
.emacsでのfont指定.xft名でフォントを指定できる.使用するフォント名はfc-listコマンドで調べる.
;=================================== ; Fontの設定(Antialias) ;=================================== (cond(window-system (set-default-font "M+2VM+IPAG-12") (set-fontset-font(frame-parameter nil 'font) 'japanese-jisx0208 '("M+2VM+IPAG" . "unicode-bmp")) ))
フォント名の部分は,自分が使用するフォントに設定.12の部分は,フォントサイズ.
これでアンチエイリアスの効いたEmacsになるはず.
migemoのインストール
デフォルトでは日本語の検索機能が使いにくいため,ローマ字で検索できるようになるMigemoをインストールする.aptでインストールできるので楽.
% apt-get install migemo
Migemo用の設定を.emacsに追加.辞書のpathは環境により適宜変更.
;=================================== ; migemoの設定 ;=================================== (setq migemo-directory "/usr/share/migemo") (load "migemo") (migemo-init)
これで, M-s でmigemo検索ができるようになる.
.emacs
メモがてら現在の.emacsを載せる.emacs上から.emacsを再読み込みさせるには,
.emacsを編集中のbuffer上で
M-x eval-current-buffer
もしくは,
M-x RET ~/.emacs
;=================================== ; global-set-keyの変更。vi風に。 ;=================================== ;(global-set-key "\C-h" 'backward-char) ;(global-set-key "\C-j" 'next-line) ;(global-set-key "\C-k" 'previous-line) ;(global-set-key "\C-l" 'forward-char) ;=================================== ; Emacs23用の設定(Antialias) ;=================================== (cond(window-system (set-default-font "M+2VM+IPAG-12") (set-fontset-font(frame-parameter nil 'font) 'japanese-jisx0208 '("M+2VM+IPAG" . "unicode-bmp")) )) ;=================================== ; global-font-lock-mode(これがないと ; ファイルごとに色づけできない) ;=================================== (global-font-lock-mode 1) (setq font-lock-support-mode 'jit-lock-mode) ;=================================== ; migemoの設定 ;=================================== (setq migemo-directory "/usr/share/migemo") (load "migemo") (migemo-init) ;=================================== ; Misc(Miscellaneous) ;=================================== (setq visible-bell t) ;; 警告音を消す (auto-compression-mode t) ;; 日本語infoの文字化け防止 (global-set-key "\C-z" 'undo) ;; C-ZでUndo (set-scroll-bar-mode 'right) ;; スクロールバーを右に (display-time) ;; 時計を表示 (setq line-number-mode t) ;; カーソルのある行番号を表示 (setq kill-whole-line t) ;; カーソルが行頭にある場合も行全体を削除 (setq make-backup-files nil) ;; バックアップを作成しない. (setq x-select-enable-clipboard t) ;; クリップボードの共有 (setq-default indent-tabs-mode nil) ;; tabを使用しないように. (setq fill-column 80) (auto-fill-mode 1) ;=================================== ; FrameSize, position, color ;=================================== (setq initial-frame-alist (append(list '(width . 90) ;; フレームの幅 '(height . 39) ;; フレームの高さ '(top . 20) ;; 表示位置Y '(left . 340) ;; 表示位置X ) initial-frame-alist)) (setq default-frame-alist initial-frame-alist) ;=================================== ; Japanese Language ;=================================== (set-language-environment "japanese") (set-default-coding-systems 'utf-8) (set-buffer-file-coding-system 'utf-8) (set-terminal-coding-system 'utf-8) ;(set-default-coding-systems 'euc-jp) ;(set-buffer-file-coding-system 'euc-jp) ;(set-terminal-coding-system 'euc-jp) ;=================================== ; .zipなどを補完候補から外す ;=================================== (setq completion-ignored-extensions (append completion-ignored-extensions '(".exe" ".com" ".o" ".zip" ".rar"))) ;=================================== ; yatex-mode ;=================================== (setq auto-mode-alist (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist)) (autoload 'yatex-mode "yatex" "Yet Another LaTex mode" t) (setq load-path (cons (expand-file-name "/usr/share/emacs/site-lisp/yatex") load-path)) ;=================================== ; c-mode ;=================================== (setq c-default-style "k&r") (add-hook 'c-mode-common-hook '(lambda() ;; センテンスの終了である ';' を入力したら自動改行+インデント (c-toggle-auto-hungry-state 1) ;; RET キーで自動改行+インデント (define-key c-mode-base-map "\C-m" 'newline-and-indent) )) ; [F7]でコンパイル(バッファを全部保存して,make all します) ; [F4]でコンパイルエラー行へジャンプ ; [F1]でカーソル下の単語について マニュアルを開く ; SHIFT+[F7] でリビルド(make clean all) ; SHIFT+[F4] で一つ前のエラー行へジャンプ (setq auto-mode-alist (append '(("\\.C$" . c++-mode) ("\\.cc$" . c++-mode) ("\\.cpp$". c++-mode) ("\\.hh$" . c++-mode) ("\\.c$" . c-mode) ("\\.h$" . c++-mode)) auto-mode-alist)) (add-hook 'c-mode-common-hook '(lambda () (require 'vc-hooks) (setq completion-mode t) ;; make のオプションは聞いてこない (setq compilation-read-command nil) ;; make するとき 全バッファを自動的にsaveする (setq compilation-ask-about-save nil) (define-key c-mode-base-map [f1] 'manual-entry) (define-key c-mode-base-map [f4] 'next-error) (define-key c-mode-base-map [(shift f4)] 'previous-error) (define-key c-mode-base-map [f7] 'compile) (define-key c-mode-base-map [(shift f7)] '(lambda () (interactive) ;;(require 'compile) ;;(save-some-buffers (not compilation-ask-about-save) nil) (compile-internal "make clean all" "No more errors"))) )) ; flymakeで構文チェッカとしてmakeを指定. ; 使用するには,M-x flymake-modeで切替. ; C-x C-s で保存後,自動的にチェック (require 'flymake) (defun flymake-get-make-cmdline (source base-dir) (list "make" (list "-s" "-C" base-dir (concat "CHK_SOURCES=" source) "SYNTAX_CHECK_MODE=1"))) ;=================================== ; Anthy or Prime ;=================================== (set-input-method "japanese-anthy") ;=================================== ; Dired ;=================================== (require 'ls-lisp) (let (current-load-list) (defadvice insert-directory (around reset-locale activate compile) (let ((system-time-locale "C")) ad-do-it))) ;=================================== ; Wheel mouse ;=================================== ;(global-set-key [mouse-4] 'scroll-down) ;(global-set-key [mouse-5] 'scroll-up) (progn (defun scroll-up-half () "Scroll up half a page." (interactive) (scroll-up (/ (window-height) 2)) ) (defun scroll-down-half () "Scroll down half a page." (interactive) (scroll-down (/ (window-height) 2)) ) (global-set-key [(mouse-5)] 'scroll-up-half) (global-set-key [(mouse-4)] 'scroll-down-half) ) ;====================================== ;ruby-modeの設定 ;====================================== (autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files" t) (setq auto-mode-alist (append '(("\\.rb$" . ruby-mode)) auto-mode-alist)) (setq interpreter-mode-alist (append '(("ruby" . ruby-mode)) interpreter-mode-alist)) (autoload 'run-ruby "inf-ruby" "Run an inferior Ruby process") (autoload 'inf-ruby-keys "inf-ruby" "Set local key defs for inf-ruby in ruby-mode") (add-hook 'ruby-mode-hook '(lambda () (inf-ruby-keys))) ;====================================== ; color-theme ;====================================== (load "color-theme") (color-theme-dark-laptop) ;====================================== ; nx-html ; php-mode.elはnx-html内に含まれるので ; 参照するマニュアルのpathは,php-mode.elに ; 書き込む. ;====================================== (load "/usr/share/emacs/site-lisp/nxml/autostart.el") ;====================================== ; mmm-mode ;====================================== (require 'mmm-mode) (require 'mmm-auto) (setq mmm-global-mode 'maybe) (setq mmm-submode-decoration-level 0) (mmm-add-find-file-hook) (mmm-add-mode-ext-class nil "\\.html\\'" 'js-script) (mmm-add-classes '( (js-script-cdata :submode javascript :face mmm-code-submode-face :delimiter-mode nil :front "<script[^>]*>[ \t\n]*<!\\[CDATA\\[[ \t]*\n?" :back "[ \t]*]]>[ \t\n]*</script>" ) (js-script :submode javascript :face mmm-code-submode-face :delimiter-mode nil :front "<script\[^>\]*\\(language=\"javascript\\([0-9.]*\\)\"\\|type=\"text/javascript\"\\)\[^>\]*>[ \t]*\n?" :back "[ \t]*</script>" :insert ((?j js-script nil @ "<script type=\"text/javascript\">" @ "\n" _ "\n" @ "</script>" @)) ) (js-inline :submode javascript :face mmm-code-submode-face :delimiter-mode nil :front "on\\w+=\"" :back "\"") (css-style-cdata :submode css :face mmm-code-submode-face :delimiter-mode nil :front "<style[^>]*>[ \t\n]*<!\\[CDATA\\[[ \t]*\n?" :back "[ \t]*]]>[ \t\n]*</style>" ) (css-style :submode css :face mmm-code-submode-face :delimiter-mode nil :front "<style[^>]*>[ \t]*\n?" :back "[ \t]*</style>" :insert ((?c css-style nil @ "<style type=\"text/css\">" @ "\n" _ "\n" @ "</style>" @)) ) (css-inline :submode css :face mmm-code-submode-face :delimiter-mode nil :front "style=\"" :back "\"") ))