counter
Last-modified: 2007/04/01

NTEmacs


IME-Patch CVS-HEAD対応版(emacs-cvs-20070224-IME.patch)

オリジナルは, 三好さん IME-Patch です.Meadow2で修正されているbugも若干取り入れています. また,拙作のマウスカーソルパッチも本家にマージされています.

Buildの方法は,広松さん, 三好さんのページを参考にして下さい.

.emacs.el

;;; -*- Mode: Emacs-Lisp ; coding: iso-2022-jp-unix -*-;;;

;;; Language
(set-language-environment "Japanese")

;;; IME
(when (fboundp 'mw32-ime-initialize)
  (setq default-input-method "MW32-IME")
  (setq-default mw32-ime-mode-line-state-indicator "[--]")
  (setq mw32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))
  (mw32-ime-initialize)

  (wrap-function-to-control-ime 'y-or-n-p nil nil)
  (wrap-function-to-control-ime 'yes-or-no-p nil nil)
  (wrap-function-to-control-ime 'universal-argument t nil)
  (wrap-function-to-control-ime 'read-string nil nil)
  (wrap-function-to-control-ime 'read-from-minibuffer nil nil)
  (wrap-function-to-control-ime 'read-key-sequence nil nil)
  (wrap-function-to-control-ime 'map-y-or-n-p nil nil)
  (wrap-function-to-control-ime 'read-passwd t t) ; don't work as we expect.

  (add-hook 'mw32-ime-on-hook
	    (function (lambda () (set-cursor-color "blue"))))
  (add-hook 'mw32-ime-off-hook
	    (function (lambda () (set-cursor-color "black"))))
  (add-hook 'minibuffer-setup-hook
  	    (function (lambda ()
  			(if (fep-get-mode)
			    (set-cursor-color "blue")
			  (set-cursor-color "black"))))))

;;; TrueType-font
(setq w32-use-w32-font-dialog nil)

(setq scalable-fonts-allowed t)
(setq w32-enable-synthesized-fonts t)

(create-fontset-from-fontset-spec
 "-*-Courier New-normal-r-*-*-12-*-*-*-c-*-fontset-TTG12c,
 japanese-jisx0208:-*-MS ゴシック-*-*-*-*-*-*-*-*-*-*-jisx0208-sjis,
 latin-jisx0201:-*-MS ゴシック-*-*-*-*-*-*-*-*-*-*-jisx0208-sjis,
 katakana-jisx0201:-*-MS ゴシック-*-*-*-*-*-*-*-*-*-*-jisx0208-sjis,
 mule-unicode-e000-ffff:-*-MS ゴシック-*-*-*-*-*-*-*-*-*-*-iso10646-1" t)

;;; Frame parameters
(setq default-frame-alist
      (append '((foreground-color . "black")
		(background-color . "white")
		(mouse-color . "white")
		(cursor-color . "black")
		(scroll-bar-width . 14)
		(width . 90)
		(height . 45)
		(left . 350)
		(ime-font . "-*-MS ゴシック-*-*-*-*-12-*-*-*-*-*-jisx0208-sjis")
		(font . "fontset-TTG12c")
		(vertical-scroll-bars . right)
		(line-spacing . 0)
		(cursor-type . box))
	      default-frame-alist))

(setq initial-frame-alist default-frame-alist)

Frameの最大化,最小化

;;; Change the current frame size.
(setq w32-frame-maximum nil)

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (w32-send-sys-command 61488)
  (setq w32-frame-maximum t))

(defun w32-restore-frame ()
  "Restore the current frame"
  (w32-send-sys-command 61728)
  (setq w32-frame-maximum nil))

(defun toggle-frame-size ()
  "Toggle frame size."
  (interactive)
  (if w32-frame-maximum
      (w32-restore-frame)
    (w32-maximize-frame)))

;; (iconify-or-deiconify-frame)はC-zとC-S-zが
;; 重複してるので勝手に割り当て
(global-set-key [?\C-\S-z] 'toggle-frame-size)

'-'を使用したフォントへの対応 (emacs-underscore-font.patch)

このpatchでフォント名に'-'(hyphen)と'_'(underscore)を同時に使用することは出来ません.
;;;  フォント名の'-'を'_'に置換して指定する
;;;  例:HG正楷書体-PRO
(create-fontset-from-fontset-spec
  "-*-Courier New-normal-r-*-*-12-*-*-*-c-*-fontset-test,
   japanese-jisx0208:-*-HG正楷書体_PRO-*-*-*-*-*-*-*-*-*-*-jisx0208-sjis" t))

ChangeLog

  • 2007-02-24版
    w32.c で#x7Cを含むファイル名が表示できないBugが本家で修正されました.
  • 2007-01-11版
    lib-src/makefile.w32-in, nt/makefile.w32-in のConflictを修正しました.
  • 2006-07-03版
    man/makefile.w32-in, src/makefile.w32-in, w32fns.c に修正漏れがありました.
  • 2006-07-01版
    RECONVERTSTRING の二重定義の対応をMeadow同様configure.batに移動しました.
  • 2006-04-18版
    最新のw32api-3.7に対応しました.
  • 2006-02-16版
    Meadowに倣って,IME確定文字表示の処理中のEvent初期化をループ内に移動してみました.IME確定文字表示の遅いことが,若干改善されている気がします.また、2005-06-15の不具合が再発していました(桑島雄一郎さんご指摘ありがとうございました).
  • 2006-01-30版
    2005-12-02版の修正を全面的に変更(IME入力中のLOGFONTを求める処理をメインスレッドに移動)しました.
  • 2005-12-02版
    IME入力中のフォント指定時にEmacsが落ちるBugがあったので修正しました.
  • 2005-11-17版
    lisp.hのstruct Lisp_Consに変更があったため,エラーが発生しました.マクロを使用する様に修正しました.
  • 2005-11-04版
    マウスホイールの不具合は,mwheel.elが正常に修正されたようなのでloadup.elへの変更を削除しました.
  • 2005-11-03版
    M-x [変換]で落ちるbugへの対応.Meadow開発グループのほりぐちさんの修正を一部変更して取り込みました.Meadowでは,RECONVERSIONのコードの大幅な変更がありましたが,IME-Patchでは最小限な変更だけにしました.また,loadup.elの変更でマウスホイールが効かなくなっていたので,簡単に修正しました.
  • 2005-08-20版
    Meadowでwrap-function-to-control-imeの変更,isearch-ime-keymapの削除があったのでlisp/international/meadow-ntemacs.elにsyncしました.また,wrap-function-to-control-imeのdoc-stringがetc/DOCに反映されていなかったのでlib-src/makefile.w32-inを変更しました.
  • 2005-08-01版
    VCではw32fns.cとxdisp.cの`Qcenter'がconflictしていてコンパイルできないようなので修正しました.Meadowでlisp/international/meadow.elの大幅な改修があったのでlisp/international/meadow-ntemacs.elにsyncしました.この変更のため,.emacs.elのminibuffer-setup-hookを変更しました.
  • 2005-07-01版
    man/makefile.w32-in にconflictが発生したので修正しました.
  • 2005-06-17版
    桑島雄一郎さんから訂正がありました.(不要な処理が含まれていました.)
  • 2005-06-15版
    ATOK,SKK-IMEで変換中の文字が非表示になる不具合が解決します.桑島雄一郎さんが修正してくれました.ありがとうございました.
  • 2005-05-18版
    IME入力ウィンドウの縦方向の領域範囲を修正しました.ATOKで変換前の文字が非表示になる不具合が解決します.
  • 2005-05-11版
    IME入力ウィンドウが,Fringeやスクロールバーに重なったり,FRAME分割している時に他のWINDOWに重なったりしていたのを,入力中のWINDOW領域内に収まるように変更しました.
  • 2005-05-06版
    IME fontは入力箇所のFontを使用するように変更しました. ただし,入力箇所が新規Buffer,行頭の場合は,Frame Parameterのime-fontを使用します.
  • 2005-04-26版
    window.cにconflictが発生したので修正しました.
  • 2004-12-14版
    rms による(vertical-motion)への修正が取りこまれたので修正しました.
  • 2004-12-13版
    w32term.cにconflictが発生したので修正しました.rms による(vertical-motion)への修正がまだ反映されていないが,取り込み済みです.
  • 2004-11-09版
    lib-src/makefile.w32-inにconflictが発生したので修正しました.
  • 2004-11-04版
    手元のソースの修正ミスのためconflictが発生したので修正しました.(emacs-unicode-2でのw32_font_matchへの修正が取り込まれました.)
  • 2004-11-01版
    GDIリークが修正されたので,該当のpatch部分を削除しました.
  • 2004-10-17版
    本家にて,2004-10-14版の修正と同様な変更がありましたので,該当部分を削除しました.
  • 2004-10-14版
    multibyteなフォント名を指定すると,one_w32_display_info->font_tableに同じフォントがダブって登録されるバグを修正しました.これにより,fontの設定が期待どうりに動作するようになりました.(今までは,期待のフォントを表示するためには,サイズが固定,サイズをFaceどうりに表示するためには,HGPゴシック固定しか設定できませんでした.)
  • 2004-07-19版
    再変換のコードの見直し(region非選択時のエリア選択方法の変更).
  • 2004-07-16版
    本家に取り込まれたので削除しました(ファイルダイアログを表示させたときに,ファイル名が文字化けすることを修正).
    再変換のコードの見直し(region非選択時のエリア選択方法の変更).
  • 2004-07-15版
    ファイルダイアログを表示させたときに,ファイル名が文字化けすることを修正しました.
    再変換のコードを見直し(Meadowからのバックポートとbug fix).
  • 2004-07-14版
    IMEの再変換機能を実装しました.まだ,十分テストしていませんのでbug報告をお願いします.
    インストール先をc:/usr/emacs/currentとした場合
    /src/emacs/nt$ ./configure.bat --with-gcc --no-cygwin --prefix \
    > c:/usr/emacs/current --cflags -DIME_CONTROL --cflags -DRECONVERSION \
    > --cflags -DCLIENTEDGE --cflags -I/usr/local/include
    /src/emacs/nt$ make bootstrap SHELL=bash
    /src/emacs/nt$ make install
  • 2004-06-15版
    IME入力中に落ちるBUGを修正.これで,安定して使用できるようになりました.
    2004-06-02の変更をUNDO.(やっぱり,IMEの状態をbuffer毎に保存できないと使いにくいから.)
  • 2004-06-06版
  • 2004-06-02版
    windows.cへの変更も削除してしまったのでminibufferへの入力時にIMEがOFFにならない.meadow-ntemacs.elの関連部分も削除しました. その対策として,.emacs.elに
    (when (fboundp 'mw32-ime-initialize)
      (mw32-ime-initialize)
      (setq default-input-method "MW32-IME")
      (setq-default mw32-ime-mode-line-state-indicator "[--]")
      (setq mw32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))
    
      (wrap-function-to-control-ime 'y-or-n-p nil nil)
      (wrap-function-to-control-ime 'yes-or-no-p nil nil)
      (wrap-function-to-control-ime 'universal-argument t nil)
      (wrap-function-to-control-ime 'read-string nil nil)
      (wrap-function-to-control-ime 'read-from-minibuffer nil nil)
      (wrap-function-to-control-ime 'read-key-sequence nil nil)
      (wrap-function-to-control-ime 'map-y-or-n-p nil nil)
      (wrap-function-to-control-ime 'read-passwd t t) ; don't work as we expect.
    
      (add-hook 'mw32-ime-on-hook
    	    (function (lambda () (set-cursor-color "blue"))))
      (add-hook 'mw32-ime-off-hook
    	    (function (lambda () (set-cursor-color "black"))))
      (add-hook 'minibuffer-setup-hook
    	    (function (lambda ()
    			(and (setq minibuffer-ime-status-store (fep-get-mode))
    			     (fep-force-off t)))))
      (add-hook 'minibuffer-exit-hook
    	    (function (lambda ()
    			(and minibuffer-ime-status-store
    			     (fep-force-on t))))))
    と設定しました.
  • 2004-05-28版
    GC辺りの変更の影響か,sys_spawnve@w32proc.cへのpatchでcompile中にエラーが発生するため,IME関連以外のmeadow featureを削除しました.
    configureオプションの --cflags -DMEADOWは不要です.
  • 2004-05-03版
  • 2004-03-13版

IME-Patch UNICODE-2対応版(emacs-unicode-cvs-20070401-IME.patch)

ChangeLog.unicode

  • 2007-04-01版
    IME関連APIを '_UNICODE' を定義する事で Unicode版を使用できるようにしました.これで、今まで入力できなかったなどの文字や他言語との併用入力が可能となりました.Buildの方法は下記の様にしています。
    $ make bootstrap-clean SHELL=bash
    $ ./configure.bat --with-gcc --no-cygwin --prefix /usr/emacs/ime \
    > --cflags -DUSE_W32_IMM --cflags -DRECONVERSION \
    > --cflags -I/usr/local/include --cflags -D_UNICODE
    $ make bootstrap SHELL=bash
  • 2007-03-14版
    emacs-devel でIMEの要望がpostされたので急遽、現在使用中のpatchをupします. w32ime.cをw32fns.cにmarge,international/meadow-ntemacs.elをinternational/w32-ime.elにrename.mw32-* 形式の関数、変数をw32-* 形式に,fep-* 関数をime-* 関数に変更しました.このため,Lispに互換性が無くなりました.mw32-alias.el を用意しました..emacs.elの始めの方で、
    (or (featurep 'w32-ime)
        (require 'mw32-alias))
    などとして下さい.

  • 2006-07-03版
    patch作成用の script が違うDirectoryを指定していたので、作成し直しました.

  • 2006-07-01版
    RECONVERTSTRING の二重定義の対応をMeadow同様configure.batに移動しました.

  • 2006-04-18版
    最新のw32api-3.7に対応しました.

  • 2006-03-13版
    IMEの再変換で落ちることが多いのでちょっと変更.

  • 2006-03-07版
    unicode-2枝のEmacsでフォントが正しく表示されるようになったので公開します.少し使用しましたが以下の不具合がみられました.

    1. 下記の設定で[Help]と[BS]を交換するとM-x等でエラーが発生する.keyboard-translate-tableの生成でBugがあるのかも.
      (keyboard-translate ?\177 ?\^h)
      (keyboard-translate ?\^h ?\177)
    2. infoのフォントが大きくならないものがある

KOBAYASHI Yasuhiro