”範囲選択中”の終了No.00406
ささき さん 99/02/10 13:09
 
初めまして、マクロを勉強しはじめたばかりの
ささきともうします。

範囲選択に関する質問なのですが、
私は、マクロで任意の部分を選択するのに、beginselを使った後に
カーソル移動をすることで実現しております。
ですが、実行したところ、マクロ終了後も
”範囲選択中”が継続していて、カーソル移動と共に選択範囲が
変化してしまいます。
escapeを使用すると範囲選択まで解除されてしまいます。
”範囲選択中”は終了するが、範囲選択は解除しない
beginselに対応する「endsel」のようなものはあるのでしょうか?

探してみても見つからないのですが、代用できる方法が
あるのでしょうか?

[ ]
RE:00406 ”範囲選択中”の終了No.00408
Arimac さん 99/02/10 23:53
 
ささきさん初めまして(^^;

具体的な利用状況が良く解らないのですが、
私の場合、[Ctrl]+[→]の場合は「単語右」、
[Ctrl]+[Shift]+[→]の場合は「単語右(サルネン風)」の
範囲選択をやりたかったのですが、[Ctrl]+[→]の
方にマクロ登録をすると[Ctrl]+[Shift]+[→]でも
同じマクロが呼び出され、しかも範囲選択は普通に
[Shift]を押したのと同じになったので、マクロで
[Shift]が押されているかどうか判断する事で
解決できました(^^;

恐らく[Shift]を押して範囲選択した場合と
「beginsel」とでは何か秀丸内部のフラグが
違うと思うのですが、マクロでそれが制御できる
と解り易いんでしょうがねぇ(^^;

[ ]
RE:00408 ”範囲選択中”の終了No.00409
ささき さん 99/02/11 00:20
 
ご回答ありがとうございました。

>具体的な利用状況が良く解らないのですが、

大まかな動きは、検索でHitした文字列を選択した状態でマクロを終了
したいのです。
一般的な動作ではないんですが、今私がしている作業ではあったら便利
だったもので、マクロで実現しようとしました。
検索するマクロだけを作って、SHIFT押しながら実行しても
だめですよねえ…。endselが欲しいところです。

[ ]
RE:00409 ”範囲選択中”の終了No.00410
杉浦 まさき さん 99/02/11 00:38
 
横から失礼します。
 杉浦 まさき と申します。

>大まかな動きは、検索でHitした文字列を選択した状態でマクロを終了
>したいのです。

それだけならマクロは必要なくて、
その他→動作環境→ユーザーインターフェイス→検索での表示
を「範囲選択」にすればOKなのでは?

マクロ中で(ユーザーの設定如何によらず)この動作をさせたい時は
マクロの中で一度設定を変えておいてあとで元に戻す、
という作業が必要ですが…面倒なんで(^^;、
個人的に使うマクロであれば設定を手で変えた方が楽ですよ。

マクロ中でやる場合のサンプルを一応載せておきます。

//-------------------------------------------//
// 現在の設定値を取得
// ※getininum( ), writeininum を使っているのは
//   16bit版秀丸でも動くようにするためです。
#SELFOUND = getininum("hidemaru.ini","Env","SelectFound");
if( #SELFOUND != 1 ){
 // 「検索の表示」が「範囲選択」になっていない場合
 // マクロ中で設定を強制的に変更
 writeininum "hidemaru.ini", "Env", "SelectFound", 1;
 envchanged; // 新しい設定値を反映させる
}

// ここに実際の作業を書く

// マクロ終了の直前
if( #SELFOUND != 1 ){
 // 保存しておいた設定値を復元
 writeininum "hidemaru.ini", "Env", "SelectFound", #SELFOUND;
 envchanged; // 設定値を再度反映させる
}
endmacro;
//-------------------------------------------//


[ ]
RE:00410 ”範囲選択中”の終了No.00411
ささき さん 99/02/11 01:13
 
詳しい解説ありがとうございます。

>それだけならマクロは必要なくて、
>その他→動作環境→ユーザーインターフェイス→検索での表示
>を「範囲選択」にすればOKなのでは?

確かにこれで十分です。そのようなオプションがないか
質問前に探してみたつもりだったのですが、見逃していました。
おかげさまで検索後に範囲選択するマクロは不要になりました。
ありがとうございます。

ほかにも、範囲選択中の終了がなくて困っていることがありまして、
それは、実行すると""で囲まれた範囲(文字列リテラル)を選択する機能です。
(このあと、カット&ペーストしたりすると便利だと思いまして)
かならず""内で実行するということを前提としまして、
1文字ずつファイルの先頭方向へさかのぼって、"が見つかったら範囲選択を開始、
今度は再び"を見つけるまで前に進む。という方法をしております。
これもマクロ終了後に開始中が継続していて、
今は(カット&ペーストの)必要がなかったらESCキーを押すことで我慢しております。

なにか上手い方法がありましたらご教授ください。

[ ]
RE:00411 ”範囲選択中”の終了No.00413
番頭++ さん 99/02/11 10:04
 
>それは、実行すると""で囲まれた範囲(文字列リテラル)を選択する機能です。

>>それだけならマクロは必要なくて、
>>その他→動作環境→ユーザーインターフェイス→検索での表示
>>を「範囲選択」にすればOKなのでは?

を前提としての話です、

検索で「"[^"]+"」の文字列で「正規表現」を指定して実行します。

「"[^"]+"」は、
" <== で始まり、
[^"]+ <== " ではない、一文字以上の繰り返し、
" <== で終わる、文字列です。

マクロでは、
//*1 リテラルの検索&コピー
escape;
searchdown "\"[^\"]+\"", regular;
if( result ){
copy;
//Rcut;
//Rright;
//Rescape;
} else {
message searchbuffer + " - はめっかりませんでした !!!";
}
endmacro;

後はヘルプを見てください。です。

ここに、すごく役に立つヘルプがあります。
1) NIFTY-Serve Windows 実用ソフトフォーラム(FWINAL) 18番ライブラリ
2)JRくんのホームページ
 (http://win.blue.co.jp/~jr-kun/hidemaru_qa/)

[ ]
RE:00413 ”範囲選択中”の終了No.00416
ささき さん 99/02/11 18:13
 
ささきです。

>検索で「"[^"]+"」の文字列で「正規表現」を指定して実行します。

なるほど、たいへんわかりやすい説明ありがとうございます。
私はマクロで範囲選択することしか頭にありませんでしたが、
検索でHitさせればよかったんですね。
これで、今まで悩んでいた事が解決できました。

>ここに、すごく役に立つヘルプがあります。

これも参考にして、ますます精進したいと思います。

[ ]