GNU emacs(x64)
http://www.vector.co.jp/soft/winnt/writing/se494046.htmlNEW! emacs-23.4-x64-r936-119
2012.7.10 登録依頼しました
Changes- IMEの前後参照変換が可能になりました。
- 画像ライブラリを最新バージョンにしました(libpng1.5.11, zlib-1.2.7)
- expand-file-nameで終了するバグを修正しました。
概要
GNU emacsを64bit windows用にコンパイルしました。コンパイル環境はWindows SDK V6.1とそれに付属のVC++2008です。VC++2010でのコンパイルも可能です。
画像表示用dll(jpeg, png, gif, svg, xpm),cmigemo(dll直接呼び出し),ime-patch, VC-Runtimeを含むオールインワンパッケージです。7およびXpの64bitバージョンで動作確認しています。Vistaでも動作するはずですが未確認です。
変更点
- VC++ 2008/2010 64bit対応(LLP64対応)
- SFU(SUA)のインストールされていない環境でコンパイル可能とした
- gnupackにて提供されているIME-patchを適用
- ダイナミックロード機能
emacsを再コンパイルすることなしに、dllにて機能を追加することができます - 画像表示dll(jpeg, gif, png, tiff, svg, xpm)を同梱
- KaoriYaにて公開されているC/Migemoのdllを直接呼出す改造版migemoを同梱
- smart-ime
IMEのオンオフ制御(elisp部分)をW32に依存しないよう書き直しました。動作の怪しいところも修正してあります。 -
イメージフィットオプション
jpegとsvg(画像ローダがリサイズに対応しているもの)は表示の際のサイズフィット機能を追加しました。指定サイズに合うようにsvgは拡大,縮小,jpegは縮小のみ行います。jpegの縮小は8ユニット単位なので、縮小率はこれに合わせて切り上げになります。
image-fit-option-alistに(画像タイプ . フィットオプション)で指定します。customize可能です。
フィットオプションは以下から選択可能です。デフォルトは'((jpeg . frame) (svg . width-or-height)))です。- never: フィットしない
- frame: フレームに合わせる
- width: 幅に合わせる
- height: 高さに合わせる
- width-or-height: 幅または高さのどちらかに合わせる
例:
(insert-image (create-image "ファイル名" 'jpeg nil :fit 'height)) - IME再変換、前後参照変換
IME再変換、前後参照変換をサポートしました。以下のfunction, variableが使用可能です。- function: w32-ime-perform-reconversion
再変換を実行します - variable: ime-enable-reconversion
nil以外の場合再変換を有効にします。 - variable: ime-enable-document-feed
nil以外の場合前後参照変換を有効にします。
- function: w32-ime-perform-reconversion
設定
- 環境変数EMACS_MAX_HEAPに最大予約メモリサイズを10進+単位([KMGT])で指定します。
デフォルト値は実装メモリの2倍、最大2Tバイトです。
メモリ管理用にOSが使用する領域は予約サイズに線形に比例するので、注意してください。 - 同梱してあるライブラリの設定はsite-init.elに記述してあります
- カスタマイズ変数
current-language-environment "Japanese" default-input-method "W32-IME" -
初期化ファイルに以下を記述します。r936-119以降では初回起動時に自動設定するので必要ありません。
;; ;; IME ;; ; 以下4行は必須ではありません (setq-default w32-ime-mode-line-state-indicator "[--]") (setq w32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]")) ; カーソル色(カーソル色の設定を行う場合はこれ以前で行う) (add-hook 'w32-ime-on-hook #'(lambda () (set-cursor-color "DeepSkyBlue"))) (add-hook 'w32-ime-off-hook `(lambda () (set-cursor-color ,(frame-parameter nil 'cursor-color)))) ; 以下2行は必須です。 (w32-ime-initialize) (require 'smart-ime) ;; ;; MIGEMO ;; (unless (boundp 'isearch-mode-map) (load-library "isearch")) (dolist (key (where-is-internal 'toggle-input-method global-map nil nil (command-remapping 'toggle-input-method))) (when (= (length key) 1) (define-key isearch-mode-map key 'migemo-isearch-toggle-migemo))) (require 'cmigemo)
OLD NEWS
- 2012.2.24 登録依頼しました
- ダイナミックローダーを組み込みました。
- Cmigemoをダイナミックローダベースに変更しました
- IMEの変換ウィンドウで使用するフォントを設定可能にしました。
frame-parameterのime-fontで指定されるフォントを使用します。ime-fontを設定しない場合は、frame-parameterのfont属性で指定される(フレームで使用している)フォントを使用します。
設定例:default-frame-parameterのime-font属性を(ime-font . "Mugu 1m-10")のように設定します。 - IMEの再変換、前後フィードバック(前後の単語をみて適切な変換候補を選ぶ)機能に対応しました。
- イメージ表示ライブラリをjpeg-8d, lpng158にアップデートしました。
- 実装メモリが少ないマシンで起動しないバグを修正しました
- 「表」など2バイト目が0x5cであるような文字を含むファイル名/ディレクトリ名を正しく扱えるように修正しました
- 登録依頼しました 2012.2.14
- emacs-23.4-x64-r883-98はデバッグ情報付のバイナリをパッケージしたため、開発環境をインストールしていないPCでは動作しませんでした。
本バージョンはデバッグ情報なしのバイナリです。その他の変更はありません。 - 実装メモリが少ないPCで起動しないバグが判明しています。GNU emacsのメモリ管理と矛盾する領域を予約してしまうことが原因です。環境変数EMACS_MAX_HEAPで大き目の領域を予約することで回避可能です。8Gくらいが適当と思います。
- emacs-23.4-x64-r883-98はデバッグ情報付のバイナリをパッケージしたため、開発環境をインストールしていないPCでは動作しませんでした。
- 2012.1.29
- emacs-23.4ベースです。
セキュリティパッチを含みますのでCEDETユーザーはこちらを使用する事をお勧めします。 - ダイナミックロード機能を追加しました
- 起動時にデフォルトで256Gのメモリを予約していましたが、OSが管理用に使用する領域が無視できない大きさ(0.19%)であることが判明しましたので、実メモリの2倍をデフォルト値にしました。
- MIGEMOモードをバッファローカルにしました。初期モードはバッファの文字コードから判定します。
- emacs-23.4ベースです。
-
2012.1.22
emacs-23.3-x64-r828-73に同梱したemacsへ対する修正部分の作成に失敗していました。emacs-23.3-x64-r828-73-diffs.zipが正しい修正部分です。 - 修正版を登録依頼しました。(2011/12/23)
- 初期化ファイル(.emacs)に要記述だった設定(ime制御、image表示)をデフォルトで設定。
- イメージフィットオプション >>詳細
- xpmライブラリ追加
- メモリ空間予約方法の改善(memory exhaust対策)
- emacs-23.3bベース
- バグ修正
- hownehowmにて異常終了する。(random n)にて異常終了(0割)
- w32-get-valid-keyboard-layouts,w32-get-keyboard-layoutの返り値が不正
- ダイアログボックスで日本語が文字化けする。
- speedbar使用時にIME制御が正しく行われない。
- 修正版を登録依頼しました。(2011/12/3)
- (split-window (get-buffer-window "*scratch*") 1000)で異常終了するバグを修正
待ちきれない方はパッチ - VC++2010でコンパイル可能
- 欠落していたinfoファイルを追加
- (split-window (get-buffer-window "*scratch*") 1000)で異常終了するバグを修正