秀丸からマクロに引数を渡すことは可能?No.10455
楽をしたい さん 24/09/10 23:46
 
もう一つ教えてください。

秀丸からマクロを呼び出すとき、マクロに引数を渡すことはできますか?

マクロ内なら
call ラベル名 [パラメータ1, パラメータ2, ・・・]
外部マクロなら
execmacro 外部マクロ名 [パラメータ1, パラメータ2, ・・・]
で引数を渡せるように、秀丸から直接引数を渡すことは可能なのかな?
と思った次第です。

宜しくお願いします。

[ ]
RE:10455 秀丸からマクロに引数を渡すことNo.10456
こみやんま さん 24/09/11 00:08
 
>もう一つ教えてください。
>
>秀丸からマクロを呼び出すとき、マクロに引数を渡すことはできますか?

うーんこれはどっちのことかな?

■ブックマーク的ないみなら
「とあるマクロA」を引数付きで呼び出すような「ブックマーク的」なものはあるの
か? という意味なら、
ブックマークに mac: を付ければかのうかと。
https://help.maruo.co.jp/hidemaru/html/070_Env_Bookmark_Dlg.html

■秀丸レベルの呼び出しの意味なら
秀丸にマクロファイルAを呼び出す際に、引数を付けられるのか?
という意味なら、getargは元々それに対応しています。
https://help.maruo.co.jp/hidemac/html/070_Function_getarg.html



[ ]
RE:10455 秀丸からマクロに引数を渡すことNo.10457
igus さん 24/09/11 03:14
 
私は ruby を使って秀丸マクロを書いているんですが同じようなことで悩んでたこと
があり、なんとなくやりたいことが分かるのですが、見当違いであれば流してくださ
い。

マクロの数が増えてきてキーボードへの割当てが足りないとか似た機能の物をまとめ
たい場合は menu や mousemenu を使うと便利です

//mousumenu.mac
setmenudelay 700;
mousemenu
"&h hoge",
"&f fuga",
"&p piyo";
#r=result;
if(#r==0){endmacro;
}else if(#r==1){message "hoge";
}else if(#r==2){message "fuga";
}else if(#r==3){message "piyo";
}

> 秀丸からマクロを呼び出すとき、マクロに引数を渡すことはできますか?

というのはおそらく秀丸レベルでの呼び出しで秀丸から Rust を呼んだあと hidemar
u /x でマクロを呼びたいんじゃないかと思います。こみやんまさんのレスの通り一
応は出来るのですが、マクロは一つしか動かせないのでrunsyncで待機させている場
合だと「他のマクロが実行中です」とか言われてマクロが起動できなかったりします。
Rustで処理する時に使い捨てのマクロファイルを作って秀丸マクロに戻ったあとでそ
のマクロを呼ぶなどしてできるだけ一本線で繋がるようにした方が確実だと思います。
ruby の場合ならこんな感じ。

//ruby.mac
runsync2 "rubyw -x "+currentmacrofilename;
execmacro directory + "\\tmp.mac";
/*
#/
#! ruby
File.write("tmp.mac",%Q|message "ruby";|)
__END__
*/


[ ]
RE:10457 秀丸からマクロに引数を渡すことNo.10458
楽をしたい さん 24/09/12 02:58
 
こみやんま さん

マクロメニューからの呼び出し時に引数を指定できないかと考えています。

目的はマクロファイルの数を減らしたいのが一つ。
もう一つはキャッシュファイルはマクロから呼ばれたマクロだけ制限の回避。

直前の質問でマクロファイル中の任意のサブルーチン呼び出しが可能なのが判ったの
で同一ファイルに同居できるマクロは一つに纏めてファイルを減らしてしまおう。
と言うのが一つ。

キャッシュファイルはマクロから呼ばれたモノ制限があるので普通に考えると2つ作
る必要がある。
例えば3つのマクロが必要ならA-main.mac、A-sub.mac、B-main.mac、B-sub.mac、、C
-main.mac、C-sub.macと言う具合に。
そこをX.macにA-sub.mac、B-sub.mac、C-sub.macのどれを呼び出すかを秀丸から直接
引数で指示してキャッシュできないマクロを減らしてしまおう。
と言うのがもう一つです。

でもブックマークも便利で面白そうですね。
貴重なヒントをありがとうございます。



igus さん

ruby は未経験なのですが、mousemenuなどの入力系コマンドのヒントを頂けて助かり
ます。
マクロメニューからの呼び出ししかできないと思っていたのですが、こんな方法もあ
るんですね。
貴重なヒントをありがとうございます。



あ〜。見事に寝落ちしてしまった。睡魔が吹っ飛んで頭スッキリ!こんな状態で眠れ
るのかな〜。

[ ]