[CHISE-ja:1045] Re: [tsunagi 37] Re: please review and test new tamago-tsunagi

Mitsutoshi NAKANO itsango @ gmail.com
2015年 1月 28日 (水) 23:56:12 JST


このメールは
TO
tamago-tsunagi-misc @ lists.sourceforge.jp
CC
chise-ja @ lists.chise.org
anthy-dev @ lists.sourceforge.jp
opensuse-ja @ opensuse.org
debian-devel @ debian.or.jp
freebsd-users-jp @ freebsd.org
で、複数のMLに送信しております。

2015年1月28日 21:08 ARAI Shun-ichi <hermes @ ceres.dti.ne.jp>:
> あらいです。
>
> In <CANW2+iu9fWW1SN7KJDoWmuT1A1kxtqtPVJphbOMopn6TWFH-ww @ mail.gmail.com>;
>    Mitsutoshi NAKANO <itsango @ gmail.com> wrote
>    as Subject "[tsunagi 34] please review and test new tamago-tsunagi (was: egg-simで "Invalid code(s)")":
>
>> 上記mail
>> http://sourceforge.jp/projects/tamago-tsunagi/lists/archive/misc/2015-January/000029.html
>> の件で、tamago-tsunagiを修正してみました。
>> あらいさんがおっしゃるとおり、egg-sim.elの(make-char-list)の
>> (make-char)がエラーを発していましたので
>> (ignore-errors)で囲ってみました。
>>
>> ISO-8859-3に文字が定義されていない点があり、
>> そこで(make-char)がエラーを返していたようです。
>> http://en.wikipedia.org/wiki/ISO/IEC_8859-3
>>
>> simを起動すると未定義のところはnilになっており、
>> それを無理に入力しようとするとエラーになりますが、
>> 一応、動かないという状態は脱したように思われます。
>
>  私もその後調べて、なんとかエラーを出さないようにできないか頑張ってみ
> たのですが、挫折しました。
>  当方では結局、このようなコードになりました。
>
> ----
> diff -aur tsunagi-5.0.1.0.orig/egg-sim.el tsunagi-5.0.1.0/egg-sim.el
> --- tsunagi-5.0.1.0.orig/egg-sim.el     2014-12-15 10:36:45.000000000 +0900
> +++ tsunagi-5.0.1.0/egg-sim.el  2015-01-28 16:05:39.415558358 +0900
> @@ -56,19 +56,23 @@
>          (<= to max)
>          (cond ((= (charset-dimension charset) 1)
>                 (while (<= from to)
> -                 (setq result (cons (char-to-string
> -                                     (make-char charset to))
> -                                    result)
> -                       to (1- to)))
> +                 (condition-case nil
> +                     (setq result (cons (char-to-string
> +                                         (make-char charset to))
> +                                        result) )
> +                   (error nil) )
> +                 (setq to (1- to)) )
>                 result)
>                ((= (charset-dimension charset) 2)
>                 (while (<= from to)
>                   (let ((code max))
>                     (while (<= min code)
> -                     (setq result (cons (char-to-string
> -                                         (make-char charset to code))
> -                                        result)
> -                           code (1- code))))
> +                     (condition-case nil
> +                         (setq result (cons (char-to-string
> +                                             (make-char charset to code))
> +                                            result) )
> +                       (error nil) )
> +                     (setq code (1- code)) ))
>                   (setq to (1- to)))
>                 result)))))
>
> ----
>
>  一応、latin-3 の F0 と言うのか 112 と言うのか、最初にエラーで引っ掛かっ
> た文字は一覧に出てこないようになっているようです。
>  参考までに。

あらいさんのpatchをあててみました。
一応動いているように見えるのですが、どこらへんで挫折したのでしょうか?

私がresultのlistにnilを残したのは、
nilを取ってlistを詰めてしまうと、その他の動作に悪影響がでる可能性があると考えて、
保守的なcodeにしようとしたからなのですが、
動作確認してみたところ、
あらいさんのようにnilを取り詰めしても、動作には影響がないように見えます。
仮にcharset  tableに穴が沢山ある文字集合が実在したなら、
私の実装では一覧にnilが沢山並ぶことになるので、
あらいさんの修正の方が優れているのではないかと今は考えています。

あらいさんはご自身のコードのどの辺に問題を感じてらっしゃるのでしょうか?


というわけでtestとreviewのご依頼をあちこちのMLに投げましたが、
あらいさんの修正の方が採用される可能性があります。 >各位

-- 
Mitsutoshi NAKANO <ItSANgo @ gmail.com> <bkbin005 @ rinku.zaq.ne.jp>
 <https://twitter.com/ItSANgo> <http://d.hatena.ne.jp/Itisango/>
ただ今就職活動中。


CHISE-ja メーリングリストの案内