Monday 11 December 2023

uim-xim + anthy 解決編

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: