とらじさんに託されたCLPPST.DEFは,Windows環境において標準的なマクロと
言ってもよいほど必要不可欠なものとなっていると思います。
以前からちょこちょこ改造を加えたりしていたのですが,その改造のせいか,
それとも金野版VZの特定の版に依存するものなのか,急に3月くらいから時々
予期しない動作をするようになりました。
予期せぬ動作というのは,VZからクリップボードに複写する際,カーソルが
とんでもないところに飛んでしまうという現象です。非ブロックで起動すると
カレント行を複写する機能がありますが,コマンドラインに降りる前にcpを
保存し,戻って来たときにcpを書き戻して元のカーソル位置を保存するという
改造を施しています。これがなければ表面化しない問題ですが,
ラインバッファにカーソルが入っている場合のcpの保存方式が何かしら変更が
あったのかもしれません。もちろんcpを保存する前にラインバッファから
出ていればよいわけですが。
ぐだぐだ書いてしまいましたが,clppst.defの改造例です。ご参考までに。
60 "コピー"
f+, >03
61 "カット"
f-, >03
03: (s)?. &00
(mb)??{ ; 非ブロック起動
(f)?{ f++, #] a=cp, } ; コピーならカーソル位置を保存 #05c
#> #b #< ; #]はcpの確定:#05d
}
&s #S &?("%sCLPPST.TMP",pi) #m (s)?'Y'
(f)?{ ; コピーの場合
mb-, ; #b 解除
(f-1)?cp=a, ; 非ブロック起動なら元位置に戻す #05c
(0) }?{ ; カットの場合
ux[+, ; スタックに残さない #05c
:y #y (mb)?>y ; 巨大ブロック対応 #05c
ux],
}
ss2,
#E &?("%s /R %sCLPPST.TMP",pr,pi) #m #[
&d &m("Text >> ClipBoard!")
ペーストに変更はありません。