一括表示

− 野ざらし言 −

[2246] 消えるヒストリー(その2)

としき 2007/09/03(Mon) 23:16
http://www.hinocatv.ne.jp/~toshiki/
発症するのはファイル名ヒストリーです。
やはり、過去数年にわたって、時々症状が発生しています。
ただ、#2229で書いたコマンドラインヒストリーよりは頻度が高いです。
月に数回はお目にかかっています。

症状に気がついているのはポケ3です。DOS3.1。
konnoさんの作られた省電力バージョンでも、それ以前のバージョンでも同じ
く症状が出ています。
VZ.DEF の中で history2 をインクルードしています。また、hf1024になって
います。autoexec.bat でVzを常駐させていますが、この際、以前の履歴を
読み込むために、A:\vz\vz.com -z @@ と指定しています。これで起動直後に
蓄積される履歴は、現在は58です。現在は、というのは、editfileのタイム
スタンプは06-10-22だからです。もちろん、症状はそれ以前から出ています。
起動直後のカレントディレクトリは、autoexec.batでB:\に設定しています。
また、関係あるとは思えませんが、autoexec.bat内でVzを常駐させる前に
rswapを常駐させています。

ポケ3の場合、なにかあったらサクッとメモを取りたいのです。
そのため、私はメモ用のファイルには短いファイル名をつけているのですが、
伝統的にというか、「N」一文字、拡張子なしのファイルをよく使います。こ
れは、ファイラーから新規ファイルをオープンする場合にこのファイル名が
一番速かったので、その名残りでしょう。このファイルはよっぽどなにかが
ない限り、常にB:\に存在しています。以下、このファイルのことをメモファ
イルと表現します。

さて、history.defで見ると、このeditfileを読み込んで立ち上がった直後の
ファイル名ヒストリーは以下のようになっています。

0 N
1 A:\VZ\VZ.DEF ->4C7D
(中略)
5 A:\L\2.LO ->0
6 .LOG ->1C5CD
(中略)
9 N ->20
A B:\N ->E
(中略)
D B:\N ->EB
(中略)
I B:\M\N ->1
J DEF ->1E65
K \N ->A
L ->10F
(以下略)

関係ありそうなところだけ抜き出しています。
なんか、この段階で既におかしいのかもしれません。

autoexec.bat終了直後、コマンドラインから、ポケ3用の省電力ツールを常
駐させます。次に、テキスト文書閲覧でmiel、または過去ログ閲覧でnifpを
起動します。それらのアプリからチャイルドプロセスに抜けて、コマンドラ
インから[ESC]でファイル名窓を出し、上矢印一発でメモファイルをオープン
してメモを記入したり、コマンドラインから\[RET]でメモファイルではない
ファイルをオープンして閲覧・参照・編集したり、メモファイルオープン中
に別ファイルを参照したり、ということをします。この際、少なくとも意識
してはカレントドライブやカレントディレクトリを移動してしまうことはな
いのですが、無意識のうちに行ってしまい、それが以下の症状に影響してく
る可能性はあるかもしれません。また、メモファイルだけを編集もしくは閲
覧した場合は症状が出ることは少ないようです。もしかしたら、症状が出た
ことはないかもしれません。

さて、メモファイルを編集したりしなかったりするわけですが、カーソルを
動かして終了することが多いので、ヒストリーの一番上は、メモファイルに
カーソル位置情報がくっついた形で保存されていることが期待されているわ
けです。そして、チャイルドプロセスを一旦exitで抜けてアプリに戻り、再
びチャイルドプロセスに降りるか、あるいはアプリを終了させる場合もあり
ますが、とにかくコマンドラインにやってきます。そして、メモファイルを
編集しようと、[ESC]でファイル名窓を出し、上矢印を押しても、なぜかメモ
ファイル名が出てこない。一発目に出てくるのは別ファイル名。ん〜、既に
忘れているけど、クローズ順はそうだったっけか、と思いながらさらにもう
何回か上矢印を押しても一向にメモファイル名が出てこない。何回も押して
やっと出てきたと思ったら、上記ヒストリーでいうところの10番目という
か、「B:\N ->E」なんですよ。つまり、ドライブ名なしのメモファイル名と
いうのが消えてしまうのです。

実は今日、30分ぐらい空時間があったので、なんとか再現させようと努力
したのですが、ついに1回も再現させる事ができませんでした。ま、世の中
そんなものなのかもしれませんが。でも、ある程度の頻度で起きているだけ
に余計悔しい。


ということで、お知恵をお貸しいただければと思います。
 

[2248] Re: 消えるヒストリー(その2)

としき 2007/09/04(Tue) 10:15
[2246]へのコメント http://www.hinocatv.ne.jp/~toshiki/
思い出したことがあって追記。

最初にチャイルドプロセスに降りて、いろいろと閲覧したり編集したりする
わけですが、この時、巨大なファイルを閲覧対象としたときに、この事象が
起きる頻度が高いような気がしています。巨大といっても数百KBですが。

EM64を指定していますが、Vz常駐時の空きEMSは62ページしかないの
で、「最大62ページ使用します」のメッセージが出ています。VZTEMP.$$$
が置かれるのはB:\ですが、ここの空き容量は最大で数百KBです。rswapの
swapファイルもこのディレクトリに置かれるので、チャイルドプロセス時に
は空き容量が数十KB以下になっていることもあります。

メモファイル(B:\N)は、最大でもせいぜい数KBです。
その他、関連しそうなファイルとしては、英単語と和訳の羅列してあるテキ
ストファイルのA:\ENG.DICのサイズが約700KB弱。このファイルには、
リードオンリー属性がついています。
あとは、B:\の数百KBのファイルを参照することがあるかな。ファイル名は
そのたびごとに異なるので関係ないでしょう。これは、編集することは絶対
にありません。なぜなら、親プロセスのmielやnifpで参照中のファイルだか
らです。うっかりするとテンポラリファイルエラーが出ることもありますが、
その時には即座にクローズしてから開き直し、^QVで閲覧専用としています。
もちろん、チャイルドプロセス中に、A:\VZ\VZ.DEFをはじめとするその他の
ディレクトリにあるいろんなファイルを閲覧・編集することもありますが。

実は、昨日の実験では、これらの大きなファイルの参照を行うような形のも
のは行ったのですが、その他、小さいファイルを取り混ぜて行うという部分
がすっかり抜けていました。なので再現できなかったのかもしれません。
 

[2252] Re^2: 消えるヒストリー(その2)

めざら 2007/09/05(Wed) 21:37
[2248]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
 うーん,わたしもちょこちょこと実験をしてみているのですが,どうにも再現しないですね。

[2257] Re: 消えるヒストリー(その2)

としき 2007/09/08(Sat) 00:04
[2246]へのコメント http://www.hinocatv.ne.jp/~toshiki/
今日、再発しました。再現できる手順も、少しわかりました。
どうも、テンポラリファイルエラーがからんでいるようです。

まず、環境面では、今までの記述で特に修正が必要な部分はありません。
今回のメインキャストはB:\2.LOG  208386bytes
それと、       B:\1.LO   181922bytes ←拡張子に注意
B:\Nは、ヒストリーからは消えましたが、直接にはファイル操作はしていま
せん。あと、追加事項として、カレントドライブであるB:\の起動時の空き容
量は446464bytes。

事象再現時の手順は以下の通り。ちょっと長くなりますが箇条書きにします。

( 1)電源ON → autoexec.bat終了でコマンドライン
( 2)省電力ソフト「PDC」常駐
( 3)N[RET]
 ↑これはVZ.DEF内でエイリアスで「Nifp *.log」と展開される
  ここで、上記のログファイルの拡張子が微妙に設定されているところが
  関係してくる
( 4)NIFPからチャイルドプロセスに降りる
 この時、rswapの作ったスワップファイルのサイズは 261680bytes
 B:\の空き容量は 184320bytes
( 5)ファイラーから2.LOGを選択してオープン
( 6)2.LOG内に存在しない文字列を検索文字列を設定して\[DOWN]
( 7)「見つかりません」が一瞬表示された後「テンポラリファイルエラー」
( 8)[ESC]Cでただちにファイルクローズ
( 9)再びファイラーで2.LOGを選択してオープン
(10)オープン直後に^QVでビューモード
(11)\[DOWN]で「見つかりません」表示
(12)[ESC]Cでクローズ後、今度はファイラーで1.LOGをオープン
(13)オープン直後、検索文字列の再設定などはせずに、そのまま\[DOWN]
(14)今度は検索文字列あり、見つかった個所でそのまま[ESC]Cでクローズ
(15)ファイラーからHでコマンドプロンプトに抜ける
(16)EXITでチャイルドプロセス終了
(17)再びチャイルドプロセスに降りる
(18)ここでhistory.defでヒストリーが消えてしまっている事を確認

設定している検索文字列ですが、2.LOGには存在していないけど1.LOには存在
しているという複数の文字列で同じ状況になることを確認しています。
一方、これのバリエーションというか、以下の手順で症状が発生しないこと
も確認しました。

〜(5)までは同じ動作
( 5)ファイラーから2.LOGを選択してオープン
( 6')2.LOG内に存在する文字列を検索文字列を設定して\[DOWN]
( 7')「テンポラリファイルエラー」にならない部分で文字列発見
( 8')見つかった個所で[ESC]Cでただちにファイルクローズ
( 9')[ESC]Cでクローズ後、今度はファイラーで1.LOGをオープン
(10')オープン直後、文字列検索等はせずにカーソル移動のみ
(11')ファイル先頭ではないところにカーソルを置いて[ESC]Cでクローズ
(12')ファイラーからHでコマンドプロンプトに抜ける
(13')EXITでチャイルドプロセス終了
(14')再びチャイルドプロセスに降りる
(15')ここでhistory.defでヒストリーが消えていない事を確認

この2つの手順で一番大きく異なるのがテンポラリファイルエラーの有無。
近いうちに、もっと少ない手順で発症するか確認します。

さて、上記手順の(18)の段階で、history.defでみるとどのようになっている
かということを、以下に記します。

0 1.LOG ->29B4A
1 B:\2.LOG ->0
2 F ->4C7D
3 A:\L\A ->A6
(中略)
A N ->20
(後略)

今回、ドライブ名なしのメモファイルのヒストリーは全部消えてしまったわ
けではありません。ヒストリーのトップのものだけが消えてしまった形です。
ところが、それだけではありません。ヒストリーの3番目に、「F」なる妖し
いファイルの履歴があります。でも、私、こんな名前のファイルを操作した
ことはありません。だけど、前回、#2246に記載したVz起動時のヒストリー
と比較すると正体がわかります。これ、前回記載したヒストリーでいうとこ
ろの2番目、VZ.DEFの履歴の、前半部分がごっそりと削られてしまっている
ものなのですね。

どうも、テンポラリファイルエラーが起きると、ファイル名ヒストリの一部
が破壊されてしまうようです。果たしてこれは、本当にテンポラリファイル
エラーが絡んでいるのか、それとも他の要因なのか、さらに追試を行います。
また、ポケ3バージョンに特化したものなのか、他のバージョンやオリジナ
ルでも発生するものなのか、メインマシンなどでも実験してみたいと思いま
す。ただ、最近は外部記憶装置などが潤沢にあるので、なかなかテンポラリ
ファイルエラーを出せる環境が見つからない、というのもあったりするんで
すよねぇ。
 

[2258] Re^2: 消えるヒストリー(その2)

めざら 2007/09/08(Sat) 20:46
[2257]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> 今日、再発しました。再現できる手順も、少しわかりました。

 おお,ついに手順が特定できましたか。
 色々考えてみたけれど,結局お役に立てなくて申し訳ありませんでした。

> どうも、テンポラリファイルエラーがからんでいるようです。

 ふうむ。テンポラリファイルエラーが起こらないようにしてやれば解決ということになるかもしれませんね。例えば,VZLOG を設定して,その原因になるような巨大ファイルをオープンする時には必ずビューモードになるとかですね。

> これ、前回記載したヒストリーでいうところの2番目、VZ.DEFの履歴の、
> 前半部分がごっそりと削られてしまっているものなのですね。

 ちょっとだけバイト数が合わないように感じるのは気のせいかしら。

 救いがあるとすれば,先頭からヒストリ格納されなかったときに,文字列の末尾がヌル2個ではないというところですね。それじゃ完全破壊ですから。

> ただ、最近は外部記憶装置などが潤沢にあるので、なかなかテンポラリ
> ファイルエラーを出せる環境が見つからない、というのもあったりするんで
> すよねぇ。

 ドライブの空き容量が 400KB な環境は昨今なかなかないですからね。ちょっと前まで LX ではフラッシュ貧乏だったのですが,2GB の miniSD を使い始めてからフラッシュ超富豪状態になってしまったので,もう戻れません。空き容量があればテンポラリファイルエラーにならないというわけでもないですけどね。

[2259] Re^3: 消えるヒストリー(その2)

としき 2007/09/08(Sat) 22:39
[2258]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  おお,ついに手順が特定できましたか。

ところが、さらに調査を進めたところ、とんでもないことがわかりました。

>  ふうむ。テンポラリファイルエラーが起こらないようにしてやれば解決ということになるかもしれませんね。

解決しません。なんと、テンポラリファイルエラーは関係なかったのです。

>  ちょっとだけバイト数が合わないように感じるのは気のせいかしら。

えと、ごめんなさい、バイト数が合わないというのは、どことどこを比較し
ておっしゃっているのかよくわかりません。私が何か誤記をしたかな?



さて、手順をずばずばと短くして行った結果、再現させる最小の手順という
のがわかりました。それはなんと

(1)任意のファイルをオープン
(2)^QV

なんと、これだけで、ファイル名ヒストリーが壊れるのです。
事象は、ポケ3オリジナル版でもkonno省電力版でも同様です。
ひどい時には、ポケ3を起動してすぐ、ちょっとどういう操作を行ったかは
覚えていませんが、ほんの2〜3回、ファイルのオープン、^QV、クローズを
行って、最後、リードオンリー属性が付いているA:\ENG.DICをオープンして
(当然、ビューモードでオープンされています)^QVをしたら、なんとファイ
ル名ヒストリーがすべて消失してしまいました。
また、比較的フルパスが長いファイル、A:\LSIC\SRC\BIN\MAKE\MKDEP.DOCを
オープンして^QVしたら、9番目という数え方でいいのかな、#2249で示した
「9 N ->20」が「7 ->20」まで上がってきていました。0番目にこのファイ
ル自身のヒストリーが追加されているわけですから、上の方3つ分が丸まる
消失してしまっている勘定になるわけです。

試した範囲では、他のバージョンでは今のところ症状をおこす事に成功して
いません。多分、ポケ3版特有のバグといって良いと思います。もしかした
ら私のVZ.DEFが悪さをしている可能性もあるかもしれませんが、ちょっと考
えにくい。

ということで、めざらさんに教えていただきたいことは以下の通り。

・ファイル名ヒストリーバッファの構造
 カーソル位置情報も文字列でもっているのでしょうか。
 それとも、ロング整数?
 なんか、FAQのページに既にありそうな気がするのですが、
 そうであればURLだけ教えて下さい。
・VZ.DEFなどの設定がファイル名ヒストリーに影響を与える可能性
 私のVZ.DEFはWEBで公開済みだけど、あら捜しはしないで下さい(^^;
・^QVのルーチンはどのソースファイルにあるか
 私はこれが一番怪しいと思っているんですよ。
 多分、削除するバイト数の計算を間違っているのではないかと。
 もし、どのソースにあるかわかれば、オリジナルとポケ3版を比較する
 ことにより、バグ修正することもできるのではないかと。
 もちろん、修正バージョンのリリースはkonnoさんにお願いしますが(^^;

なにとぞ、ご助言をお願いします。
 

[2260] Re^4: 消えるヒストリー(その2)

めざら 2007/09/09(Sun) 06:13
[2259]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> ^QVをしたら、なんとファイル名ヒストリーがすべて消失してしまいました。

 まず,^QV であるキーにアサインされたコマンド/マクロが何であるか,…
というところから始めなくてはなりません。

 製品版のサンプル VZ.def では,^QV にアサインされているのはマクロで,
「これからオープンするファイルをすべてビューモードでオープンするように
するモードに移行する」マクロです。

 ところが,としきさんのコメントを読んでいると, どうやら ^QV にアサイ
ンされているマクロは,どうやら即効ビューモード(現在オープンされている
ファイルをビューモードで開き直す)であろうと想像できます。代表的なのは
上村さんの古典があります。

 さて,この上村さんのマクロ,としきさんの感覚で言うなら「バグ」が存在
します。 いや,実際には ^QV のビューモードマクロにバグがあるのではなく
て,コールされている [ESC]U/@U 「編集のやり直し」にバグがあるのです。

 上村さんのオリジナルを示します。
7  [ESC]U @U "U 編集のやり直し"
        ?. #]
        (mr==1)?{ &a(37) (r<1)?. }
        &s ky[, ht[, we[,
        #M &Sp(pf,"%s ->%lx",wa+$92,wa..63,wa..64)      ;★
        mr-, #L #e #m
        we], ht], ky],
        &d #]

 ★の行に注目してください。&Sp() で pf に上書きしています。
 つまり,^QV だけでなく,[ESC]U で pf ヒストリは破壊されます。

 これはかなり前に気付いて次のようにしています。
(会議室などで上村さんに報告したかどうかは忘れてしまいました。)
;7 [ESC]U "Undo Edit"   ;Ikuo   view mode の直後に置く
;       ?. #] (mr==1)?{ &a(37) (r<1)?. }
;       &s ky[, ht[, we[, #M
;       &Sp(pr,"%s ->%lx",wa+$92,wa..63,wa..64) ;prを介してpfを破壊しない H_ear
;       &Sh(pf,pr)
;       mr-, #L #e #m we], ht], ky], &d #]

 その後,m.gann 師から改訂意見が付いて次のようになり,
;7 [ESC]U "Undo Edit"   ;m.gann+ikuo
;       ?. &a(37) (wn&&r>0)??.
;       mr3, ht[, we[, ly[, ln[, &s #L #P #m
;       &#J(r]) ky], we], ht], &d

 最終的に,現在は次のものを使用しています。
7 [ESC]U "Undo Edit"    ;ikuo+m.gann    ;view mode の直後に置く
        ?. (wn)??.                      ;consoleでは何もしない
        #] (mr==1)?{ &a(37) (r<1)?. }   ;?. &a(37) (wn&&r>0)??.
        mr-, ht[, we[, ly[, ln[,        ;mr3, == #] mr-,
        &s #L #P #m                     ;#L:マクロ中では入力窓固定
        &#J(r]) ky], we], ht], &d       ;ky代入後&d必要

 やしきに掲載されている VZ.def も確認させていただきました。

 どんぴしゃ,のはず。


 ちらと目に入った次のマクロ「オプションの初期化」も危険ですね。
 vw と zk を保護することをお奨めします。
        r=34&jx, &^ jx|=r,              ; オプション初期化/vw, zk は保護


> ということで、めざらさんに教えていただきたいことは以下の通り。

 これらは必要ですか?
 バッファの構造はわかりますが,カーソル位置情報などは少し複雑ですね。
カーソル行指定とカーソル位置ポインタ指定,末尾指定などがあります。

[2261] オプションの初期化の変更

でがらし 2007/09/09(Sun) 08:42
[2260]へのコメント
 あたしもついでにVZ.DEFを書き換えることにしましたが、
オプションの初期化のところがわかりません。としきさん
と同じように、

27 ^KO "O オプションの初期化"
&^ &d #]

 となっていますが、これを

27 ^KO "O オプションの初期化"
r=34&jx, &^ jx|=r, ; オプション初期化/vw, zk は保護

 とすればいいんでしょうか?

 [ESC]Uは最後の版に書き換えました。ありがとさんです。

[2275] Re: オプションの初期化の変更

めざら 2007/09/10(Mon) 20:41
[2261]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> 27 ^KO "O オプションの初期化"
>      r=34&jx, &^ jx|=r,              ; オプション初期化/vw, zk は保護

        &d      ;スクリーンの再表示
        #]      ;ステータスラインの再表示

 これを加えた方がよいでしょうね。

[2279] whip.defに#]を追加?

でがらし 2007/09/13(Thu) 22:21
[2275]へのコメント
出先から戻りました。上村さんのwhip.defは持っていますが、
この頃、使わなくなっていました。

 ステータスラインの再表示を加えて、下記のようにすると、
いいんでしょうか?

50 ^KO "whip" ; マクロバッファに鞭をいれる
(128){ &Zd(mg..4) } ; 外部マクロ一括削除
r=34&jx, &^ jx|=r, ; オプション初期化/vw, zk は保護
&d #] &m("Bm:%u bytes free",bm) ;ここに#]を追加
(ks&1)? cm=1,

[2280] Re: whip.defに#]を追加?

めざら 2007/09/13(Thu) 23:23
[2279]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
 whip だと #] は特に必要ないようですね。
 きちんとステータスラインが再描画されるのを確認しました。

[2281] ^KOでwhip.defにします

でがらし 2007/09/13(Thu) 23:55
[2280]へのコメント
 そうでしたか。では^KOでwhip.defを起動するように
します。昔、確か、そういうふうにしていたんですが、
何かの機会にはずしたままになってました。

[2263] Re^5: 消えるヒストリー(その2)

としき 2007/09/09(Sun) 10:27
[2260]へのコメント http://www.hinocatv.ne.jp/~toshiki/
ぅぉぉ、これで積年の不具合が解決しそうです。
どうもありがとうございます。

> て,コールされている [ESC]U/@U 「編集のやり直し」にバグがあるのです。

そうだったのですか。
さっそく書き換えます。

ただ、ここで、新たな疑問。
メインマシンでも同じマクロを使っているにも関らず、こちらでは全く症状
が発生しません。これはなぜなんでしょうか。
もしかして、PC-98依存のコードを使っているということなのでしょうか。

>  やしきに掲載されている VZ.def も確認させていただきました。
>  どんぴしゃ,のはず。

あはは、やっぱりあら捜しをされてしまいました。
でも、フリーウェアのソース公開と同じようなものですから、こういうもの
はなんでもかんでも公開しておくと便利だと思いました。

>  ちらと目に入った次のマクロ「オプションの初期化」も危険ですね。

こんなマクロ、使った事もないというか、存在すら忘れていました。
多分、このキーアサインそのものも使ったことがないに違いありません。
もっとも、使っていない機能はたくさんあって、^QOを使いはじめたのだって
やっとここ2年ぐらいのものだったりします。
話を元に戻して、このマクロ、c.mosさんの作られたオリジナルから使われて
いるようなんですが、どう危険なんですか?
オリジナルVzでは怪しい挙動を起さないような構造なんでしょうか。
使用頻度から考えて、いっその事、すっぱりとこのマクロを削除してしまっ
てもいいのかもしれません。

>  これらは必要ですか?
>  バッファの構造はわかりますが,カーソル位置情報などは少し複雑ですね。
> カーソル行指定とカーソル位置ポインタ指定,末尾指定などがあります。

今、急いで教えていただく必要は全くなくなりました。
ただ、こういう情報は、いずれ必要になる時が来るかもしれません。
ということで、そのうちにサイトに掲載しておいてもらえればありがたいか
な、という程度で。
 

[2268] Re^6: 消えるヒストリー(その2)

めざら 2007/09/09(Sun) 21:51
[2263]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> メインマシンでも同じマクロを使っているにも関らず、こちらでは全く症状
> が発生しません。これはなぜなんでしょうか。

 としきさんのみぞ知る。
 きっと [ESC]U が呼ばれていないのでは? 本当は何が呼ばれているのかいないのか,テストしてみればよいと思います。

> あはは、やっぱりあら捜しをされてしまいました。

 だから(^^;確認ですよ,ただの確認。自信満々で外したら格好悪いでしょ。

> 話を元に戻して、このマクロ、c.mosさんの作られたオリジナルから使われて
> いるようなんですが、どう危険なんですか?

 関数 &^ は変更してはいけない変数を初期化してしまうというバグがあります。初期化してしまう変数には vw があり,知らずに正規表現が無効になったことになっているままに正規表現置換など行うと,テキストが無茶苦茶になる可能性が皆無ではありません。特にとしきさんのように RX 有効の環境では,意図しない文字列を素知らぬ顔で置換してしまうマクロが存在するかもしれません。ご用心ください。

> 使用頻度から考えて、いっその事、すっぱりとこのマクロを削除してしまっ
> てもいいのかもしれません。

 ま,それもいいかもしれませんが,わたしはシフト実行でマクロバッファもクリアするマクロを ^KO にアサインしているので,バッファが満杯になるとときどき実行しています。

> ということで、そのうちにサイトに掲載しておいてもらえればありがたいか
> な、という程度で。

 マニュアルのプロファイル機能の最初のページにありますけどね。

[2272] Re^7: 消えるヒストリー(その2)

としき 2007/09/10(Mon) 00:23
[2268]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  としきさんのみぞ知る。

とは限らないかも。
なにせ、メインマシンのVZ.DEFもWEB上に公開してあるわけですから。

>  本当は何が呼ばれているのかいないのか,テストしてみればよいと思います。

散々テストしたんですが、さっきまでは全然発症しなかったんですよ。
ところが、ふと思いついて、I:\Nというファイル名のファイルを作って、こ
れを^QVしてみたんですね。したら、見事に発症。それ以後は、^QVするたび
におかしくなりました。多分、[ESC]Uでも症状が出ると思います。
ん〜、もうちょっと追試してみますが、フルパスの長さがある程度以下とか、
拡張子のないファイル名がトリガになっているなんてことがあるのかなぁ。
#私のテストの方法がおかしい、というほうに100カノッサ!

>  シフト実行でマクロバッファもクリアするマクロを ^KO にアサインしてい

それもよさげですね。

>  マニュアルのプロファイル機能の最初のページにありますけどね。

84ページのことですか?
私の考えていたのはそういうのではなくて、よくあるポインタの図解のよう
なもので

+--------+
|C:\A.TXT|
+--------+

pf

みたいなものだったのですよ。
あと、オプションには順序性があるのかないのか、とか。
でも、私がよくわかっていないだけで、こういうのは実は不要なのかな。

[2276] Re^8: 消えるヒストリー(その2)

めざら 2007/09/10(Mon) 21:42
[2272]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> なにせ、メインマシンのVZ.DEFもWEB上に公開してあるわけですから。

 でも, 外部マクロとして読み込まれたマクロのキーが ^QV であったという
可能性だってあるわけですからね。

> ん〜、もうちょっと追試してみますが、フルパスの長さがある程度以下とか、

 フルパスの長さが一致していたというのに一票。


 ところで,^KO の拡張版は上村さんのものです。

50 ^KO  "whip"                          ; マクロバッファに鞭をいれる
        (128){ &Zd(mg..4) }             ; 外部マクロ一括削除
        r=34&jx, &^ jx|=r,              ; オプション初期化/vw, zk は保護
        &d &m("Bm:%u bytes free",bm)
        (ks&1)? cm=1,

 あれ? 別にシフト実行ってわけではないですね。今までいつもシフト実行
してました。(^^;

> 私の考えていたのはそういうのではなくて、よくあるポインタの図解のよう
> なもので

 こんな感じでしょうか。ポインタ変数の指すバッファ先頭アドレスの直前に
2バイトのサイズ情報があります。ヒストリーバッファには,必ずこのサイズ
情報があります。

 <-SIZE-> ↓pfの先頭アドレス
┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│00│01│C│:│¥│A│.│T│X│T│00│F│ │−│>│4│
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
       ↓ヌル(文字列の終端/デリミタ)    ↓カーソル位置情報
┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│C│7│D│00│A│:│¥│L│¥│A│ │−│>│A│6│00│
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
             ↓ ↓連続したヌルがバッファ終端
┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│N│ │−│>│2│0│00│00│¥│A│ │−│>│A│6│00│
└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
                 →ここから先はゴミ

 カーソル位置情報はそのまま十六進数を表わす文字で入っています。

 オプションの順序性というのは何でしょう。 #Q で EDITFILE に記録された
窓分割・配置情報のことでしょうか。

[2277] Re^9: 消えるヒストリー(その2)

としき 2007/09/11(Tue) 13:40
[2276]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  でも, 外部マクロとして読み込まれたマクロのキーが ^QV であったという
> 可能性だってあるわけですからね。

なるほど、確かに。

>  フルパスの長さが一致していたというのに一票。

あ〜、これは当たってそうな気がする。
実は、全然コードが理解できていないのですが、フルパスの長さがたまたま
一致していれば、症状は出ないものなのですか?

>  こんな感じでしょうか。ポインタ変数の指すバッファ先頭アドレスの直前に
> 2バイトのサイズ情報があります。ヒストリーバッファには,必ずこのサイズ
> 情報があります。

そそそそ、これこれ、こういうのが見たかったのですよ。

>  カーソル位置情報はそのまま十六進数を表わす文字で入っています。

これ、例えば、MR128とかって情報も、この場合は十進数ですが、そのままの
文字列で入っているんですか?

>  オプションの順序性というのは何でしょう。 #Q で EDITFILE に記録された
> 窓分割・配置情報のことでしょうか。

編集テキストオプションやマーク情報のことです。
実際にオープン窓に直接記入する時にはどんな順序でもよいみたいですから、
あまり順序依存性はないんでしょうね。でも、Vzがヒストリーに記録する
時はある一定の順序で記録されるようですので、なんとなく、その順序でな
くてはならないのかなと思い込んでしまったようです。
 

[2278] Re^10: 消えるヒストリー(その2)

めざら 2007/09/11(Tue) 23:05
[2277]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
> フルパスの長さがたまたま一致していれば、症状は出ないものなのですか?

 症状自体は出ていますが,気付きにくいのだと思います。でも,1票は入れたものの根拠は希薄ですよ。としきさんのことだから「あれ,さっき使ったファイルが履歴から消えてるなぁ」と思うでしょう。でも,ファイルの断片が残っていた前回と違って証拠がないのです。

> そそそそ、これこれ、こういうのが見たかったのですよ。

 高橋さんの dump.def で pf-2 を指定してやれば,もっと分かりやすく表示されると思いますよ。マスに入れると却って見にくいですね。

> これ、例えば、MR128とかって情報も、この場合は十進数ですが、そのままの
> 文字列で入っているんですか?

 文字列です。その文字列に前置される符号によって解釈されているのだと思いますが,マクロコードの解釈と同じ様な手順で - の次が > ならカーソル位置ポインタ,+ や - ならファイル配置情報,英字ならオプション指定,数字なら行番号,…というように解釈しているのだと思います。

 もしもこのような解釈の手順があるのであれば,順序性はないということになりそうですね。

↑ このページの先頭