一括表示

− 野ざらし言 −

[2398] ファイルクローズ時のヒストリー登録

としき 2007/12/28(Fri) 21:46
http://www.hinocatv.ne.jp/~toshiki/
この件に関しては、以前にもお伺いしたことがあったはずです。
その時の私の疑問は、ファイルをクローズしてもヒストリーに登録されない
ことがあって、どういった時に登録されるのか、あるいはされないのか、と
いう事でした。当時のお答えでは、スクロールだけでカーソル位置を動かし
ただけでは登録されない、カーソルを1文字、右か左に動かしてクローズす
ればよい、というものでした。実際、これらの条件の時はそのような挙動に
なっています。ただ、当時、その他の条件のことも聞いたような気がしたの
ですが、きれいさっぱり忘れてしまっているために、もう一度確認したいな、
というのはあります。

実はさっき、間違ってクローズしてしまい、アッと思ってファイル名窓から
ヒストリーをたどろうとしたら登録されていなくて、非常に困った思いをし
たのですよ。今回は、確かにカーソル左右移動は1回も行っていませんでし
たが、カーソル上下移動は行っていたので、まさかヒストリーに登録されな
いとは思ってもいなかったので、かなり困惑しました。不必要な情報かどう
かがよくわからないので、ちょっと状況を詳しく書きます。

対象ファイルは数百KBのサイズのテキストデータベース。レコード区切り
は空行。フィールド区切りは改行。レコードの先頭がタグ情報になっていて
他のファイルにタグジャンプ可能。2つ目のフィールドがキーワード。
まずファイルをオープンし、次にカーソルを下に1行移動して行頭で3回ぐ
らい[F5]を押して検索文字列の連続取得でキーワードを取得。続いて[F6]を
押して検索文字列窓を出し、上矢印を1回押して取得したばかりのキーワー
ドを表示させ、カーソル左右移動で文字列の1ヶ所をピリオドに書き換えま
した。正規表現検索を使いたかったのです。後はその状態で\[UP]と\[DOWN]
でデータベース閲覧。こうすると、常に表示画面最上行はタグ情報で2行目
がキーワードという状態で、前後のレコードとの比較が容易です。で、たま
に異常データを見つけると、カーソルを1行上に移動してタグジャンプ。タ
グジャンプマクロは寅次さんに作ってもらったロング対応のものです。
で、うっかり、タグジャンプで開いたファイルをクローズした直後に、検索
していたデータベースファイルまでクローズしてしまい、あ、しまったと思
ってファイル名窓を開いたらヒストリー登録がなかった、ということです。
ちなみに、その直前にタグジャンプで開いたファイルは、編集して保存して
からクローズしたこともあって、きちんとヒストリーに登録されていました。

ということで、どういうときにヒストリーに登録されたりされなかったりす
るのか、もう一度教えてください。というか、FAQのページに載っていそ
うですが、例によって適切な検索語が設定できなかっただけかもしれません。
 

[2399] Re: ファイルクローズ時のヒストリー登録

めざら 2007/12/28(Fri) 22:53
[2398]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/index.html
 いろいろと設定がからむと思うので難しいのですが…
…と言うか,左右に動かすって言った覚えはないのですが,言いましたっけ。

 ヒストリーに格納【されない】条件は,クローズ時にカーソルがファイルの
先頭行にあることだと記憶していました。左右とは言ってないと思いますよ。

 まず実験してみてください。

 適当なファイル(ビューモードにならないもの)を開きます。
(1) そのままカーソルを動かさずに閉じます。

 適当なファイル(ビューモードにならないもの)を開きます。
(2)カーソルを下に向かって1行移動してから閉じます。

 (1)でヒストリーに残らないのは正常です。
 (2)でヒストリーに残らない場合は,オプション Sr を疑います。

Sr の設定値は調べてもらえば分かります。
 http://homepage3.nifty.com/mezala/vz/notes/vars.html#SR

 sr&1 と sr&4 がともに真となることが必要です。

 さて,sr の設定値が正常で,(2)がヒストリーに残らない場合は,昏迷です。
理由が想像できません。

 試しに次の m.gann 師の!Close イベントを使ってみるとか。

1 "!Close"              ;m.gann
        pv.103+,
        s-, &Im(pn+7,0)                         ;clear bug VZ @, w_act0 ..
        ss[+, (ln==1)?&y(1) ss],                ;[;] to history all

 クローズ時にカーソルがファイルの先頭にあれば,カーソルの移動を行い,
ファイル名履歴への格納を強制します。

[2401] Re^2: ファイルクローズ時のヒストリー登録

としき 2007/12/29(Sat) 10:34
[2399]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  いろいろと設定がからむと思うので難しいのですが…

そんなにいろいろなものが関係するとは思っていませんでした。
何度もお手数をおかけして申し訳ありません。

> …と言うか,左右に動かすって言った覚えはないのですが,言いましたっけ。
>  ヒストリーに格納【されない】条件は,クローズ時にカーソルがファイルの
> 先頭行にあることだと記憶していました。左右とは言ってないと思いますよ。

あ、もしかしたら言ったのは私かもしれません。
要は、カーソルがファイル先頭にあると記録されない、とめざらさんに言わ
れた事だけをはっきり覚えていて、だからカーソルを1文字動かせばよい、
というのを言われたような、自分で言い出したような、もう覚えていません。



さて、今回の件ですが、その後の状況です。
昨日、宿直明けで帰宅してメインマシンを立ち上げてから、帰宅後の仮眠を
経て、昨夜の就寝、今朝の起床まで、一度もマシンの電源を落したりVzの
常駐解除を行ったりしておりません。そこで、Srの値を見てみたところ、な
んと、Sr0になっている。アレっと思い、vz.defの値を確認したら、きちんと
というか、Sr39という指定になっています。そうか、これか。
でも、こんな設定をいじった記憶はない。では、いつもと違う何かをしたか
な、と考えたところ、すぐに思いつきました。VZSEQ7PAです。このマクロの
コードを読んでみたら、マクロ冒頭でいきなり、Sr[-を行っている。多分、
やっぱりこのマクロの実行途中でスタックをポップせずに異常終了してしま
ったのでしょう。で、本人は、異常終了したことにすら気付いていなかった、
というパターン。

いやぁ、どうもどうも、お手間を取らせまして申し訳ありませんでした。
 

↑ このページの先頭