起動時オプションに追加要望No.34988
TatsuH さん 16/05/08 17:20
 
毎々お世話になります.

【秀丸エディタ】の起動時のオプションに,[自動起動マクロを無効にする]オプショ
ンを設けていただけないでしょうか.
通常私は自動起動マクロ有効で,閲覧モードの起動になるようにしているのですが,
とある全文検索ソフトの検索結果からエディタを開く際,閲覧モードを解除して起動
する必要が出てきました.
そこで,起動時のオプションに[自動起動マクロを無効にする]オプションがあったら
便利と思い,追加の要望をさせていただきます.
ご検討よろしくお願いいたします.

《使用環境》
秀丸エディタ:Version 8.58 32bit版
OS          :Win7 Home Premium SP1 64ビット

[ ]
RE:34988 起動時オプションに追加要望No.34990
h-tom さん 16/05/08 21:12
 

h-tom です。

>そこで,起動時のオプションに[自動起動マクロを無効にする]オプションがあったら
>便利と思い,追加の要望をさせていただきます.
現状で出来る範囲の内容です。

「マクロ使用時は自動起動マクロが動かない」事を利用すれば、「ファイルを開い
たとき」に自動起動マクロを実行させない事は可能です。

何もしない、

 endmacro;

だけのマクロを作っておき、/x オプションで指定します。
(「ファイルを開いたとき」は止められますが、「アクティブ切り替え後」は
動いてしまいますけど。)

  hidemaru.exe /x 何もしないマクロ.mac 開くファイル名

あと、既に指定してある閲覧モードにするマクロ内で、特定のキーが押されてい
たら実行しないようにするという方法もあるかな?

[ ]
RE:34990 起動時オプションに追加要望No.34992
でるもんたいいじま さん 16/05/08 22:13
 
こんばんは。でるもんた・いいじまです。

> 「マクロ使用時は自動起動マクロが動かない」事を利用すれば、
> 「ファイルを開いたとき」に自動起動マクロを実行させない事は
> 可能です。

> 何もしない、
> endmacro;
> だけのマクロを作っておき、/x オプションで指定します。

>  hidemaru.exe /x 何もしないマクロ.mac 開くファイル名

なるほど、そんなウルトラCがありましたか。

私のほうでは、2段階方式を想定していました。
つまり、現在の自動起動マクロをA.macとして、新たに次のような
内容のB.macを用意します。

if ( getenv("HIDEMARU_NOAUTOEXECMACRO")=="" )
    execmacro "A.mac";
else
    endmacro;

で、このB.macのほうを自動起動マクロとして登録します。
A.macを起動するかどうかの判定は、できれば環境変数ではなく
コマンドラインパラメータでやりたいのですが、可能ですかね?

…が、考えてみれば、こんな2段階にするくらいであれば、
既存のA.macの冒頭にこう書けば足りるのですorz
if ( getenv("HIDEMARU_NOAUTOEXECMACRO")!="" )
    endmacro;

> あと、既に指定してある閲覧モードにするマクロ内で、
> 特定のキーが押されていたら実行しないようにするという
> 方法もあるかな?

これは iskeydown() でできそうですね。

ではでは。

[ ]
RE:34990 起動時オプションに追加要望No.34996
TatsuH さん 16/05/09 11:57
 
h-tom 様,返信ありがとうございます.

>「マクロ使用時は自動起動マクロが動かない」事を利用すれば、「ファイルを開い
>たとき」に自動起動マクロを実行させない事は可能です。

秀丸エディタヘルプの自動起動マクロの説明を読むと,《マクロ実行中には自動起動
マクロは呼び出されません》となっていますが,全文検索ソフト側のコマンドライン
で適当なマクロを指定して起動させても,今度は秀丸エディタが起動しない状態にな
ります.
この方法では上手く動作しないようです.

[ ]
RE:34996 起動時オプションに追加要望No.34998
でるもんたいいじま さん 16/05/09 12:46
 
こんにちは。秀丸ユーザの「でるもんた・いいじま」です。

> 秀丸エディタヘルプの自動起動マクロの説明を読むと,《マクロ
> 実行中には自動起動マクロは呼び出されません》となっていますが,
> 全文検索ソフト側のコマンドラインで適当なマクロを指定して
> 起動させても,今度は秀丸エディタが起動しない状態になります.

もしかしてその全文検索ソフト、エディタのファイル名だけを
指定する仕様になっていませんか?

もしそうだとすれば、次のような1行だけのバッチファイルを作って、
そのファイル名をフルパスで全文検索ソフトに入力してみては
どうでしょうか。

start hidemaru.exe /x 何もしないマクロ.mac "%1"

#当たり前のことですが念のため書いておきます。
#・拡張子はbatまたはcmdにする。
#・文字コードはShift_JISにする。
# (もしかしたらはUTF-16のBOMつきでもOKかも;試していません)
#・改行コードはCRLFにする。

なお、この方法だと、数秒間だけコマンドプロンプトの黒塗りの
ウィンドウが表示されます。
全文検索ソフトの設計次第ですが、ショートカットをうまく作れば
最小化状態で起動できるかもしれません。

ではでは。

[ ]
RE:34998 起動時オプションに追加要望No.35001
秀丸担当 さん 16/05/09 14:49
 

自動起動マクロを起動させない方法として、確かに/xでできました。
これでできると思いますが、できないとしたら、起動する側のアプリのコマンド
ラインの記述方法によるのだと思います。
例えば.exeファイル部分を""でくくる必要があったり、なかったり、アプリの解
釈によると思います。

または、/aオプションを使ってマクロに情報を渡し、それで処理を分ける方法も
考えられます。
例えば、以下のようにして、マクロに情報を渡せます。
"C:\Program Files\Hidemaru\Hidemaru.exe" /a "全文検索ソフトから起動" C:\
Folder\Test.txt

マクロ側では、getarg(0)で情報を取得できます。
if( getarg(0) == "全文検索ソフトから起動" ) {
    endmacro;
} else {
    //通常の処理
}

この方法はV8.33から対応しています。

[ ]
RE:34988 起動時オプションに追加要望No.35005
TatsuH さん 16/05/10 22:22
 
h-tom 様,でるもんたいいじま 様,秀丸担当 様,色々返信とお知恵をいただき,
ありがとうございます.

その後,紹介いただいた方法を試してみたのですが,どうにも私のPCでは上手く
動かすことが出来ず,getarg(0)関数で空の値しか取得出来ませんでした.

実は,自動起動マクロには【正規表現によるファイルタイプ別の設定(自動起動
マクロ対応)】というツールを登録して使っており,その中の設定ファイル内の
AutoMacroで自作の【閲覧モードセット&非正規改行コード通知】マクロを起動
させるようにしているため,この辺りが影響しているのかも知れません.

そこで,代わりに環境変数を使って前文検索ソフトの起動中情報をやり取りする
方法もあるなと,AutoHotkeyのスクリプトを作り,そこから環境変数に書き込ん
だものを秀丸マクロ側で取得し,そこから以前に作った【閲覧モード解除で
上書き禁止のトグル】マクロを動かそうとしてみたのですが,どうしてもgetenv
関数で環境変数の値が取れず,半完成の段階で断念しました.

使っている環境変数をシステム環境変数側にして値を書き込んでいるので,ユー
ザー環境変数側に変更すれば良いのかも知れませんが,余り深入りしても得られる
効果がたいしたことなく,手動で自作の【閲覧モード解除で上書き禁止のトグル】
マクロを起動させても目的とする効果は同じなので,今はこのマクロを【秀丸
エディタ】のツールバー上に出して使いやすいようにしています.

それと,昔に登録した【範囲選択開始+単語の選択マクロ】ツールのショート
カットキー操作(Alt+Shift+Z)でも同じ効果が得られ,この方法も操作し易いため,
利用していこうと思っています.

ということで,皆様のおかげで色々勉強させていただきました.感謝いたします.

[ ]
RE:35005 起動時オプションに追加要望No.35006
秀丸担当 さん 16/05/11 16:06
 

/xや/aができない理由はどこかの記述方法などの違いなどの原因があると思うの
ですが、こちらからはわからないです。

これ以上掘り下げるのは得られるメリットから考えると不要かもしれないですが、
もし試される場合は、まずはhidemaru.exeのショートカットをどこかに作成し、
ショートカットを右クリックして「プロパティ」の「リンク先」を書き換えるこ
とで試してみるといいと思います。
それでできることを確認して、全文検索ソフトでの設定を同じようにしてみて違
いを探ると何かわかると思います。

環境変数については、環境変数はプロセスごとに固有なので、環境変数が動的に
変わるとしたら、環境変数を引き継いでいるか、別のものになっているかを把握
するのは難しい場合があると思います。

[ ]
RE:35006 起動時オプションに追加要望No.35007
TatsuH さん 16/05/12 12:09
 
秀丸担当 様,TatsuH です.
追加の返信投稿ありがとうございます.

>もし試される場合は、まずはhidemaru.exeのショートカットをどこかに作成し、
>ショートカットを右クリックして「プロパティ」の「リンク先」を書き換えるこ
>とで試してみるといいと思います。

もう少し調査してみました.
上手く動かないのには以下の3つの原因がありそうです.
---------------------------------------------------------------------
@全文検索ソフト側のコマンドライン指定には/aオプション以外,改造した自動
起動マクロも併せて指定する必要があることに気付かなかったこと.
  【秀丸エディタ】の自動起動マクロは既に登録済で2重登録のようになるが,
全文検索アプリ側からのコマンドラインからマクロを起動した場合には登録済
マクロは起動されない筈.
A自動起動マクロ内から別マクロを呼び出しているため,別マクロ側でgetarg(0)を
取得しようとしても値が既に消えてしまっていること.
  これの回避には,最初のマクロ時点で変数に一時退避が必要.
  しかし,この最初のマクロはezaq氏作成のものをそのまま使っているため
弄りたくないこと.
B全文検索ソフト側のコマンドラインには"/xマクロ名"のオプションを指定し
ても動作しないこと.
  これは全文検索ソフト側の問題?
---------------------------------------------------------------------

ということで,先に投稿した現状のままで使いたいと思います.
ご面倒をお掛けしました.

[ ]