一括表示

− 野ざらし言 −

[2998] FEPの回帰:英辞郎マクロと和英辞郎マクロ

でがらし 2008/12/19(Fri) 21:54
 前にも載せた通り、英辞郎と和英辞郎を読みにいくマクロを使っています。マクロから戻るとき、編集画面のFEPを元へ戻したいんですが、どうしたらいいでしょうか? 何か、ルーティンがあって、教えてもらった気がしますが、わからなくなりました。希望は下記です。多少、複雑な気がしますが、どうでしょう?

 編集画面で日本語入力オンになっていて、英辞郎マクロを立ちあげるときは、1行入力画面になったときに、日本語入力をオフにして文字列を入力します。

 編集画面が日本語入力オフになっていて、和英辞郎マクロを立ちあげるときは、1行入力画面になったときに、日本語入力をオンにして文字列入力します。

 ともに検索出力が終わった後は、1行入力画面になる前の編集画面の日本語入力の状態に戻したいです(前者の場合はオン、後者はオフ)。逆に、これらのマクロを使う前後でFEPの状態が変わらないときは、そのままにします。

 英辞郎マクロは先に掲載しましたが、和英辞郎マクロは下記です。,pwというのはいらないんでしたっかね? めざらさんと文太さんにそういわれたような。

=======================================
== WAEI.DEF==
* M
25 "WAEI" ;tagtotxt.docから移植。Izgrepへ変更
&j(10)
?. #F &Cr (r)?.
#E &?("c:\tool\Izgrep -t $"■%s$" c:\dic\WAEI-101.TXT >c:\waei.txt",ps,pw) #m
; #E &?("izgrep -tz $"%s$" %s >c:\waei.txt",ps,pw) #m
#[ #O "c:\waei.txt" #m
*
=======================================

[2999] Re: FEPの回帰:英辞郎マクロと和英辞郎マクロ

めざら 2008/12/20(Sat) 16:05
[2998]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> 多少、複雑な気がしますが、どうでしょう?

 でがらしさんの書き方は複雑ですが,動作はそうでもありません。
 整理してやると,
・英和を引くときは,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)

 これでやってみてください。

[3001] こういうことかな?

でがらし 2008/12/20(Sat) 22:48
[2999]へのコメント
(1)英和マクロのほうは#Fがありません。英和マクロの検索部分はこうなっています。

:a
#E &?("c:\tool\Izgrep -t $"■%s$" c:\dic\EIJI%s.TXT >c:\eiwa.txt",pw,a) #m

(2)和英マクロは2998に書いた通りですが、

&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の前で繰り返すってことですかね?

(3)ご説明中で、下記の部分(甲)と、

=======================================
&j(0)
f=mg.-9, ;▽保存

; ここで入力窓を起動させる処理(この間にfの値が破壊されないこと)

mg.-9=f, ;▲復帰
&j(-1)
=======================================

 次の部分(乙)の関係がわかりません。

=======================================
・英和を引くなら,#Fの直前に &j(0)を置く
・和英を引くなら,#Fの直前に &j(n)を置く(nの値はFEPに依存:MS-KANJIは10)
=======================================

 両方、いるってことですよね? 甲の中の;の部分に、乙を入れるってことですか?
 なんだか、あたし、ひどく頭が悪い気がしてきました。うーむ、どうも、実は元から頭が悪かったのかも。

[3003] ちょっとずつ違うかも

めざら 2008/12/21(Sun) 09:08
[3001]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 でがらしさんの使われている辞書引きマクロの全貌がわからなかったので,
曖昧な書き方しか出来ませんでした。少なくとも和英の方に #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 が不要とアドバイスを受けたら削りましょう。
 しつこさこそ,必要です。せっかちはいけませんが。

[3007] 和英マクロ修正・英和マクロは

でがらし 2008/12/23(Tue) 22:34
[3003]へのコメント
 和英マクロを修正しました。希望通りの動きをします。ありがとうございました。

 pwの件、修正しました。何度も同じことを聞いてて、すんませんです。普通の検索マクロのほうは、前回にpwを落としていたんですが、和英マクロは注意からはずれていて、昔のままになっていました。

 英和マクロは文太さんご謹製のマクロを使っているつもりでいたら、なんと、その後、めざらさんに手を入れてもらった版を使っているいることが判明しました。こっちには#Fがありますが、ちっと考えてみます。

[3011] Re: 和英マクロ修正・英和マクロは

めざら 2008/12/24(Wed) 06:32
[3007]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
>  和英マクロを修正しました。希望通りの動きをします。ありがとうございました。

 #F であれば,VZ が FEP 制御していないので,あまり問題は出ないでしょうね。

 英和の方で #F を入力場面で使っていれば簡単なのですが,&g() を使っていたりする場合は,もう少し工夫が必要です。その工夫は正真正銘の裏技なのでわれわれが考えてどうにもなるものではありません。ですから,ちょっと試してみてうまくいかないようなら遠慮なく訊いてくださいね。

 上げてもらえば,さくっと直しますので。

[3040] 英和マクロのFEP

でがらし 2009/01/01(Thu) 21:10
[3011]へのコメント
 利用中の英和マクロです。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
*
=======================================

[3041] Re: 英和マクロのFEP

めざら 2009/01/01(Thu) 23:28
[3040]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
でがらしさん, 今年もよろしくお願いします。
(勝手ながら「by Mezala」は削りました。手を入れた人が新たな著作者です。)

 後付け部分が剥がれかかっているので,構成しなおした方がよいように思います。
 むしろ,別のグローバルマクロにした方がよいような気もしますが,シフト実行で使い分けるのであれば,「goto ジャンプ」はやめることです。無駄が多いし,何より,美しくないですね。ラベルの使い方としては一番よろしくない方法です。

 実は FEP の制御にはあまり関係がないのですが,先日でがらしさんが所望していたような FEP の復帰のことなど考えると,今のような組み立てでは破綻します。

 基本は,
・【準備】起動時のFEPの状態を記憶
・【分岐】シフトキーの状態で処理を分ける
・【検索】両方とも同じ手順で grep に渡し,同じ手順で出力ファイルをオープン
・【復旧】起動時のFEPの状態に復帰
…です。

 何が違うって,grep に渡すものと検索先だけです。(出力ファイルは異なっていますが,敢えて同じものにしても特に困らないはず。)

[3044] シフト実行は廃止

でがらし 2009/01/02(Fri) 09:05
[3041]へのコメント
 おめでとさんです。このマクロ、英和と和英をシフトで使い分けるようにって私が要望して、めざらさんに作ってもらったんだと思います。そのときは1つの起動キーで使い分けるのが起動キーの節約になってよさそうに思ったんですが、和英マクロを使う頻度が高いと、あなたが噛んだ小指が痛いになっちゃって、結局、和英マクロには別の起動キーを当てていました。

 go to は無駄が多いんですか? ちんぷんかんぷん。

 Fxっていうと、外国為替のことかと思ってました。今年は元旦から少し利口になったような。

[3049] シフト実行云々は別にして

めざら 2009/01/02(Fri) 15:47
[3044]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
> 英和と和英をシフトで使い分けるようにって私が要望して、

 いやー,わたしはああいうコードは書かないですねぇ。(^_^;
 別のマクロを単にくっつけただけではありませんか?

 まぁ,それはともかく…
 わたしは和英辞書ファイルを持っていないので,実際にやってみるとどのような使い勝手になるか分かりませんが,もしかすると,入力窓で入力した文字がアルファベットなら英和を,仮名漢字なら和英を引くようにできるのではないかと思います。
 実際には,そこまで自動化すると逆に使いにくくなる場面もあることも想像されるのですが,普通は慣れの問題かもしれません。

>  go to は無駄が多いんですか? ちんぷんかんぷん。

 いちがいにそうは言い切れないのですが,少なくとも #3040 の IQ.def は一直線の手順をラベルで分けているので美しくないです。ジャンプさせるのであれば,別のマクロ(ローカルマクロへの分岐でもよい)に飛ばすのがよいでしょう。

 今回問題になっているのは,FEP の制御ですよね。だとすればなおのこと帳尻を合わせる書き方をしないと,同じことを2度書かなければならなくなります。

 一から書き直した方がよいと思うので,どのような動作が希望か仕様を述べてください。

 ログを読んでみると,2年前の正月から同じようなやりとりしてるなぁ…

[3051] こんなところで

でがらし 2009/01/02(Fri) 20:19
[3049]へのコメント
 昔も同じこと聞いたかもしれません。私の要望はめざらさんがおまとめの通りで、

・英和を引くときは,FEPオフ
・和英を引くときは,FEPオン
・どちらも,起動前のFEPの状態を復帰させる

 です。

[3037] 謹賀新年

文太 2009/01/01(Thu) 00:38
[2998]へのコメント
 英語の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)【和英辞郎】"

*

[3038] Re: 謹賀新年

文太 2009/01/01(Thu) 17:38
[3037]へのコメント
 いけませんなぁ、近視的で。

	(r>=0)? {mx[+, #C (s)? 'n' mx],}
	(s==4)? 'n'
↓
	(r>=0)? {mx[+, #C mx],}
	(s)? 'n'

 こちらのほうが、短いコードですね。分かりやすさはちょっと別でしょうが。

[3039] 謹賀新年;mouseover dictionary

でがらし 2009/01/01(Thu) 21:08
[3038]へのコメント
 文太さん、皆々様、あけましておめでとうございます。今年もVZでよいお年を、です。

 文太さんのこの和英マクロ、ひょっとしてあたし用に作ってもらったのかな? 稼動を確認しましたです。ありがたいです。

 あたしは紙の辞書を引くのは好きだったんですが、パソコンを使うようになってから、だんだん引かなくなりました。電子辞書も持ってますが、これはキーボードが小さくて入力が面倒ですね。いいところもありますけど。そこでときどきVZから辞書を引いていますが、わからない単語が多いんで、やっぱり全部は引きかねます。

 ところで皆さんがた、mouse over dictionaryという英辞郎を使うためのFirefoxのアドオン・ソフトをご存じでしょうか? これはすばらしく便利なソフトです。FFで見ている画面上で、単語の上にカーソルを当てるとその和訳を左側に出してくれます。フリーソフトだし、英辞郎を使ってるなら、試さない手はありませんぜ、おのおのがた。下記です。作者のマルタさんに感謝です。

http://maru.bonyari.jp/mouseoverdictionary/

[3042] Re: mouseover dictionary

めざら 2009/01/01(Thu) 23:50
[3039]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 どうでもいいことなのですが,Firefoxを略すなら,Fxとするのが通っぽいらしいです。

 便利なアドオンのご紹介ありがとうございます。

 最近は Alcom World(http://alcom.alc.co.jp/)でもオンライン版が公開されるなど,英辞郎もいろいろ展開してますね。

[3052] Re: 謹賀新年;mouseover dictionary

文太 2009/01/03(Sat) 01:04
[3039]へのコメント
 でがらしさん、ごめんなさいね。ヲの人なのです。
 必要ないでしょうけど、動かなかったらゴメン。

 よし、これで思い残すことはない(はず)。気になってたの、あそことあそこ。
あい。とりわけ謝辞に。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)【和英辞郎】"

*

[3053] 稼動確認

でがらし 2009/01/03(Sat) 10:57
[3052]へのコメント
 新バージョン、稼動を確認しました。ありがとさんです。
 「ヲの人」って、なんだか、わからないですけど。何を意味するんでしょ? オタクって意味かな?

[3054] Re: 稼動確認

めざら 2009/01/03(Sat) 12:04
[3053]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 論文モードですか。雑念を振り払って専念してください。>文太さん

 さて,英和はどうしましょうか。
 FEPの問題が解決できればよいのであれば,#3040のを無駄な部分をそぎ落として英和専用とすれば一番簡単そうですけどね。

 呼び出し専用のマクロでシフト実行による使い分けを行うことも可能です。どうすれば一番使い勝手がよいかということは,使う人でなければわかりませんから,使い込みつつ何か要望が生じたら遠慮なく言ってもらった方がよいですね。もちろん自分でいろいろ弄るのは理想ですけれど,使う人に徹するのもいいのではないかと思います。

> オタクって意味かな?
 多分そうでしょうね。なぜそうなのかというと,件のマクロ#3052は細かく徹底した使い勝手への配慮が行われているからです。多分,文太さんが個人として使うとしたらオーバースペックながら,おそらくでがらしさんには必要かもしれないというものが全部入っています。使うだけなら,それは見えませんけど。

[3058] 英和マクロはFEPだけで

でがらし 2009/01/03(Sat) 23:52
[3054]へのコメント
 英和は今のところ、FEPの問題が解決できれば十分です。英和専用の単独マクロとして利用していて、FEPの問題を除くと、不満がありません。

 文太さんの和英マクロ、手が込んでいるわけですね。ありがたや、ありがたや。料理を食べるほうも、料理人の腕具合がわかるようになると、味わいが深くなりそうですが、そこにたどりつくまでVZの世界が残っていますように。

[3059] Re: 英和マクロはFEPだけで

めざら 2009/01/04(Sun) 06:20
[3058]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
 どこをどうしたか分かるように,不要な行の頭に「;;」を付けておきました。
行頭が;;の行は削除してしまって構いません。起動キーは適当に指定してください。

=== 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
*

[3060] 出力画面はFEPオフ

でがらし 2009/01/04(Sun) 10:15
[3059]へのコメント
 FEPオンの状態で起動すると、FEPをオフにして1行入力窓を開きます。検索出力画面になるときにはFEPが再びオンになってほしいんですが、そうなりません。

 FEPオフの状態で起動したときには、そのままFEPオフの状態で検索出力画面を出したいです。

[3062] Re: 出力画面はFEPオフ

めざら 2009/01/05(Mon) 11:01
[3060]へのコメント <mezala@nifty.com> http://homepage3.nifty.com/mezala/
>  検索出力画面になるときには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 #] .
*

 こんなところでどうでしょう。

[3063] FEP制御に成功

でがらし 2009/01/05(Mon) 18:11
[3062]へのコメント
 今度はうまく行きました。ばっちりです。ありがとうございました。

↑ このページの先頭