Emacs21 で Windows の IME を使う

最終更新日 2005/05/11

NTEmacs 21.3 に、 Meadow のソースの一部をマージして、Windows の IME (Input Method Editor) を、 利用できるようにしてみました。 これ以外にも、便利だと思うものを取り込みました。 (画面例1(ウインドウ立体枠無し)画面例2(ウインドウ立体枠有り)スケーラブルフォントの表示例)。 パッチを公開しますので、興味のある方は試してください。

0. お知らせ

CVS HEAD の NTEmacs に対する patch を小林さんが公開されています。 最新の NTEmacs で IME を使いたい場合にはぜひ試してみてください。 また、この patch を使った ビルドの仕方を広松さんが公開されてますので、参考にしてください。

現在 Emacs-21.1 をベースにした Meadow2 がベータテスト中です。 私は、 Meadow2 へ完全に移行してしまったため、今後 このページで公開している patch を更新する予定はありません。 この patch を利用されてる方は、 適宜 Meadow2 へ移行して頂くようにお願いします。

1. パッチの変更履歴

2. ダウンロード

最新のパッチ(どちらかをダウンロードして下さい) 過去のパッチ

3. このパッチで可能になること

4. 制限事項・注意事項

5. 使い方

使い方は簡単です。Emacs 上で、漢字キーを入力して IME をトグルさせて、 文字を入力してください。デフォルトで、`C-\ でも' トグル可能です。 IME のオン・オフは、関数 toggle-input-method を使って、 お好みのキーに割り当てることができます。下記の設定を参照してください。

6. コンパイル手順

Emacs21 のコンパイルには、Cygwin環境、 または、Microsoft VC++ (MSVC) を利用することが可能です。 どちらかお好みの方をご利用ください。 ここでは、それぞれの場合のコンパイル手順について順に示します。

6.1 Cygwin 環境を利用する場合

(1)事前準備

Cygwin を使えるようにしておきます。 Cygwin に詳しくない方は、 すべてのパッケージをインストールしてください。 インストーラを使うとデフォルトですべてインストールされます。 次に、 ftp://ftp.iij.ad.jp/pub/GNU/emacs/ftp://ftp.m17n.org/pub/mule から Emacs 21.3 のソース一式(emacs-21.3.tar.gz)を入手します。 それから、 emacs-21.3-IME-03.patch.gz (または emacs-21.3-IME-03.tar.bz2) を入手しておきます。

(2)コンパイル & インストール

emacs を /usr/local/emacs にインストールする場合の例を示します。 emacs-21.3.tar.gz と emacs-21.3-IME-03.patch.gz (または emacs-21.3-IME-03.tar.bz2)がカレントディレクト リにあるものとします。`#' 以降はコメントですので、入力は不要です。

emacs-21.3-IME-03.patch.gz を利用する場合

$ tar zxvf emacs-21.3.tar.gz
$ cd emacs-21.3
$ zcat ../emacs-21.3-IME-03.patch.gz | patch -p1  # patch をあてる
$ cd nt
$ ./configure.bat --with-gcc --no-cygwin --prefix /usr/local/emacs/21.3
$ make all-meadow-ntemacs SHELL=bash # ビルドする
$ make install SHELL=bash            # インストール
$ mkdir /usr/local/emacs/site-lisp   # site-lisp ディレクトリを手動で作る

emacs-21.3-IME-03.tar.bz2 を利用する場合

$ tar zxvf emacs-21.3.tar.gz
$ tar jxvf emacs-21.3-IME-03.tar.bz2
$ cd emacs-21.3/nt
$ ./configure.bat --with-gcc --no-cygwin --prefix /usr/local/emacs/21.3
$ make meadow-ntemacs SHELL=bash     # ビルドする
$ make install SHELL=bash            # インストール
$ mkdir /usr/local/emacs/site-lisp   # site-lisp ディレクトリを手動で作る

6.2 MSVC を利用する場合

(1)事前準備

まず、MSVC を利用できるようにしておきます。 また、tar, patch/gzip/gunzip 等のツールも別途必要ですので、 Cygwin 等をインストールしておいてください。 以下は、Cgywin のツールを利用する場合の手順を示します。 次に、 ftp://ftp.iij.ad.jp/pub/GNU/emacs/ftp://ftp.m17n.org/pub/mule から Emacs 21.3 のソース一式(emacs-21.3.tar.gz)を入手します。 それから、 emacs-21.3-IME-03.patch.gz (または emacs-21.3-IME-03.tar.bz2) を入手しておきます。

(2)コンパイル & インストール

emacs を /usr/local/emacs にインストールする場合の例を示します。 emacs-21.3.tar.gz と emacs-21.3-IME-03.patch.gz (または emacs-21.3-IME-03.tar.bz2)がカレントディレクト リにあるものとします。`#' 以降はコメントですので、入力は不要です。

emacs-21.3-IME-03.patch.gz を利用する場合

(Windows のコマンドプロンプト上で)
$ tar zxvf emacs-21.3.tar.gz
$ cd emacs-21.3
$ bash                                # こうしないと zcat が使えない??? 
$ zcat ../emacs-21.3-IME-03.patch.gz | patch -p1  # patch をあてる
$ exit                                # bash を終了する
$ cd nt
$ .\configure.bat --with-msvc --prefix \usr\local\emacs\21.3
$ nmake all-meadow-ntemacs SHELL=bash # ビルドする
$ nmake install SHELL=bash            # インストール
$ mkdir \usr\local\emacs\site-lisp    # site-lisp ディレクトリを手動で作る

emacs-21.3-IME-03.tar.bz2 を利用する場合

(Windows のコマンドプロンプト上で)
$ tar zxvf emacs-21.3.tar.gz
$ tar jxvf emacs-21.3-IME-03.tar.bz2
$ cd emacs-21.3\nt
$ .\configure.bat --with-msvc --prefix \usr\local\emacs\21.3
$ nmake meadow-ntemacs SHELL=bash     # ビルドする
$ nmake install SHELL=bash            # インストール
$ mkdir \usr\local\emacs\site-lisp    # site-lisp ディレクトリを手動で作る

7. Emacs の設定

基本的に Meadow の設定と同じです。私の設定例を下記に示します。
;; 日本語環境の設定
(set-language-environment "Japanese")
;; IME の設定
(mw32-ime-initialize)
(setq default-input-method "MW32-IME")

;; IME インジケータの設定
(setq-default mw32-ime-mode-line-state-indicator "[--]")
(setq mw32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))

;; デフォルトの coding-system を Meadow と同じにしました。特に理由がない
;; 限り coding-system の設定は不要です。うまく機能していない場合には、
;; 次の設定をしておくといいでしょう。
;(set-default-coding-systems 'japanese-shift-jis-dos)
;(set-w32-system-coding-system 'japanese-shift-jis-dos) 
;(set-clipboard-coding-system 'japanese-shift-jis-dos)
;(set-keyboard-coding-system 'japanese-shift-jis-dos)

;; `C-o' で IME をトグルするための設定
;; デフォルトで `M-\' または`漢字'キー(<kanji>)でもトグルできる
(global-set-key "\C-o" 'toggle-input-method)

;; y/n, yes/no の問い合わせ時に IME をオフにする
(wrap-function-to-control-ime 'y-or-n-p nil nil)
(wrap-function-to-control-ime 'yes-or-no-p nil nil)

;; スクリプトを emacs から実行するための設定
(require 'mw32script)
(mw32script-init)

;; フォント設定例(TrueType を使う場合)
;;  注)ascii や latin-jisx0201 に TrueType を使うと bitmap の行間に隙間が空く
;;     回避するには、BDF フォントを指定する
;;     詳しくは下記参照
;;     http://www.egroups.co.jp/message/emacs21-users-ja/262
(setq scalable-fonts-allowed t)
(let ((jfont "-*-MS ゴシック-*-*-*-*-*-*-*-*-*-*-jisx0208-sjis")
      (specs '(latin-jisx0201 katakana-jisx0201 japanese-jisx0208)))
  (create-fontset-from-fontset-spec
   (concat "-*-Courier New-*-*-*-*-14-*-*-*-*-*-fontset-std,"
	   (mapconcat (lambda (x) (format "%s:%s" x jfont)) specs ",")))
  (while specs
    (set-fontset-font "fontset-std" (make-char (car specs))
		      '("MS ゴシック" . "jisx0208-sjis"))
    (setq specs (cdr specs))))

(setq default-frame-alist
      (append '(
                ;; 設定した fontset-std を利用する。
                (font . "fontset-std")
                ;; 日本語変換中のフォントの設定
                ;; TrueType フォントの動作しか確認していない
                (ime-font . "-*-MS ゴシック-*-*-*-*-16-*-*-*-*-*-jisx0208-sjis"))
              default-frame-alist))

8. 使ってみた感想

Windows の Emacs21 は、 メールの読み書き、日本語文書の作成、 ちょっとしたプログラムの作成などに使っている限りにおいて、 大きな問題もなく安定して使えています。 また、私が常用している elisp ライブラリは、すべて利用できています。

ただし、Emacs21 の特徴である、画像のインライン表示やツールバーが、 まだサポートされていないので、少々悲しいものがあります。 また、次にあげるような小さな問題があります。 うまく設定できていないだけだと思います。