Subscribed unsubscribe Subscribe Subscribe

Sylpheedでスペルチェックを有効にするために必要なこと(win32)

Sylpheedはスペルチェック機能をサポートしています。
しかし、Windowsだと無効です。使えません。


それではあまりに悲しいので、どうにかできないか試行錯誤してみました。


まず、スペルチェック自体はGtkSpellを利用して提供しているようです。
で、GtkSpellはEnchantに依存しています。
Enchantはというと複数のバックエンドに対応しています。

というわけで、以下ができればいいわけです。

  1. バックエンドのビルド
  2. Enchantのビルド
  3. GtkSpellのビルド

まずバックエンドですが、hunspell 1.3.2についてはmingwビルドがありました。のでこいつを使用します。
https://github.com/zdenop/hunspell-mingw

bin,include,libをc:/MinGW/localへと複写します。


次にenchant 1.6.0をビルドします。
暫定的に以下のパッチを当てます。(このやりかたはまっとうではないので注意)

--- C:/MinGW/msys/1.0/home/khayashi/pkg/enchant-1.6.0/src/enchant.c.orig	Fri Apr 02 05:53:37 2010
+++ C:/MinGW/msys/1.0/home/khayashi/pkg/enchant-1.6.0/src/enchant.c	Sat Jan 07 10:36:34 2012
@@ -1428,8 +1428,9 @@
 					UINT old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
 #endif
 					filename = g_build_filename (dir_name, dir_entry, NULL);
-					
-					module = g_module_open (filename, (GModuleFlags) 0);
+
+					module = g_module_open (dir_entry, (GModuleFlags) 0);
+
 					if (module) 
 						{
 							if (g_module_symbol
 ./configure  --prefix=/mingw/local --with-system-myspell=no --with-myspell-dir=./share/myspell/dicts --with-ispell-dir=./share/ispell/dicts --with-uspell-dir=./share/uspell/dicts --target=i686-mingw32
make
make install

次にgtkspell 2.0.16をビルドします。(Sylpheedビルド用のGTKディレクトリに突っ込んでいます。)

./configure --prefix=/home/khayashi/Project/sylpheed/GTK --enable-shared
make
make install

最後にsylpheedをビルドします。--enable-gtkspellの追加を忘れずに。

#!/bin/sh

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/include
export HOME=/home/khayashi/Project/sylpheed
./configure --prefix=$HOME/dist --with-localedir=lib/locale \
  --enable-oniguruma \
  --enable-gtkspell \
  --enable-threads \
  'CC=gcc -mtune=pentium3' CFLAGS=-O3 

で、あとは以下のdllをsylpheed.exeと同じ階層にコピーします。あと、libsylph系も。

  • libenchant-1.dll
  • libenchant_myspell.dll
  • libgcc_s_dw2-1.dll
  • libstdc++-6.dll

辞書については以下のディレクトリに配置します。(よくわからないのでUbuntuからまるっともってきました。)
./share/myspell/dicts

ここまでやると、こんな感じにスペルチェックが有効になります。

enchantをビルドするときにパッチ当てていましたが、本来は以下のような指定をまじめに指定すれば不要なはずです。
(今はc:/MinGWにインストールされているほうを中途半端に参照してしまっているのでとりあえず動くという仕組み。)

  • ENCHANT_PREFIX_DIR
  • ENCHANT_GLOBAL_MODULE_DIR
  • ENCHANT_GLOBAL_ORDERING