一括表示

− 野ざらし言 −

[3439] 行番号モード

としき 2009/11/15(Sun) 23:15
http://www.hinocatv.ne.jp/~toshiki/
ニフティの過去ログの整理をしています。
もっぱら、自分の発言と、それに関連する部分が主体です。
一応、それだけではなく、その近辺の発言にもひととおり目を通しています。

さて、私がFGALDCにデビューしてわりとすぐのことです。
とらじさんと、タグジャンプマクロの関係でやり取りをしました。
その際のとらじさんの発言によると、行番号モードの表示行と論理行の違いで、結構複雑な動きをするのだとか。(cf. DC14#2045
ところが、どのようなことになるのか、私にはさっぱり分かりませんでした。
とらじさんのマクロの改良点というかバグ対処のための変更点を読んでも、そもそものとらじさんの期待する動作を理解していないため、やっぱり分からない状況です。

ということでご教示いただきたいのは、dn+/-で大きく動作の異なるマクロの構成要素(基本コマンドやシステム関数)があるのか、ということです。
どなたかご存知の方、分かりやすくご教示ください。

[3440] Re: 行番号モード

めざら 2009/11/16(Mon) 17:39
[3439]へのコメント http://homepage3.nifty.com/mezala/index.html
> とらじさんと、タグジャンプマクロの関係でやり取りをしました。

 TraTag.defの原型ですね。会議室のマクロに比べると,v16なんてまるで化け物で使いこなすのが大変なくらいですけれど。

> ということでご教示いただきたいのは、dn+/-で大きく動作の異なるマクロの
> 構成要素(基本コマンドやシステム関数)があるのか、ということです。

 それって寅次さんがとしきさんに振った内容ではありませんか。(^^;
 それはともかく,grep などで取得される行番号の情報は VZ で言うところの論理行ですね。ですから,grep などで出力されたタグ情報を VZ で取得してジャンプするときも,論理行番号にジャンプしなければなりません。
 ところが VZ が表示行番号モードでテキストをオープンしたとき,ジャンプ先行番号の値とタグ情報の値の辻褄が合わないので,目的の行とは別の行にジャンプしてしまいます。
 ということで,引数を行番号として渡されるコマンド・コマンド関数において動作が所期のものとなりません。
 具体的には,コマンド:#J,コマンド関数:&#J() です。また,ファイルのオープン時に行番号書式「path -n」(例:c:\vz\macro\hoge.txt -1234)が参照されるので,ファイルオープン系のコマンドすべて(#O,#R,#L)に影響します。

 ステータス情報の行番号が書き換わらないとか,そういった現象は行番号ジャンプとはまた別の問題ということになるでしょうか。

[3441] Re^2: 行番号モード

としき 2009/11/16(Mon) 21:00
[3440]へのコメント http://www.hinocatv.ne.jp/~toshiki/
>  それって寅次さんがとしきさんに振った内容ではありませんか。(^^;

振られたけど分からず、10年以上ペンディングになっていた、というのが
真実だったりします。

>  ということで,引数を行番号として渡されるコマンド・コマンド関数において動作が所期のものとなりません。
>  具体的には,コマンド:#J,コマンド関数:&#J() です。

これは予想していたのですが、

> また,ファイルのオープン時に行番号書式「path -n」(例:c:\vz\macro\hoge.txt -1234)が参照されるので,ファイルオープン系のコマンドすべて(#O,#R,#L)に影響します。

こちらは、指摘されるまで、完全に失念していました。
なるほど、確かにそのとおりですね。
なんとか、!Open 等で補正をかけることは不可能でしょうか。

>  ステータス情報の行番号が書き換わらないとか,そういった現象は行番号ジャンプとはまた別の問題ということになるでしょうか。

ここいらがいまだに納得できていなくて。
だって、論理行モードだと完全に正常なのに、表示行モードだと異常になる
ことがある、という事象だったものですから。

[3442] Re^3: 行番号モード

めざら 2009/11/16(Mon) 22:54
[3441]へのコメント http://homepage3.nifty.com/mezala/index.html
> なんとか、!Open 等で補正をかけることは不可能でしょうか。

 ファイルをオープンするときに常に何かするというのは無駄な気がします。特に指定行番号ジャンプをするというのは9割方がタグジャンプだとすれば,タグジャンプのマクロ側で対処すべきだと思います。それに !Openイベントはファイルをオープンしたところで終了しますので,Dnを変更したまま終了させてしまうことになりかねませんから,問題点が大きすぎますね。

> だって、論理行モードだと完全に正常なのに、表示行モードだと異常になることがある、という事象だったものですから。

 一時的に論理行モードに変更して,終了後に元に戻すわけですが,初期値が論理行モードであればステータス情報などの書き換えが発生しませんが,初期値が表示行モードの場合は書き換えが発生します。書き換えるところがステータス情報だけではなく,例えばもしも行番号表示(Dl)やページ番号表示(Pg)やカーソル行強調表示(Du)などを有効にしている場合も想定すると,スクリーン全体を書き換える必要があります。
 この辺りはさすがの寅次さんも結構試行錯誤されたようで,再表示してから行番号モードを戻すような常識では考えられないような操作を行っています。相当に苦労したように想像するところです。

 このへんの動作については,実験を繰り返してみるしかないでしょう。

 このほかにも冒頭で Dn[, Dn-, #60 Dn], というように一見関係なさそうなコマンドの前後でモードを一時的に変更していますが,ここはわたしも理解できないところです。単にタグ情報から取得したパスと行番号を pf に出力する時点では関係がないはず。しかし,あの寅次さんがそうしているのには何か訳があるはずです。相当な動作試験も行ったはずで,その結果,必要だという結論に達したのでしょう。
 結論としては,理論はいい,現象がすべて,ということになるでしょう。ちと納得いかないところもありますけれどね。

[3445] Re^4: 行番号モード

としき 2009/11/17(Tue) 22:22
[3442]へのコメント http://www.hinocatv.ne.jp/~toshiki/
> > なんとか、!Open 等で補正をかけることは不可能でしょうか。
>  ファイルをオープンするときに常に何かするというのは無駄な気がします。

確かにそうですね。
う〜ん、うまい方法はなかったか。

>  結論としては,理論はいい,現象がすべて,ということになるでしょう。ちと納得いかないところもありますけれどね。

この点、全く同感です。
とりあえず、いささか釈然としないところが残ってしまいましたが、それでも
かなりの点ですっきりすることができました。
どうもありがとうございました。

↑ このページの先頭