元の日本語入力状態への復帰No.06826
でがらし さん 12/01/21 14:02
 
 秀丸のGREPを利用して、英和辞書(英辞郎)を引くマクロと和英辞書(和英
辞郎)を引くマクロを作っています。

 編集中の画面から、日本語入力と英語入力を切り替えて検索しますが、元の
編集画面に戻ったとき、日本語入力が検索前の状態に戻れないのが不便です。
検索用のコードの前後に入れるルーティンを工夫して見ましたが、うまく行き
ません。おわかりの方がお見えでしたら、ご教授下さい。

 要望を繰り返すと、下記の通りです。

(1)英和辞書を引くときは、編集画面が日本語入力オン・オフのいずれでも、
日本語入力をオフにして、検索語入力画面を出す。

(2)和英辞書を引くときは、編集画面が日本語入力オン・オフのいずれでも、
日本語入力をオンにして、検索語入力画面を出す。

(3)検索終了後に元の編集画面に戻るときは、検索マクロ起動前にその編集
画面で利用していた日本語入力の状態に復帰する。

[ ]
RE:06826 秀丸8.12No.06827
でがらし さん 12/01/21 14:18
 
 バージョンを書き忘れていました。8.12です。

[ ]
RE:06826 元の日本語入力状態への復帰No.06828
Iranoan さん 12/01/21 15:31
 
 でがらしさん今日は、Iranoan です。
>  編集中の画面から、日本語入力と英語入力を切り替えて検索しますが、元の
> 編集画面に戻ったとき、日本語入力が検索前の状態に戻れないのが不便です。
 現在どこまで出来ているか不明なので、使いそうなキーワードだけ記してお
きます。
 imestate, imeswitch

[ ]
RE:06828 現在のコードNo.06830
でがらし さん 12/01/21 21:51
 
 現在は、どなたかのサイトで発見した下記のコード
を検索マクロに組み入れています。

=======================================
#imeYN = imestate;
if( #imeYN ) imeswitch; // IME を OFF

検索ルーティン

if( #imeYN != imestate ) imeswitch;
=======================================

[ ]
RE:06830 現在のコードNo.06831
Iranoan さん 12/01/21 22:58
 
 でがらしさん今日は、Iranoan です。
>  現在は、どなたかのサイトで発見した下記のコード
> を検索マクロに組み入れています。
 これで、IME の制御が出来ていませんか????

[ ]
RE:06831 元の編集画面は制御できずNo.06832
でがらし さん 12/01/22 10:34
 
 Iranoanさん、こんにちは。

 検索語入力画面までの日本語入力は制御できるんですが、元の編集画面へ
戻ったとき、その編集画面で使っていた日本語入力の状態に戻れません。

 日本語入力オン状態で、英和辞書を引く例で説明します。下記の4.のとき、
日本語入力がオンになるようにしたいです。

=======================================
1.元の編集画面(編集中のファイル)の状態

 日本語入力オン

2.英和辞書マクロ起動

 自動的に日本語入力オフになる。

3.検索出力画面(grep出力ファイル)

 自動的に日本語入力オンになっている。

4.元の編集画面(編集中のファイル)に戻ったとき

 自動的に日本語入力オフになっている。

[ ]
RE:06832 元の編集画面は制御できずNo.06833
Iranoan さん 12/01/22 15:45
 
 でがらしさん今日は、Iranoan です。
>  検索語入力画面までの日本語入力は制御できるんですが、元の編集画面へ
> 戻ったとき、その編集画面で使っていた日本語入力の状態に戻れません。
 IME の設定によっては、その状態は画面毎に違いますので、開いた画面とと
で制御が必要になることがあります。
> 3.検索出力画面(grep出力ファイル)
>
>  自動的に日本語入力オンになっている。
 これはおそらく、画面を開いた時の初期状態だと思います。

> 4.元の編集画面(編集中のファイル)に戻ったとき
>
>  自動的に日本語入力オフになっている。
 これは 2 でオフにした結果でしょう。

[ ]
RE:06833 元の編集画面は制御できずNo.06834
秀まるお2 さん 12/01/22 16:12
 
 IMEのON/OFF状態は、アプリケーションソフトの1つ1つのウィンドウ毎(と
いうか、正確にはスレッド毎)に独立してるので、現在の状況はそれのせいで起
きてるってことじゃないかと思います。

 例えば秀丸を2つ起動して、1つの秀丸でIMEをONにしても、Ctrl+Tabでウィ
ンドウを切り替えると、そこのウィンドウ上ではIMEがOFFになります。もう一回
Ctrl+Tabで元のウィンドウに戻るとIMEがONになります。

 今回のケースは、つまり、マクロを実行したウィンドウ上でIMEをOFFにして、
そこからgrepを実行して出てきた秀丸上でIMEをONにしても、元のウィンドウは
OFFのままってことで、それはそれでそういう動作で合ってることになります。

 しいてなんとかするとしたら、setactivehidemaruで元のウィンドウをアクテ
ィブに戻してそこでimeをONにして、それからまたgrep結果の方に
setactivehidemaruするって作戦にしたらいいかと思います。

 マクロの例:

    #h1 = hidemaruhandle(0);
    if( imestate == 1 ) {
        imeswitch;
    }
    $s = input( "検索文字列は?" );
    grep $s, "c:\\*.*", ".";
    #h2 = hidemaruhandle(1);
    if( imestate == 0 ) {
        imeswitch;
    }
    setactivehidemaru #h1;
    if( imestate == 0 ) {
        imeswitch;
    }
    setactivehidemaru #h2;

[ ]
RE:06833 制御状況了解No.06835
でがらし さん 12/01/22 23:49
 
 状況を理解しました。ありがとうございました。

[ ]
RE:06834 日本語制御成功:検索出力画面へNo.06836
でがらし さん 12/01/23 00:01
 
 ご教示のコードを検索ルーティンの前後にはめこんで、元編集画面の日本語
出力の制御に成功しました。ありがとうございました。

 ところが、このコードを組み込むと、検索マクロを起動した後、検索出力画
面ではなく、元編集画面へ戻って検索マクロが終了します。検索マクロを起動
した後は、検索出力画面が出るようにしたいんですが、そういうふうにできる
ものでしょうか? 説明不足で、失礼しました。

 いったん検索出力画面を見た後、元編集画面へ移ることが多いです。検索出
力画面から元編集画面へ移るときに、元編集画面の日本語制御が元のままで
あってほしいです。

 また、ここで有意味な情報かどうか、わからないですが、知らない単語を続
けて検索することが多いので、複数の検索出力画面を開くことが多いです。

[ ]
RE:06836 日本語制御成功:検索出力画面へNo.06837
Iranoan さん 12/01/23 00:53
 
 でがらしさん今日は、Iranoan です。
> このコードを組み込むと、検索マクロを起動した後、検索出力画
> 面ではなく、元編集画面へ戻って検索マクロが終了します。検索マクロを起動
> した後は、検索出力画面が出るようにしたいんですが、そういうふうにできる
> ものでしょうか?
 これに関しては、マクロを実行する画面では IME の制御を何もしなければ
よいと思います。その上で、「新規の画面 A で grep を実行した場合、grep
の出力結果用の画面 B を開かず、その画面 A に出力する」という使用を利用
してはどうでしょう。流れとしては、次の様な要領です。
(1) 必要なら元の画面で、検索文字列の取得などの処理をする
(2) newfile;//若しくは openfile "/h";
    で後から grep 出力用の画面を開く
(3) if( imestate )imeswitch;//IME を OFF にする
    //検索文字列の入力
    //grep 処理

>     #h1 = hidemaruhandle(0);
>     if( imestate == 1 ) {
>         imeswitch;
<snip>
>         imeswitch;
>     }
>     setactivehidemaru #h2;
なら
//------------------------------------------------------------
//必要ならマクロ実行画面での処理をする
openfile;
if( imestate == 1 ) {
    imeswitch;
}
$s = input( "検索文字列は?" );
grep $s, "c:\\*.*", ".";
if( imestate == 0 ) {
    imeswitch;
}

[ ]
RE:06836 日本語制御成功:検索出力画面へNo.06838
秀まるお2 さん 12/01/23 09:54
 
>  ところが、このコードを組み込むと、検索マクロを起動した後、検索出力画
> 面ではなく、元編集画面へ戻って検索マクロが終了します。

 setactivehidemaruがうまくいってない(ウィンドウハンドルが違ってる)の
か、それともそもそもsetactivehidemaruしてないのか、その辺が原因じゃない
かと思います。

 (Iranoanさんのコメントとは違った返事になってるかもしれませんけども)

[ ]
RE:06838 日本語制御成功:検索出力画面へNo.06839
colder さん 12/01/23 15:05
 
colderです
>  #h2 = hidemaruhandle(1);
ここって、1でいいんですかね?
こちらの環境だと、0にしないとうまく動作しないんですが。


[ ]
RE:06839 日本語制御成功:検索出力画面へNo.06840
秀まるお2 さん 12/01/23 15:48
 
 すみません。(0)でないとダメでした。

 それが原因のようです。

[ ]
RE:06837 別画面での制御:うまく行きそうNo.06841
でがらし さん 12/01/24 07:17
 
 Iranoan さん、新しいアイデアのご教示、ありがとうございます。GREPの結
果は自動的に開かれるファイルに出てくるものとばかり思っていました。

 今日はしっかりテストする時間がなかったんですが、imestate の操作でう
まく行きそうです。検索方法のレパートリーが増えるとうれしいです。辞書の
検索以外の検索のヒントにもなりました。お礼を申し上げます。

[ ]
RE:06840 元がオフだとオンで戻りNo.06842
でがらし さん 12/01/24 07:18
 
 colderさん、ご指摘、ありがとうございました。

 #h2 = hidemaruhandle(1);

 を

 #h2 = hidemaruhandle(0);

 に修正して、動作を確認しました。結果は下記の通りです。

=======================================
1.元編集画面が日本語入力オン

  検索出力画面から元編集画面へ戻ったときに、日本語入力オン

2.元編集画面が日本語入力オフ

  検索出力画面から元編集画面へ戻ったときに、日本語入力オン
=======================================

 2.の場合に、日本語入力オフで戻る手があるものでしょうか?

[ ]
RE:06842 元がオフだとオンで戻りNo.06843
秀まるお2 さん 12/01/24 12:39
 
> 2.元編集画面が日本語入力オフ
>
>   検索出力画面から元編集画面へ戻ったときに、日本語入力オン
> =======================================
>
>  2.の場合に、日本語入力オフで戻る手があるものでしょうか?

 元編集画面で日本語入力がONだったのかOFFだったのか覚えておいて、それに
従ってimeswitchすれば出来るはずじゃないかと思います。

[ ]
RE:06843 工夫しますNo.06844
でがらし さん 12/01/25 00:03
 
 工夫してみます。ありがとうございました。

[ ]