- はじめに
- msys2 のインストール・更新
- Emacs 25.0.94.2 インストールのためのパッケージをインストール
- cmigemo をインストール
- Emacs 25.0.94.2 のインストール
- 残された問題
- 続き
はじめに
これまでは gnupack に Emacs 24.5 (NTEmacs) を導入し、利用してきた。これらはインストールのためにコマンド入力をする必要がなく、導入が比較的手軽なので、 Emacs を利用してみようという人にはおすすめしたい。
とはいうものの、「Emacs 25.0」のアーカイブ | るびきち「日刊Emacs」 の記事に接するたび、Emacs 25 を利用してみたいと思っていた。そこで見つけたのが、Windows(MSYS2 MinGW64)でEmacs25+IMEパッチをビルド | Misohena Blogのページだ。このページの説明に従えば、Emacs 25 を動かすことができそうだと考えた。
結果として Emacs 25 の導入に成功し、快適な開発環境を整えることができた。AutoHotkey のスクリプトを利用して、あたかも emacsclient を使っているかのような使い勝手を実現し、また日本語入力を有効にするためのウィンドウ操作処理も改善できた。
今回は Emacs 25.0.94.2 のインストールの手順を詳しく説明する。
msys2 のインストール・更新
Emacs 25.0.94.2 の導入は msys2 を利用して行う。そこで、msys2 のインストールと更新をまず行う。
msys2 の公式サイトである MSYS2 installer にアクセスすると、インストーラーを入手できる。ここでは 64bit バージョンのインストーラーを利用することにしよう。このインストーラーを使ってインストールすると、 c:\msys64 にプログラム一式が設置される。
次に msys2 自体を更新する。2016/07/24 現在では、MSYS2における正しいパッケージの更新方法 - Qiita の "2. pacman 4.2.1.6187以降がインストールされている場合" が妥当するので、プログラムメニューから "MSYS2 Shell" を選択し
update-core
を実行後、メッセージに従って Alt-F4 でプログラムを終了する。
改めて "MSYS2 Shell" を起動し、
pacman -Su
を実行すると、今度はプログラムを起動するためのショートカットの内容を書き換えるよう指示される。そこで、MSYS2の更新に伴う起動用ショートカットの修正 - Qiita の説明を参考にしながら、ショートカット3種類
のリンク先情報を改変する。
ショートカットの名称 | 改変後のリンク先 |
MSYS2 Shell | C:\Windows\System32\cmd.exe /A /Q /K C:\msys64\msys2_shell.bat |
MinGW-w64 Win64 Shell | C:\Windows\System32\cmd.exe /A /Q /K C:\msys64\mingw64_shell.bat |
MinGW-w64 Win32 Shell | C:\Windows\System32\cmd.exe /A /Q /K C:\msys64\mingw32_shell.bat |
これで msys2 の基本的な環境設定が終わった。
Emacs 25.0.94.2 インストールのためのパッケージをインストール
MSYS2 Shellを起動し
pacman -Sy pacman -S base-devel \ mingw-w64-x86_64-toolchain \ mingw-w64-x86_64-xpm-nox \ mingw-w64-x86_64-libtiff \ mingw-w64-x86_64-giflib \ mingw-w64-x86_64-libpng \ mingw-w64-x86_64-libjpeg-turbo \ mingw-w64-x86_64-librsvg \ mingw-w64-x86_64-libxml2 \ mingw-w64-x86_64-gnutls
を実行する。
cmigemo をインストール
about patches and how to build emacs on Windows. (Japanese) · GitHub の [cmigemo組み込み] の説明を参考にし、インストールする。cmigemoをインストールする場所を /usr/local とするならば、その説明を参考にし、
https://osdn.jp/projects/nkf/downloads/64158/nkf-2.1.4.tar.gz/
から nkf のソースを取得して
make make install
http://www.kaoriya.net/software/cmigemo (https://github.com/koron/cmigemo)
から C/Migemo のソースコードを取得して展開
ソーストップディレクトリに移動して
./configure --prefix=/usr/local
make mingw-install
このようにする。これで cmigemo のインストールが完了する。
cmigemo を Emacs に組み込むためには、後述するとおり、Emacs の configure 実行時にオプションを設定することになる。
Emacs 25.0.94.2 のインストール
Emacs ソースコードの入手とパッチ適用
Emacs で ATOK や google 日本語入力を利用しようとするなら、IME パッチのバージョンに注目し、それに応じた Emacs を導入すること。導入しようとする Emacs のバージョンに対応する IME パッチが存在しない場合、任意の IME を使うことが難しくなるかもしれない。
現在のところ、about patches and how to build emacs on Windows. (Japanese) · GitHubによれば、emacs-25.0.94 に対応する emacs-25.0.94-*.diff が IME パッチの最新バージョンだから、このバージョンを導入することにした。
最初に、このパッチを任意の場所に保存しておく。
emacs-25.0.94 (Emacs 25.1 のpretestバージョン)のソースコードのありかは、今月5月の Emacs 開発版向けメーリングリストに記載されているので、そこから入手する。
圧縮ファイルを展開するには
tar Jxf emacs-25.0.94.tar.xz
と入力する。ここではCドライブの下のフォルダに Emacsのソースをおくとしよう。
展開後のトップディレクトリに上記のパッチを移し、
patch -b -p0 < emacs-25.0.94-x64.diff
と入力すれば、パッチが適用される。
Emacs のインストール
/usr/local/bin に Emacs の実行バイナリを設置するには
./autogen.sh PKG_CONFIG_PATH=/mingw64/lib/pkgconfig \ CFLAGS='-Ofast -march=corei7 -mtune=corei7' \ ./configure --prefix=/C/**パッチ適用済みのemacsソースディレクトリ** CPPFLAGS=-I/usr/local/include --without-imagemagick make -j8 make install prefix=/c/msys64/usr/local
このあと
/usr/local/bin/runemacs
と入力し emacs 25 が起動すればインストールは成功だ。 /usr/local/bin には初期設定では パスが通っているので、
runemacs
でも問題なく起動するはずである。
*.dllや*.exe等のコピー
about patches and how to build emacs on Windows. (Japanese) · GitHubの [DLLなどのコピー] の説明にならい、 /mingw64/bin/ 以下の*.dllと*.exeを /usr/local/bin 以下にコピーする(もちろんシンボリックリンクでもかまわない)。これで、"MSYS2 Shell" を経由しなくとも Emacs が起動可能になる(msys2 で emacs 25 をビルドして runemacs から起動しようとするけど起動しないのは dll 不足 (環境のせい) - あじーん-0.0.2-SNAPSHOT)。
cmigemo 関連ファイルのコピーと読み込みの設定
about patches and how to build emacs on Windows. (Japanese) · GitHubの [DLLなどのコピー] の説明にならい、
/usr/local//share/migemo/utf-8/
以下のファイルを
/usr/local/share/emacs/25.0.94/etc/migemo/utf-8/
にコピーする。
いったんEmacsを起動しているならば、 ~/home/ユーザーディレクトリ/に .emacs.d ディレクトリが作成されているので(一度も起動していなければ、.emacs.d ディレクトリを作成すること)、IMEパッチ適用後のEmacsソースディレクトリ/site-lisp にある cmigemo.el をそこに移動する。
そのうえで .emacs.d に init.el を作成し、そのinit.el に
(require 'migemo) (setq migemo-command "cmigemo") (setq migemo-options '("-q" "--emacs" "-i" "\a")) ;; Set your installed path (setq migemo-dictionary (file-truename "~/../../usr/local/share/migemo/utf-8/migemo-dict")) (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) (setq migemo-coding-system 'utf-8-unix) (load-library "migemo") (migemo-init)
と書けば、migemo を使うことができる。
"MSYS2 Shell" を経由しない Emacs の起動
この段階で、 c:/msys64/usr/local/bin/runemacs.exe を実行すれば、なるほどたしかに Emacs は起動する。だがしかし、msys2 にインストールしたプログラムを呼び出すことはできない。また、"MSYS2 Shell"経由で Emacs を起動すれば ~/.emacs.d/init.el を読み込む一方で、"MSYS2 Shell"を経由しなければ、c:/Users/以下の init.el を探そうとしてしまう。これは、 "MSYS2 Shell" 用の環境変数を利用できないために生じる問題である。
この問題を解消するには、"MSYS2 Shell" 実行時と同様の環境変数を設定し、そのうえでrunemacs.exe を実行すればよい。私はバッチファイルを作成することにした。
@echo off setlocal set msys64_directory=C:\msys64 set RUNEMACS=%msys64_directory%\usr\local\bin\runemacs.exe set HOME=%msys64_directory%\home\%USERNAME% set PATH=%msys64_directory%\usr\bin\core_perl;%PATH% set PATH=%msys64_directory%\usr\bin\vendor_perl;%PATH% set PATH=%msys64_directory%\usr\bin\site_perl;%PATH% set PATH=%msys64_directory%\mingw64\bin;%PATH% set PATH=%msys64_directory%\opt\bin;%PATH% set PATH=%msys64_directory%\usr\local\bin;%PATH% set PATH=%msys64_directory%\usr\bin;%PATH% %RUNEMACS%
このバッチファイルを実行すれば、"MSYS2 Shell" 経由の Emacs の起動と同様の環境が整う。
残された問題
これで Windows 10 に Emacs 25 を導入することが一応はできた。だが、Emacs 25 を常用するには不十分な環境のままだ。ウィンドウを揺らしたりサイズを変更しなければ、IME を有効にできないし(スレッド gnupackフォーラム:windows 8での日本語入力について - gnupack - OSDNで触れられている問題がここでも生じている)、そして残念なことに、上記のバッチファイルのみでは、Emacs に外部からファイルのパスを渡してそれを編集させることは全くできない。
次は、IME有効化のためのウィンドウ操作プログラムの導入手順を説明しよう。 emacsclient のような機能の設定、つまりファイル編集のたびに Emacs を新たに起動しないようにする設定の手順はその後で説明するつもりだ。