(4102)
4102:
#Fはマーク情報を壊す
投稿者:
文太
2009/08/27(木) 00:40
コメント数 2
レス不要ですし、現実的な対策はそれぞれのマクロ内で行なうしかないでしょ
う。
祈り的気分としては、konno さん、何とかなりませんか、というところですが、
高橋さんも直さなかった、ということは、まあ、Vzの経済的設計ゆえ、本質的
に仕方ないことなのでしょう。
それでも、「#Fはマーク情報を壊す」これだけでもレポートに値するかな、
と(過去ログにあったので、ニュースではありませんが)。リマンダーとして、
少なくとも。
久しぶりにマクロな1日でした。3つの大きなマクロを仕事用に書きました。
この仕事は、1日をマクロに費やすだけの価値がある。それで仕事が楽になる、
と確信して頑張って、楽しんだのです。けっこうマクロ言語を忘れてなくて、そ
れなりに嬉しかったのですが。相変わらず、記憶力の低下は stkhelp 頼みで補
いましたが。
で、 3つ目のそれなりに大きなマクロ(4,867 bytes)で、これに引っかかっ
てしまった。
10: &12 &Sm(r,wa+126,20) ; push all marks (#0 - #4)
11: &12 &Sm(wa+126,r,20) ; pop all marks (#0 - #4)
12: (3+$)."$[20]" ; buffer
20: &22 &Sm(r,wa+126,20) ; push all marks (#0 - #4)
21: &22 &Sm(wa+126,r,20) ; pop all marks (#0 - #4)
22: (3+$)."$[20]" ; buffer
2つのテキストで、カーソル飛ばしまくりなマクロなので、同じ処理を2回。
こんな嘆かわしい逃げ技でも解決せず…。タイミングがまずいみたい。嗚呼。
明日、仕上げます。4つのマーク情報を別々にセーブするしかないみたいな
感じ…。とほほ。
奥が深いというか、意地悪というか。可愛いVz、なんて言えません。
- No.4102 -
このTreeへ
[リストへもどる]
pre
(4102)
4103:
Re: #Fはマーク情報を壊す
投稿者:
文太
2009/08/27(木) 15:01
4102 番 文太 さんへのコメント コメント数 1
お騒がせしました。自分の stkhelp メモを迂闊にも信用したのが間違いで
した。m(__)m
#Fが壊すマーク情報は、#0のみで#1−#4は大丈夫なようです。
この程度なら、 わざわざ konno さんに悩んでいただく必要はありませんでし
た。ごめんなさい。楽しみでなく仕事のために、マクロを1日書き、「自分のせ
いではない」(=自分のマクロのバグではない)と信じ込むと、八つ当たり的に
(笑)「Vz直りませんか?」と言いたくなってしまう…。
仮定法ですが、#Fで#1−#4が壊れてたら、僕のみたいな「切った貼った」
の正統なるエディタ・マクロが、使いものにならなくなってしまいますね。
あ、マーク破壊情報と、その回避策は、下の記事にあります
Xがとらじさんで、Yが高橋さんです(伏せ字に意味ない?)
-----------------------------------------------------------------------
00046/00050 X RE:検索文字列設定#Fの動作
(15) 96/08/04 23:20 00041へのコメント
#00041 Yさん
> でも、#F はな〜。マークがブッ壊れるし、r も破壊されっからな〜〜。(--;
自分も「マークのブッ壊れ」対策で 一度だけ、
#< #b &x(50) #G ;ps に行を取得
&Sh(ps,"\i") ps.2=32, ;埋め込みオプション \i をつけてから
vp..39=pn.17~+, ;検索文字再設定の呪文 > m.gann氏
、という処理を マクロで使ってみました。
↑のパーツは テキスト2重化マクロの表/参照テキスト入れ替え処理です。
表と参照テキスト、それぞれカーソル位置をマークして カーソル行を #G して
から検索して入れ換えるんですが、
#< #b &x(50) #G
#F #< "\i " #m
、という方法だとマークがずれちゃうんで 以前に m.gannさんが紹介して
くださってたのを思い出して vp..39=pn.17~+, という呪文を使ってみました。
-----------------------------------------------------------------------
マクロのバグを取るのに3時間…。ま、#Fが14回も出てきて、変数を全部
使いまくるという(意味なくでなく。とにかくデータをいっぱい保存しなくちゃ
いけないのです)、カーソル飛びまくりの分析系マクロなので、ま、これだけ時
間をかけた甲斐はあるのでしょう(紙と鉛筆では死ぬ。死なないのは、専門職の
プロの編集者だけ。悪いけど、こっちには『書く』仕事もあるのですよ)。
バグの性質? バッファのすり替えの失敗です。#Gを何回もやってると「ど
うすり替えているのか」すぐ分からなくなり…、「#cで、あれ?」とかなり…。
いえいえ、どこでそうなるのか見つけるのが、そもそも大変で…。
バグ取り、大変でした。m(__)m
バグなんか取れても、仕事が片づくまで、充実感なんてぜんぜんありませんねぇ。
すっかり秋な雰囲気になってきました。
では。
- No.4103 -
このTreeへ
コメント元:4102 へ
[リストへもどる]
pre
(4102)
4104:
Re^2: #Fはマーク情報を壊す
投稿者:
konno
2009/08/28(金) 01:46
4103 番 文太 さんへのコメント コメント数 1
文太さん
> お騒がせしました。自分の stkhelp メモを迂闊にも信用したのが間違いで
> した。m(__)m
> #Fが壊すマーク情報は、#0のみで#1−#4は大丈夫なようです。
なにやら自己解決されたようですが、#Fがマーク情報を壊すとは知りませんでした。
めざらさんの所を見ても見つけられなかったので、FGALの過去ログにしか存在しない
情報なのかもしれませんね。思わず検索してしまいました。
「マーク情報 #F 壊」で検索しても見つけられませんでした。「マーク #F 壊」で
やっとその記事に当りました。
> この程度なら、 わざわざ konno さんに悩んでいただく必要はありませんでした。
いやぁ、こんな難しいこと、わかりませんよ〜。(^^;
それに、マーク0を検索文字列にも使用するという経済仕様なんでしょうし。
ここを変更したらマクロの互換性がなくなるかもしれませんしね。(^^;
> すっかり秋な雰囲気になってきました。
ほんとに。今年は夏が来る前に終わってしまったみたいで。
寝室のエアコンが壊れてしまったので、涼しくなったのは助かりました。(^^;
- No.4104 -
このTreeへ
コメント元:4103 へ
[リストへもどる]
pre
(4102)
4106:
Re^3: #Fはマーク情報を壊す
投稿者:
文太
2009/08/28(金) 11:34
4104 番 konno さんへのコメント コメント数 1
konnoさん、めざらさん
お騒がせしました。m(__)m
めざらさんの仰るとおりで、「#Fでマーク#0の再設定」は実に合理的な設計
でした。マニュアルp.97を読んで、なるほど、と。m(__)m
すぐ過去ログの箇所を出せばよかったですね、すいません>konnoさん。
;29 :#? (#26-#28, go to line buffer)
30 \[INS] :Paging Mode
31 \[RLDN] :rollup ;これもいい味。
32 \[RLUP] :rolldown ;ditto。
33 :rollup2
34 :rolldown2
#if 98
35 ^R :pageup
36 ^C :pagedown
37 ^QW [RLDN] :sm_up
38 ^QZ [RLUP] :sm_down
#else
35 ^R [RLDN] :pageup ;「辛口のエディタ」、
36 ^C [RLUP] :pagedown ;mpで動作が変わる。
37 ^QW :sm_up ;これは嫌いで。
38 ^QZ :sm_down ;ditto。
#endif
39 ^QE :Top of Win ^QE ;Jump系の^Qシリーズ。
40 ^QX :End of Win ^QX ;うむ、かなり合理的なキーアサ
41 ^QR :TOF ^QR ;なんですよね、標準defって。
42 ^QC :EOF ^QC ;ここは変えないのが正解。
43 ^QP :Last Posit ^QP ;この組み合わせか。
44 ^QM :Set Mark ^QM ;ditto。そして#Fもこれをする。
45 ^QJ :J Jump to Line ^QJ
--- cut ---
52 ^QB :B Block Top/End ^QB
うーん、使いこなせてないところだ。ふ、深い。そして使いこなすと超便利。
矢印キーでずりずりしてちゃ、印度人のヘビ使いにはなれませんね。
多謝でした。m(__)m
- No.4106 -
このTreeへ
コメント元:4104 へ
[リストへもどる]
pre
(4102)
4110:
変数rと同様に考える
投稿者:
めざら
2009/08/30(日) 21:35
参照先:http://homepage3.nifty.com/mezala/index.html
4106 番 文太 さんへのコメント
まぁ,要するにマーク0は,変数で言うところのrみたいなものと思えばよいかと。
いわずもがなのことで申し訳ない。
- No.4110 -
このTreeへ
コメント元:4106 へ
[リストへもどる]
soft
(4102)
4105:
#Fはマーク情報を壊すのでなく再設定する
投稿者:
めざら
2009/08/28(金) 05:40
参照先:http://homepage3.nifty.com/mezala/
4102 番 文太 さんへのコメント コメント数 1
なんだかおかしな方向に話が行っているようですが,
マニュアルのp97を見てください。
元の位置に戻れるようにマーク0が再設定されるコマンドはいくつもあり,
#41,#42,#43,#44,#45,#55がそれにあたります。
#Fはマーク情報を壊すのではなく,
元の位置に戻るためにマーク情報を再設定すると考えるべきです。
VZの基本機能なのですから,榊原版や高橋版で「直される」はずがありません。
金野版でも絶対に仕様変更しないようにしてください。既存のマクロの動作に大きく
影響する可能性がありますし,わたしは非常に不便になります。
なお,マーク情報を再設定するのはコマンドだけでなく,
ジャンプ系のコマンド関数でもあると思われます。&#U()などですね。
- No.4105 -
このTreeへ
コメント元:4102 へ
[リストへもどる]
soft
(4102)
4107:
Re: #Fはマーク情報を壊すのでなく再設定する
投稿者:
konno
2009/08/29(土) 00:06
4105 番 めざら さんへのコメント
> なんだかおかしな方向に話が行っているようですが,マニュアルのp97を見てください。
ああっ、マニュアルにちゃんと書いてあったんですね。(++;
なにかワナがありそうな感じがしてたんですが、マニュアルを読んでないのがバレバレ
ですね。1.6のマニュアルはマクロのことはあまり詳しく書いていないと思って見もし
ませんでした。
上級者への道は険しいですね。マニュアルを熟読しているのはもちろん、ページまで
覚えるほどに繰り返し読まないといけませんね。って、そんな気力も無いですが。
> 元の位置に戻れるようにマーク0が再設定されるコマンドはいくつもあり,#41,#42,#43,#44,#45,#55がそれにあたります。#Fはマーク情報を壊すのではなく,元の位置に戻るためにマーク情報を再設定すると考えるべきです。
なるほどですね。マニュアルには#番号が無いのでわかりづらかったんですね。
大変わかりやすい説明で、納得できました。
> VZの基本機能なのですから,榊原版や高橋版で「直される」はずがありません。金野版でも絶対に仕様変更しないようにしてください。
もちろん、互換性を損ねるようなところは弄りませんよ。私も高橋さんの志に賛同して
いますし、マクロが動かなくなるのは困りますからね。
- No.4107 -
このTreeへ
コメント元:4105 へ
[リストへもどる]
soft