WindowsでEmacsをセットアップ

WindowsのEmacsと言えばMeadowを使ってる人も多いかもしれないけど、MeadowはEmacs22系だから古いんだよね。今はEmacs23.3だから新しい機能を使いたい人には向いてない。そこで今日はWindowsでEmacsを使う方法を紹介。

インストール

gnupack Users Guide の右の「ダウンロード」の「emacs for gnupack」をクリック、そこから一番新しいemacsのexeファイルをダウンロードする。記事書いてる時点では「emacs-23.3a-20110815.exe」。

これを実行すると解凍されてディレクトリができる。これを好きにリネームして好きなところにおいてインストール完了。

レジストリ弄ったりとかは無い。解凍したディレクトリの bin/runemacs.exe を実行するだけでOK。

ところで、Windows7を使ってる人は、タスクバーに常に表示して、タスクバーのアイコンをクリックすることで起動したいと思うかもしれないが、それをすると不必要な窓が開いてしまい、しかもそれを閉じるとemacsまで閉じてしまう。流石Windows、残念である。

これはAppIDというものが問題らしい。AppIDについては アプリケーション ユーザー モデル ID (AppID) に説明があるがよくわからない。これを「GNU.Emacs」にすることでタスクバーのアイコンをクリックしたときの問題は解決するようだ。

以前はショートカットのAppIDを簡単に変更するShortcutAppIDChangerというプログラムを配布してくれてた人がいたのだが、今はそのサイトがなくなってしまっている。バックアップも取ってなかった。

ということで、どうしてもタスクバーから1つ窓で起動したい人はAppID周辺を調べてみてほしい。

設定

Emacs を使うならまずは .emacs の編集だろう。そこで、私のWindows用の設定をいくつか紹介しておく。

.emacs がわからないような人はこんなブログより丁寧に説明してるところを見た方がいいと思うので、環境変数HOMEを設定方法とか.emacsの置き場所とかcygwinの話とかは省略。

Meadowを使ってるころは PC でプログラミング にお世話になった。cygwinemacsも使ったことない人は、まずはここを参考にCygwinMeadowを設定してみて、ある程度理解したらgnupackを使ってみたらどうだろう。基本的な.emacsもあるし、初心者には重宝すると思う。

話が逸れてしまった。設定の紹介に移ろう。まずは「言語・文字コード関連の設定」から。

(when (equal emacs-major-version 21) (require 'un-define))
(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8-unix)
(set-keyboard-coding-system 'utf-8-unix)
(set-buffer-file-coding-system 'utf-8-unix)
(setq default-buffer-file-coding-system 'utf-8-unix)
(prefer-coding-system 'utf-8-unix)
(set-default-coding-systems 'utf-8-unix)
(setq file-name-coding-system 'shift_jis)

UTF-8でファイルを編集する設定がずらずら。「utf-8-unix」の「utf-8」が文字コード、「unix」が改行コードである。ほとんどutf-8-unixだけどWindowsのファイル名はSJISなのでそこだけshift_jisって書いてる。

次は「IMEの設定」。

;;;** 標準IMEの設定
(setq default-input-method "W32-IME")

;;;** IMEの初期化
(w32-ime-initialize)

;;;** IME状態のモードライン表示
(setq-default w32-ime-mode-line-state-indicator "[--]")
(setq w32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))

;;;** IME OFF時の初期カーソルカラー
(set-cursor-color "red")

;;;** IME ON/OFF時のカーソルカラー
(add-hook 'input-method-activate-hook
          (lambda() (set-cursor-color "green")))
(add-hook 'input-method-inactivate-hook
          (lambda() (set-cursor-color "red")))

;;;** バッファ切り替え時にIME状態を引き継ぐ
(setq w32-ime-buffer-switch-p nil)

私はATOKを使ってるが、MS-IMEでもGoogle-IMEでも変わらないと思う。多分。

IME ON/OFF時でカーソルの色を変えるのはけっこう便利。ミニバッファで自動でIMEをOFFにする設定とか書くとよくバグるんだけど。

次は「フォントの設定」。

;;;** Consolas + MSゴシック
(set-default-font "Consolas 10")
(set-fontset-font (frame-parameter nil 'font)
                  'japanese-jisx0208
                  '("MS ゴシック" . "unicode-bmp")
                  )
(set-fontset-font (frame-parameter nil 'font)
                  'katakana-jisx0201
                  '("MS ゴシック" . "unicode-bmp")
                  )

プログラミングするなら等幅じゃないとね。Consolasはお気に入り。

ラスト、「フレームサイズ・位置・色の設定」。

;;;** 黒背景に灰色の文字
(setq default-frame-alist
      (append (list '(foreground-color . "gray")
                    '(background-color . "black")
                    '(border-color . "black")
                    '(mouse-color . "white")
                    '(width . 120)
                    '(height . 30)
                    '(top . 100)
                    '(left . 200))
              default-frame-alist))

各項目のピリオドの右("gray"とか120とか)は自分の好みに合わせてね。Windowsだとwidthとheightを画面ピッタリに設定しても最大化ボタン押したときみたいに外枠が消えないから、Win+↑ で毎回自分で最大化してる。



以上。Windowsでも是非新しいEmacsを使ってあげてください。まあLinux常用することに問題がなければ絶対そっちの方がいいけど。