一括表示

− 野ざらし言 −

[3647] CLPPST.DEFの再改造

めざら 2010/05/01(Sat) 10:11
http://homepage3.nifty.com/mezala/index.html
 とらじさんに託された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!")

 ペーストに変更はありません。

[3648] Re: CLPPST.DEFの再改造

あきろ 2010/05/03(Mon) 16:34
[3647]へのコメント
 めざらさん、こんにちは。

>  予期せぬ動作というのは,VZからクリップボードに複写する際,カーソルが
> とんでもないところに飛んでしまうという現象です。

 自分の clppst.def を見てみました。すると、こんな感じになってました。

62 "ペースト"
	?.
	&00
	&m("ClipBoard >> Text")
	#M				;挿入位置をマーク by aki
	(中略)
:C	#k (mb)?{ #W #< #i #W >C }
;	mr-, #C (wt)?{ &#T(-b) #W } #i ex], ek], &d
	mr-, #C (wt)?{ &#T(-b) #W } #p ex], ek], &d	;by aki for jenga
	&Sm(wa+110,wa+126,4)		;挿入位置に ^QB で戻れるようにする aki
	&m("ClipBoard >> Text!")

 おそらく、めざらさん同様に、カーソルの位置を保持したいと思い、きっと
  自分で書き加えたのだと思いますが、忘却の彼方へ。今となっては、推測の
  域を出ません。
 「挿入位置に ^QB で戻れるようにする」  というコメントの意味も調べ直
  さなければ、理解不能。

 ということで、何も考えずに、「カット」をめざら版に書き換え、「ペース
  ト」のマーク関係の書き換えをコメントにしました。

 <(_ _)> ありがとうございます。

[3649] Re^2: CLPPST.DEFの再改造

めざら 2010/05/04(Tue) 09:28
[3648]へのコメント http://homepage3.nifty.com/mezala/index.html
 あきろさん,お久しぶりです。

 「^QB で戻れるようにする」とは,おそらく次の理由でしょう。
 スタックのサイズを超えるような大きさのテキストをクリップボードから挿入したときに,通常は最後に挿入した範囲の先頭が #B のポインタ(wa+110)になりますが,これを最初の挿入位置を記憶することで複数のブロックを挿入しても開始位置に戻れるようにしたものですね。
 wa+126は #M でマークしたときの位置(マーク0)です。マーク0はジャンプするとすぐ変化してしまうので,自前バッファを取ってやって保存するのが安定しているとは思います。実用上問題がなければ省資源もよいと思います。

>  ということで、何も考えずに、「カット」をめざら版に書き換え、「ペース
> ト」のマーク関係の書き換えをコメントにしました。

 両者の改造は共存可能ですけれどね。
 なお,コピーとカットのフラグを逆転していますので注意してください。

[3650] Re^3: CLPPST.DEFの再改造

あきろ 2010/05/04(Tue) 19:06
[3649]へのコメント
 めざらさん、こんにちは。

>  両者の改造は共存可能ですけれどね。
>  なお,コピーとカットのフラグを逆転していますので注意してください。

 あらためて、めざらさん改造版と、今まで利用していた clppst.def を比較
してみました。すると、2ヶ所しか違いを見つけられませんでした。

A.-------------------------------------------------
(f)?{ f++, #] a=cp, } ; コピーならカーソル位置を保存 #05c
 ここの #] の有無が違います。
----------------------------------------------------
B.-------------------------------------------------
mb-, ; #b 解除
 mb-, と #b が違いますが、ここでは同じ働きですよね。
----------------------------------------------------

 ということは、A.の #] の有無の違いだけでした。ということで、マーク
関係コメントを解除し復活させました。

[3652] Re^4: CLPPST.DEFの再改造

めざら 2010/05/07(Fri) 18:36
[3650]へのコメント http://homepage3.nifty.com/mezala/index.html
 ああ,あきろさんは元々改造版(v05c)をお使いだったのですね。おかしな動きはありませんでしたか? 非ブロック起動の場合だけ症状が出るバグなので,いつもブロックする人には特別被害はなかったかと思うのですけれどね。

 そういえば,「寅次ツールの導入」
http://homepage3.nifty.com/mezala/vz/env/win/win98.html#tratool
のファイルを修正していなかったっけ。

 メールアドレスはずいぶん前から自分も非表示にしているくらいなのですっかり忘れていましたが,常に非表示に変更しようかなぁ…。

[3653] Re^5: CLPPST.DEFの再改造

あきろ 2010/05/08(Sat) 15:41
[3652]へのコメント
 めざらさん、こんにちは。

 いやはや、すでにめざらさんの改造版を使わせていただいていたことに、気
づいていなかったという…面目ない。m(__)m

 ご想像通り、いつもブロックしていたので、全く気づきませんでした。v05d
版として利用させていただきます。

 メールアドレスは、常に非表示にしていただけると、うっかりミスがなくな
ると思いますが、めざらさんの思うままにしてくださいませ。

[3651] Re^2: CLPPST.DEFの再改造

あきろ 2010/05/04(Tue) 19:11
[3648]へのコメント
 ひゃ〜、Eメールの欄、デフォルトで「表示」になっているのね。
 慌てて修正しました。暗証キーを登録しておいてよかったぁ。

↑ このページの先頭