ClpPst.def は、VZとWindowsの窓ソフトの間でコピペを可能にするマクロで
大変重宝してます。が、最近バグと思われる事象に遭遇しました。
非ブロックモードで ^KC 起動するとVZの1行コピー動作となり、今までずっと
問題なく使っていたんですが、行の編集途中で起動したら動作異常になりました。
具体的には文字の挿入や削除した直後に起動した場合です。
編集中のテキストが壊れたり他のテキストと入れ替わったり、その他いろいろ
誤動作を起こしました。
ClpPst.def for W32 v05c です。
現象から、おそらく行バッファから出ないまま行の操作をしたためだと思い
マクロを見てみました。
67行目あたりを
03: (s)?. &00
; (mb)??{ (f)?{ f++, a=cp, } #> #b #< } ; 非ブロック時
(mb)??{ #] (f)?{ f++, a=cp, } #> #b #< } ; #] が必要
このように、#]( #85 ステータスラインの再描画)を追加したら直りました。
このコマンドは行編集バッファから抜け出す機能を持っていてこういう場合に
良く使われるので、追加しました。
a=cp, の cp が行バッファの中と外で全然違う値になるためですね。
STKHELP.DEFによると
cp カーソル位置のオフセット
・ラインバッファが有効な時は gz の中のアドレス、ライン
バッファがフラッシュされると tz の中のアドレスを示す。
(PK/14/08781/tomo)
※ cp は #? などを実行しないと反映されない。 cp の型が
一定しないため、 &d でうまく行くのは行編集中でない場
合のみで、その確定のため予め #] を実行しないとトラブ
る場合がある。
cp をいじった後は #?(#28)を実行するのが原則で、&d
が使えるのは限定的なケース。 (DC/15/06425/m.gann)
とりあえずやっつけで対処しましたが、問題があるようでしたら教えてください。
>ALL