> 多少、複雑な気がしますが、どうでしょう?でがらしさんの書き方は複雑ですが,動作はそうでもありません。 整理してやると, ・英和を引くときは,FEPオフ ・和英を引くときは,FEPオン ・どちらも,起動前のFEPの状態を復帰させる …ですね。 FEP の状態の保存・復帰は定型があります。 2004/10/09,FGALDC/mes/14/08213: 文太さんの発言を編集 &j(0) f=mg.-9, ;▽保存 ; ここで入力窓を起動させる処理(この間にfの値が破壊されないこと) mg.-9=f, ;▲復帰 &j(-1) 編集モードから他のモードに移るときなど, 何か FEP が制御されるような 場面を挟むなら,このように FEP の状態を記憶しているメモリを弄ります。 問題なのは,FEP の制御の方ですね。入力窓には2種類あります。 ・FEP を制御しない(FEP の状態を変更しない)入力窓 #F や #56 のような検索系 ・FEP を制御する(FEP を強制的にオフにする)入力窓 #O などのファイルオープン系,#J などの &g()系 それぞれの目的に応じた状態に VZ 自身が制御するというきわめてまっとうな 動作なのですが, FEP を制御する入力窓でマクロ側から FEP を制御するためには, VZ を騙す必要があります。 上の状態保存・復帰も一見裏技っぽいですが,それ以上に裏技になります。 でがらしさんの使っている辞書引きマクロが #F を使っているなら, あまり面倒はありません。 ・英和を引くなら,#Fの直前に &j(0)を置く ・和英を引くなら,#Fの直前に &j(n)を置く(nの値はFEPに依存:MS-KANJIは10) これでやってみてください。
でがらしさんの使われている辞書引きマクロの全貌がわからなかったので, 曖昧な書き方しか出来ませんでした。少なくとも和英の方に #F があったので 似たような仕様かなと思ったのですが,肝腎の英和の方の VZ の処理の部分を 示していただかないと具体的には書けないです。grep の方は FEP の制御とは まったく関係がないのです。> &j(10)> ?. #F &Cr (r)?.> #E &?("c:\tool\Izgrep -t $"■%s$" c:\dic\WAEI-101.TXT >c:\waei.txt",ps,pw) #m>> となっています。ここの&j(10)ってのをもう一回、#Fの前で繰り返すってことですかね?基本的には,そうですが,元々の &j() の位置が変なのです。 = 和英 * Macro 1 ^\ "和英" ?. mp[-, ps[=pa, ;ページングモード,バッファの保存・変更 &j(0) ((mg.-9)[, ;FEP状態の保存 &j(10) #F &Cr ;FEPを起動して検索語入力を待つ (mp!=2)?{ &m("Cancelled .") >z } ;mpが変化しなければ中止 &s ;途中の処理は見せない ; ---- 入力された検索語をGREPに渡して一時ファイルに出力しオープン ;ごにょごにょ ; ---- 一時ファイルがオープンされたら以降の処理は継続される :z ; ---- 復帰・終了 ---- mg.-9=0], &j(-1) ;FEP状態の復帰 ps], mp], ;モード復帰 &d ;再表示 *> なんだか、あたし、ひどく頭が問題点をきちんと整理することが必要だと思います。 特にコミュニケーションにおいては,自分の求めるこたえを引き出すための ヒントは自分から伝える必要があるでしょう。多くを語らないことが美徳とか 遠慮だと思っているとしたら,それは勘違いです。 そして,こたえが得られたら検証することが大事です。 くどくても,粘着でも,わからないところはつとめて明らかにすることが, 結果的に他人の負担を減らします。放っておいて後で訊かれても,はじめから 考えなくてはなりません。pw が不要とアドバイスを受けたら削りましょう。 しつこさこそ,必要です。せっかちはいけませんが。
> 和英マクロを修正しました。希望通りの動きをします。ありがとうございました。
利用中の英和マクロです。FEPのところ、わかりかねてます。 === IQ.def ===; * M 50 ^IQ "IQ" ?. (ks&1)? >B &j(0) ; ?. &j(0) &g("【英辞郎】",20) &Cr (r|1+1)??. ;[ESC]&[CR] &Su(pw) c=pw.0, ;<c>hr (c<'A' || c>'Z')?c='@', #E &?("C:\TOOL\Izgrep -it $"^■%s$" C:\DIC\EIJI%c.TXT >C:\EIWA.TXT",pw,c) #m #[ mx[+, #O "C:\EIWA.TXT" #m mx], &d #] . :B &j(10) ?. #F &Cr (r)?. #E &?("c:\tool\Izgrep -t $"■%s$" c:\dic\waei\*.* >c:\waei.txt",ps) #m #[ #O "c:\waei.txt" #m * =======================================
> 英和と和英をシフトで使い分けるようにって私が要望して、
> go to は無駄が多いんですか? ちんぷんかんぷん。
英語のXXXとしてのお年賀。 バグがあったら諦めよう。たかだかFEPのON/OFFだし。辞書は引かないですむ なら引かないほうがよい。ほんと? 難しいところですね。 ただし、辞書の引きすぎには注意。「この単語が分からなければぜったいお話 が分からなくなる」という直感が働かなければ、とりあえずパスする、というの が良いと思う。その単語が2回出てきたら、引く。ほんとは下線を引いておいて、 辞書はパスがよい。ペーパーバックを読み通してしまって、もう一度最初から読 み直すときに辞書を引くのが一番だと思う。小説はふつう2回読むもの。読むに 値する作品なら。 過去の経緯とかまったく分かりません。お気遣いいただいたのにごめんなさい >めざらさん。 さ、論文モードです。m(_B_)m == WAEI.DEF== * M 50 ^^ "WAEI" ?. p="c:\waei.txt", ;kekkafile ;--- close workfile --- &02 ;02 push #O &?(p) #m ;close waeifile (r>=0)? {mx[+, #C (s)? 'n' mx],} (s==4)? 'n' &03 ;03 pop ;--- grep etc --- &00 &j(10) ;save FEP mode & ON &10 pq..111[=r, #F &Cr pq..111=0], (r)?{&01 .} ss2, #E &?("c:\tool\Izgrep -t $"■%s$" c:\dic\WAEI-101.TXT >%s",ps,p) ; &?("dir") #m #[ &02 #O &?(p) #m &03 ;02 push, 03 pop &01 &d . ;restore FEP 00: &j(0) f=mg.-9, 01: mg.-9=f, &j(-1) 02: pf[=pr, mx[+, 03: mx], pf], 10: (3+$). "$(0,1,0,1,0,1,0,1,0,1,0,20)【和英辞郎】" *
いけませんなぁ、近視的で。 (r>=0)? {mx[+, #C (s)? 'n' mx],} (s==4)? 'n' ↓ (r>=0)? {mx[+, #C mx],} (s)? 'n' こちらのほうが、短いコードですね。分かりやすさはちょっと別でしょうが。
でがらしさん、ごめんなさいね。ヲの人なのです。 必要ないでしょうけど、動かなかったらゴメン。 よし、これで思い残すことはない(はず)。気になってたの、あそことあそこ。 あい。とりわけ謝辞に。m(_B_)m サイト管理者のめざらさんには、m(_B_)m == WAEI.DEF== * M 50 ^^ "WAEI" ?. p="c:\waei.txt", ;<p> kekkafile ;--- close previous kekkafile(s) --- :a &04 (r)? {&s &#T(r) mx[+, #C (s)? 'n' mx], &d >a} ;--- grep etc --- &00 &j(10) ;save FEP mode & ON &10 pq..111[=r, #F &Cr pq..111=0], (r)?{&01 .} ss2, #E &?("c:\tool\Izgrep -t $"■%s$" c:\dic\WAEI-101.TXT >%s",ps,p) ; &?("dir") #m #[ &02 #O &?("%s",p) #m &03 ;02 push, 03 pop for event &01 &d . ;restore FEP ;& pf hisbuf 00: &j(0) f=mg.-9, 01: mg.-9=f, &j(-1) 02: pf[=pr, mx[+, 03: mx], pf], 04: ;--- file already opened or not; thanx to YASAT & Ikuboh ;--> p (filename ptr) ;<-- r==wn if found, 0 if not found q[=wo, :b q=q..0, &Sx(q+146,p) (r)?? {(q.2) >c} (q..0)? >b ? (0) :c q], 10: ;--- dummy sys_menu; thanx to Toraji, wanama, Miyata (3+$). "$(0,1,0,1,0,1,0,1,0,1,0,20)【和英辞郎】" *
> オタクって意味かな?
どこをどうしたか分かるように,不要な行の頭に「;;」を付けておきました。 行頭が;;の行は削除してしまって構いません。起動キーは適当に指定してください。 === EIWA.def === * M 50 "EIWA" ;; ?. ;; (ks&1)? >B ;; &j(0) ?. &j(0) f=mg.-9, ;★追加 &g("【英辞郎】",20) &Cr (r|1+1)??. ;[ESC] or [CR] は終了 &Su(pw) c=pw.0, ;<c>hr (c<'A' || c>'Z')?c='@', #E &?("C:\TOOL\Izgrep -it $"^■%s$" C:\DIC\EIJI%c.TXT >C:\EIWA.TXT",pw,c) #m #[ mx[+, #O "C:\EIWA.TXT" #m mx], mg.-9=f, &j(-1) ;★追加 &d #] . ;; :B &j(10) ;; ?. #F &Cr (r)?. ;; #E &?("c:\tool\Izgrep -t $"■%s$" c:\dic\waei\*.* >c:\waei.txt",ps) #m ;; #[ #O "c:\waei.txt" #m *
> 検索出力画面になるときにはFEPが再びオンになってほしいんですが、そうなりません。ふーむ,どうやらタイミングがよくないみたいですね。 復帰する場所を変えて,frを追加してみましょうか。 === EIWA.def ===; * M 50 ^\ "EIWA" ?. &j(0) f=mg.-9, ;★追加 fr+, &g("【英辞郎】",20) &Cr fr-, ;※frの騙しを追加 (r|1+1)??. ;[ESC] or [CR] は終了 &s ;※サイレント mg.-9=f, &j(-1) ;★追加 ※挿入位置変更 &Su(pw) c=pw.0, ;<c>hr (c<'A' || c>'Z')?c='@', #E &?("C:\TOOL\Izgrep -it $"^■%s$" C:\DIC\EIJI%c.TXT >C:\EIWA.TXT",pw,c) #m #[ mx[+, #O "C:\EIWA.TXT" #m mx], &d #] . * こんなところでどうでしょう。