Emacs23へ完全移行

長らくBlog記事を書いてなかったが、前の記事は春先に書いた物で気がつけばもうすぐ紅葉。今年はいろんなことに翻弄された結果、コンスタントに記事を書くと言う状況がなかなか作れなかった。(やる気がいろいろ抜けたとも言うが・・・) 小難しいことを考えても仕方ないので、少しずつ記事を書いていこうと思う。
大学時代からUnix文化に接して暮らしてきたせいか、基本的にGNU Emacsをメインのメールやプログラムを書く環境に用いている。そのためWindowsでもWindows版 GNU Emacsの1つであるMeadowを使ってきた。Meadow自体は日本語の特殊環境を踏まえていることもあって、Windowsの上では非常に使いやすいのだが、GNU Emacs 21.4から派生したMeadow 2.10から長らくメジャーバージョンアップもされず、他の環境で用いているバージョンとの乖離が大きくなってしまって、だんだんと疎遠になってしまった。最近Windowsでもちょっとしたプログラム書きとしてのRubyのスクリプトを書くにも、関数型言語のお勉強としてSchemeの実装の一つGaucheHaskell Plathomeが使いやすくなってきたので、急にEmacsの需要が出てきたというわけである。

ずいぶん前からWindowsNT版のEmacsもあったのだが、WindowsのIMEからの日本語入力できないなどの問題があったが、IMEパッチなるものがEmacs 22あたりから使われるようになってきた(NTEmacsJP Projectにて配布されている)ので、この際Emacs 23に移行して良かろうと言うことで見直すこととなった。Emacs22はIMEパッチ適用済みバイナリがIMEパッチ配布サイトに置いてあるのだが、Emacs23に当てた物がなかなか見当たらない。いったんWurlyさんのページから、バイナリをダウンロードしてみた。折を見てビルドできる環境を作っていこう・・・ 設定のポイントとなるのは日本語入力と表示になると思う。ちょっとWebをさまよってWindows版 Emacsの話題が掲載されていたYu-ji Hosokawaさんのblogになかなか良い感じのFont設定が載っていたので、いったん最小限度の設定を行ってみた。各種設定は追々していく。ということで、現状の.emacs。マルチプラットホームで使うことはまだ考えていない。続くかどうかも不明・・・

;;;
;; Global Setting
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; 日本語設定
;;;
;; 文字コード
(set-language-environment "Japanese")
(prefer-coding-system 'utf-8-unix)
(set-default-coding-systems 'utf-8-unix)
(setq file-name-coding-system 'sjis)
(setq locale-coding-system 'utf-8)
;(set-keyboard-coding-system 'japanese-shift-jis)
;; Input Method
(setq default-input-method "W32-IME")
(w32-ime-initialize)
;; バックアップを残さない
(setq make-backup-files nil)
;; ビープ音,画面フラッシュなし
(setq ring-bell-function 'ignore)
;; ファイル末の改行がなければ追加
(setq require-final-newline t)
;;; 表示関係
;; スタートアップ非表示
(setq inhibit-startup-screen t)
;; メニューバー,ツールバーの非表示
;(menu-bar-mode nil)
;; ツールバー非表示
(tool-bar-mode 0)
;; スクロールバーを右側に表示
(set-scroll-bar-mode 'right)
;; ファイルのフルパスをタイトルバーに表示
(setq frame-title-format
      (format "%%f - Emacs@%s" (system-name)))
;; 行番号表示
(global-linum-mode)
;; 列番号表示
(column-number-mode t)
;; 時計表示
;; 日時・時刻のフォーマット指定 (yyyy/mm/dd(day) hh:mm)
(setq display-time-string-forms
      '((format "%s/%s/%s(%s) %s:%s"
        year month day dayname
        24-hours minutes
        )))
(display-time)
;; 最近使ったファイルをメニューに表示
(recentf-mode 1)
(setq recentf-max-menu-items 10)
(setq recentf-max-saved-items 10)
;;; load-path関係
;; load-pathの追加関数
(defun add-to-load-path (&rest paths)
  (let (path)
    (dolist (path paths paths)
      (let ((default-directory (expand-file-name (concat user-emacs-directory path))))
        (add-to-list 'load-path default-directory)
        (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
            (normal-top-level-add-subdirs-to-load-path))))))
;; load-pathに追加するフォルダ
(add-to-load-path "elisp")
;;; 日本語フォント設定
;;; http://u.hoso.net/2011/01/standard-fontset.html
(defun my-setup-fontset ()
  "fontset-standard を使ったフォント設定"
  (interactive)
  ;; fontset-standard
  (dolist (target '(japanese-jisx0208
                    japanese-jisx0208-1978
                    japanese-jisx0212
                    japanese-jisx0213-1
                    japanese-jisx0213-2
                    japanese-jisx0213.2004-1
                    ;;katakana-jisx0201
                    ;;latin-jisx0201
                    ;;mule-unicode-0100-24ff
                    ;;mule-unicode-2500-33ff
                    ;;mule-unicode-e000-ffff
                    ))
    (set-fontset-font "fontset-standard" target "MS Gothic"))
  (dolist (target '(latin-iso8859-1
                    latin-iso8859-2
                    latin-iso8859-3
                    latin-iso8859-4
                    cyrillic-iso8859-5
                    greek-iso8859-7))
    (set-fontset-font "fontset-standard" target "Consolas"))
  (set-fontset-font "fontset-standard" 'ascii "Consolas 10")
  ;; modify fontset-default for fallback
  (set-fontset-font t nil "Arial Unicode MS")
  ;; Use the predefined fontset "fontset-standard"
  (set-face-font 'default "fontset-standard"))
(my-setup-fontset)
(add-to-list 'default-frame-alist '(font . "fontset-standard"))
;;; 括弧と選択領域
;; 括弧の範囲内を強調表示
(setq show-paren-delay 0)
(show-paren-mode t)
(setq show-paren-style 'expression)
;; 括弧の範囲色
(set-face-background 'show-paren-match-face "#A88")
;; 選択領域の色
(set-face-background 'region "#AAA")
;;; デフォルトのフレームサイズ,背景色の変更
(setq default-frame-alist
      (append
       '((set-background-color "LemonChiffon")
     (set-foreground-color "black")
     (top . 0)
     (left . 0)
     (width . 120)
     (height . 40))
       default-frame-alist))
;;;; C-hをバックスペース
(global-set-key "\C-h" 'backward-delete-char)