キー操作記録・実行の中のキー操作で等差No.00345
たなべ はじめ さん 99/01/11 17:14
 
初めて投稿します。今回は、質問をさせていただきたくて投稿しました。
#MS-DOS上ではMIFESを使っています。本格的にWindowsに移行しようと思い、出来る
だけこれまでMIFESで行ってきた作業を、Windows上の秀丸で出来るようになろうとい
ろいろと手探りしているところです。
簡単な単純編集作業は、キーボード操作記録・再生で対応しています。ところで、MI
FESにある「等差数列の生成」機能は、このキーボード操作記録・再生の機能と併せ
て用いると非常に便利で、よく使っていました。秀丸でも、きっと類似のことが実現
できるのではないかと、いろいろと模索しましたが、どうも分かりません。
マクロを組んで、それを適宜呼び出しながら編集すると云うことが出来ればよいので
しょうが、特定のマクロに依存しないユーザ変数というものが指定できない(と思い
ましたが)仕様のようで、どうすれば編集作業中に等差数列を生成できるか解決でき
ずにいます。もし、簡単な解決方法があればと思い、お知恵を拝借いただきたくお願
い申し上げます。
具体的には、以下のようなことをしようとしています:
1)あるマクロを組む
2)そのマクロをマクロ登録する
3)キー操作記録・再生の手順の中で、登録した操作を使う
実現したいことは、上述で作成したマクロで、操作するたびに増える数字を挿入して
くれるマクロを組むことです。原始的な方法としては、ある特定のファイルを開いて、
そこに数字を保存しておいて、その数字をマクロ実行毎に編集(数字を増やす)し、
その後元のファイルの画面に戻って数字を貼り付けるという方法もあろうかと想像し
ていますが、実現したいことに比して大げさであまりエレガントではないような気も
します。以下に私が試みで作成したマクロを掲載します。多分非常に「鈍くさい」マ
クロだと思いますが、私に思いつけたのはこの程度です。もう少しエレガントな(早
く動く)解決方法はありませんでしょうか?また、このマクロは、何かの機会に誤動
作するかも知れませんので、心配です。

//等差数列の初期値は、秀丸実行ファイルのあるディレクトリと
//同じディレクトリに置いたtmp_incl.txtというファイルに値を
//記入して保存・終了することで、設定してください。
$filename = filename;
openfile "/h tmp_incl.txt";
copyword;
beginclipboardread;
$incl = getclipboard;
#incl = val($incl);
#incl = #incl + 1;
$incl = str(#incl);
deleteline;
insert $incl;
save;
setactivehidemaru findhidemaru($filename);
closehidemaru findhidemaru("tmp_incl.txt");
paste;
endmacro;

以上

[ ]
RE:00345 キー操作記録・実行の中のキー操No.00346
たなべ はじめ さん 99/01/11 17:27
 
自己フォローです。

>具体的には、以下のようなことをしようとしています:
>1)あるマクロを組む
>2)そのマクロをマクロ登録する
>3)キー操作記録・再生の手順の中で、登録した操作を使う

と、書いておきながら、もっと早く確認すべき事項がありました。
#事前に確認すればよいものを。。。
どうもマクロ呼び出し(cntl+1〜0)の操作は、キー操作記録・再生では、再現され
ず、
そこで最終的に得られた編集結果(すなわち最初のマクロ呼び出しで得たのと同じ数
字)がペーストされてしまうのですね。完全に降参です。
どなたか、良いお知恵を。。。。。

[ ]
RE:00345 キー操作記録・実行の中のキーNo.00347
ひろ さん 99/01/11 18:55
 
 たなべ はじめさん今日は、ひろです。
> クロだと思いますが、私に思いつけたのはこの程度です。もう少しエレガントな(早
> く動く)解決方法はありませんでしょうか?また、このマクロは、何かの機会に誤動
 elegant かどうかは解りませんが、たなべさんの macro を見て設定値に 1
加えたものを出力する macoro を組んでみました。(初項等の設定入らないの
かな?)
//--------- input_plus_1.mac ------------------------------------
main:
  call get_macro_path;
  $$ini_file=$$return+"input_plus_1.ini";
  ##num=getininum($$ini_file,"ini_num","num")+1;
  insert str(##num);
  writeininum $$ini_file,"ini_num","num",##num;
  endmacro;

get_macro_path://秀丸のマクロ path を取得
  $$macro_path=getinistr("hidemaru.ini","Env","MacroPath");
  if($$macro_path=="")$$macro_path=hidemarudir;
  return $$macro_path+"\\";
//----------------------------------------------------------------

[ ]
RE:00347 キー操作記録・実行の中のキーNo.00348
たなべ はじめ さん 99/01/11 21:29
 
ひろさん 早速のフォローありがとうございました。

> たなべ はじめさん今日は、ひろです。
> elegant かどうかは解りませんが、たなべさんの macro を見て設定値に 1
>加えたものを出力する macoro を組んでみました。(初項等の設定入らないの
>かな?)

iniファイルを用いると、随分とデータのやりとりがスムーズになるのですね。
大変勉強になります。

ところで、先の自己フォローでも書きましたが、面白いこと(困ったこと)に気づき
ました。

当初の目的であるところの、「マクロ登録し、キー操作記録・再生の手続きの中で呼
び出して利用する」ということで考えると、以下の問題が生じます:
(1)私の作った変なマクロだと、最初にペースとされた文字列が
   反復実行される(恐らくクリップボードの中の文字列をそのま
   まペーストしているのでしょう)
(2)ひろさんの作ったマクロだと、そのプロセスが無視される

マクロ登録したマクロを呼び出す手続きは、キー操作記録・実行の中では無効になる
のでしょうか(でも、そうだとすると、(1)の結果が微妙に解釈できません)。ひ
ろさんの作成したマクロでは、変数にサブルーチン的なニュアンスの変数が用いられ
ていましたので(この辺実は全く理解できてないです)、ちょっと解決法を見た気が
して喜んだのですが、上述のように「無視される」という結果になりました。

秀丸の仕様上私のもくろみはそもそも不可能なのでしょうか。。。

[ ]
RE:00348 キー操作記録・実行の中のキーNo.00349
ひろ さん 99/01/12 13:15
 
 たなべ はじめさん今日は、ひろです。
> マクロ登録したマクロを呼び出す手続きは、キー操作記録・実行の中では無効になる
 macro から別の macro を利用するには、execmacro を使うので、「マクロ」
→「マクロ実行」からやれば、「キー操作記録・実行」で出来ると思います。
(確認していませんが(^^;。)

[ ]
RE:00349 キー操作記録・実行の中のキーNo.00364
たなべ はじめ さん 99/01/21 16:20
 
フォローありがとうございます。

>> マクロ登録したマクロを呼び出す手続きは、キー操作記録・実行の中では無効になる
> macro から別の macro を利用するには、execmacro を使うので、「マクロ」
>→「マクロ実行」からやれば、「キー操作記録・実行」で出来ると思います。
>(確認していませんが(^^;。)

マクロ実行でキー操作記録・再生でしてみました。こういう手もあるんですね。事前
にこの場合も、確かめてみるべきでした。
が、「他の秀丸がマクロ実行中です」という、今ひとつ理解しきれない警告表示が出
てしまいます。別の秀丸を立ち上げてはいません。
恐らく自分のキー操作記録・再生のプロセスがマクロを参照しようとしたときに怒ら
れているのだと思いますが。。。

[ ]
RE:00364 キー操作記録・実行の中のキーNo.00365
秀まるお さん 99/01/21 18:49
 
> 「他の秀丸がマクロ実行中です」という、今ひとつ理解しきれない警告表示が出
> てしまいます。別の秀丸を立ち上げてはいません。

 そもそも「キー操作の記録」の中でマクロを実行することはまったく想定されてな
いような気がします。

 というわけで、バグ扱いとして調べてみます。

----------
 っと調べてみたら、やはり記録中のマクロ実行はうまく記録されていませんでした。

 他にも、例えば「その他・プログラム実行...」とか、パラメータを伴って記録し
ないといけないコマンド類が、一部うまく記録されない場合があるようです。しかし、
それら全部を記録可能なように直すのは大変なので、とりあえずマクロ実行だけ記録
できるようにします。

 カラー秀丸のβ12から直ります。


[ ]