|
IKKI です。こんばんは。
> > 以前にも前向きに検討するということになっていましたが、V5.00を機会にやっ
> > たほうがいいかもしれません。
よろしくお願いいたします。
> あまり関数などが増えると、全体の見通しが悪くなるので、変換する関数が
> あれば、gettext2() 等は要らないと、個人的には考えます。
変換関数というアイディアは私も脳裏をかすめました。ユーザーの視点に立つと
$s = gettext2(#c0, #l0, #c1, #l1);
$s = gettext(columntox(#c0, #l0), linenotoy(#c0, #l0), columntox(#c1, #l
1), linenotoy(#c1, #l1))
どちらが全体の見通しがよいか、という話になりましょうか。
------------------------
以下、雑談です。
> 範囲選択されている場合を考えると、どの様な場
> 合分けをすれば良いかすら直ぐには解らない
ほんとですね。愚直に書くとこんなサブルーチンができるでしょうか…
これで十分だという確信が持てませんが。 (^^;
WhereIsSelection:
// 選択範囲を column, lineno で返す
// 始点 = (#sbc, #sbl), 終点 = (#sdc, #sdl)
if (!selecting) {
#sdc = column;
#sdl = lineno;
#sbc = column;
#sbl = lineno;
} else {
##flg = (x == selendx) | (y == selendy) * 2 | rectselecting * 4;
##sbx = seltopx;
##sby = seltopy;
##sdx = selendx;
##sdy = selendy;
escape;
moveto ##sdx, ##sdy;
#sdc = column;
#sdl = lineno;
moveto ##sbx, ##sby;
#sbc = column;
#sbl = lineno;
if (##flg < 3) {
moveto ##sdx, ##sdy;
beginsel;
moveto ##sbx, ##sby;
} else if (##flg == 3) {
moveto ##sbx, ##sby;
beginsel;
moveto ##sdx, ##sdy;
} else if (##flg == 4) {
moveto ##sdx, ##sdy;
beginrect;
moveto ##sbx, ##sby;
} else if (##flg == 5) {
moveto ##sbx, ##sdy;
beginrect;
moveto ##sdx, ##sby;
} else if (##flg == 6) {
moveto ##sdx, ##sby;
beginrect;
moveto ##sbx, ##sdy;
} else if (##flg == 7) {
moveto ##sbx, ##sby;
beginrect;
moveto ##sdx, ##sdy;
}
endsel;
}
return;
> の理由だけ解りません。宜しければ、お教えください。
ごめんなさい。言葉足らずでした。
> > ライブラリに公開するような汎用マクロは、1行の文字数が極端に少ない環境
> > でも正しく動作しなければなりません。
これは「私がそのような信念を持ってマクロを作っている」ということであって、こ
の考えを人様に押しつけるつもりはありません。誤解された方がいらっしゃいました
らお詫び申し上げます。
こういう考えに至った理由は次のとおりです。
・ライブラリにアップする⇔人様に使っていただく
・人様の環境や使い方には口出しできない
∴ライブラリにアップするマクロはどのような環境でも正しく動くべきだ
> > したがって x, y は使用せず、
> > column, lineno で座標を管理することになります。
これは、処理対象が折り返しをまたぐ場合を特別扱いしなくていいようにです。
って、ご説明するまでもありませんね。失礼しました。
|
|