ispellラッパ(失敗)

30分プログラム、その108。ispellのラッパを書こうとして失敗した。
やりたかったのは、Emacsのスペルチェッカで"readLine"のような単語をちゃんと認識できるようすること。で、ispellのラッパを書いて、"readLine"->"read Line"のように変換するようにしてみた。
でも、Emacsが単語の位置がずれてるよ、って言って認識してくれなかった・・・。

使い方

$ mspell
@(#) International Ispell Version 3.3.02 12 Jun 2005
word: hello
ok

word: helloWorld
ok
ok

Emacsで使うときは次のようにする。

(setq ispell-program-name "mspell")

でも、次のようなエラーがでる。

Ispell misalignment: word `blog' point 247; probably incompatible versions

ソースコード

#!/usr/bin/env ruby

require 'open3'
Open3.popen3("ispell #{ARGV.join(' ')}"){|stdin,stdout,_|
  Thread.fork{
    loop{
      word = STDIN.readpartial(1000)
      words = word.gsub(/([a-z])([A-Z])/,
                        '\1 \2').gsub(/([A-Z])([A-Z][a-z])/,'\1 \2')
      stdin.print words
    }
  }

  begin
    loop{
      STDOUT.print stdout.readpartial(100)
      STDOUT.flush
    }
  rescue EOFError
  end
}