|
かたつむりです。
マクロ作成初心者です。お知恵をお貸しください。
以下のマクロを作成しました。
3点問題(★)があります。
この問題点を解決したいので、方法をご教授いただきたく、お願い申し上げます。
●マクロの目的;英文中で連続する半角大文字(2文字以上、つまり略語)を探し、
全角大文字に変換する。
●注意点;選択した「英文中の連続する半角大文字(以下“半角略語”)」を全角に
する−しないを選択できるようにする。
以下マクロです。
*****************
//半角大文字(略語)を全角大文字に変換する
gofiletop;
message "ファイル内で半角英大文字(2文字以上)を全角にします";
begingroupundo;
while(1){
if( selecting == 1 ) escape; //選択中であれば範囲選択の解除
searchdown2 "[A-Z]{2,}", regular, casesense ;
//カーソル位置以下で半角英字(連続2文字以上、大小区別)を検索
if(!result) break; //上記でなかったら、whileループを出る
call zenkaku; //サブルーチン呼出
}
endgroupundo;
endmacro;
zenkaku: //サブルーチン
menu"(&1)gettext( seltopx, seltopy, selendx, selendy )を全角にしますか?",
"(&2)しません"; //gettext;選択した文字列を変数に格納(文字列型)
if( result == 1 )
searchdown2 gettext( seltopx, seltopy, selendx, selendy );
else moveto selendx, selendy; //選択が「2」だったら、範囲選択を終了した
カーソル位置に移動
tozenkakuhira; //全角にします
escape;
return;
********************
以上です。
★問題点1;選択した半角略語がファイル内に複数あるなら、すべて一括して(最初
に選択した時点で、それ以降の同一半角略語についても一括して)全角にしたいので
すが、その方法が分かりません。
類似マクロ(*)では、同一であっても1つ1つ前から順番に「全角にしますか?」
と確認してきて、一括では処理しません。
(*)サブルーチン内の「menu文」を「question文(全角にしますか?はい−いい
え)」にしたもの。これは作動しました。
★問題点2
サブルーチン内でメニュー表示式にしたいのですが、
上記の記述ではメニュー内に「gettext( seltopx, seltopy, selendx, selendy )を
全角にしますか?」とでてしまいます。
「gettext( seltopx, seltopy, selendx, selendy )」の部分に、「選択文字列その
もの」を表示するのはどうすればいいのでしょうか?
★問題点3
問題点2に関連しますが、
$a = gettext( seltopx, seltopy, selendx, selendy )
と変数に指定しておき、
menu"(&1)$$aを全角にしますか?", "(&2)しません";
とすればいいかと考えました。
ところが、「$a = gettext( seltopx, seltopy, selendx, selendy )」の置き場が分
かりません。
どこかに挿入すると、マクロを実行したときに必ずその1行後の文に対してエラーが
出ます。
(このマクロのみならず、他のマクロにおいても、変数の置き場(マクロの組み立て
方)がどうも分からないので伺います。)
あるいは、この設定そのものが問題なのでしょうか?
以上です。
上記★問題点1,2,3を解決するには、どうすればいいかお教えいただければあり
がたいです。
どうぞよろしくお願いいたします。
かたつむり
|
|