anthy は無罪なので、uim-xim を debug することに。engin=anthy-utf8 ってのあがるのを発見したんですが、
configure.ac が対応してない。誰も使ってないな。でも、それを乗り込えてもだめ。
で、debug build することに。これが、また、難航。
brew install -d --build-from-source --git --debug-symbols --keep-tmp uim
という感じにして、uim.rb の途中に
system "false"
と挟むと、そこで止まるので、そこでいろいろできる。で、install しないと動かない。
OnTheSpot の幅がゼロなのを発見して、
(lldb) x/20x str
0x600001720070: 0x0000b3a4
368 convstr = uim_iconv->convert(iconv_cd_e2u, str);
-> 369 utf8_ = MAKE_STR(convstr);
(lldb) x/20x convstr
0x600001724140: 0x00000000
これが原因。やっぱりiconv。なんで EUC-JP が来てるかというと、
scm/japanese.scm
((("k" "a"). ())("か" "カ" "カ"))
これが EUC-JP だから。uimは sigscheme で書かれてるんだけど、schemeでローマ字変換してる。
で、anthy-utf8.scm で、
ac (anthy-utf8-lib-eucjp-to-utf8 (anthy-utf8-make-whole-string ac #t (anthy-utf8-context-kana-mode ac))))))
とhard codedされてる。なので、ローマ字表を UTF8 になおして、そこをなおして終了。
uim-xim --engine=anthy-utf8
これでばっちりでした。お疲れ様でした。
https://github.com/shinji-kono/uim/tree/develop
No comments:
Post a Comment