単語補完後のマクロ実行についてNo.11470
プックン さん 06/12/01 00:33
 
マクロライブラリに登録されているIKKIさん作成のCompleteXを利用させてもらって、
単語補完後にマクロを実行して文字列の置換を実行して利用しています。具体的には
"CompleteXプラグイン KWDCHG_P Ver2.01"です。
秀丸で標準で単語補完が実施できるようになると、すごく便利になりそうな気がして
とてもわくわくしています。
単語補完後に単語補完文字列を対象に置換処理を実施したいのですが、単語補完後に
マクロ実行ということはできるのでしょうか?。
"マクロ-自動実行"をみてみても、単語補完後にマクロを実行するようなかんじのチ
ェックは見当たりませんでした。
やはりこのような動作はできないのでしょうか?。

[ ]
RE:11470 単語補完後のマクロ実行についてNo.11490
秀丸担当 さん 06/12/01 13:23
 

>単語補完後に単語補完文字列を対象に置換処理を実施したいのですが、単語補完後に
>マクロ実行ということはできるのでしょうか?。
>"マクロ-自動実行"をみてみても、単語補完後にマクロを実行するようなかんじのチ
>ェックは見当たりませんでした。
>やはりこのような動作はできないのでしょうか?。

単語補完後であれば比較的簡単にできると思います。
単語補完文字列を対象にということは、新しく追加された geteventparam() で、
どこからどこまでが補完されたかというのがわかるといいでしょうか?

[ ]
RE:11490 単語補完後のマクロ実行についてNo.11521
プックン さん 06/12/03 17:09
 
秀丸担当 さん、こんにちわ。

geteventparamというのがどのようなものか理解できていませんが、
私が希望するのは、例えば下記のような文字列を単語補完で入力されたとします。
例.
dupline
補完処理実行後、geteventparamでマクロで補完した文字列を取得して
変数$$strに代入します。
 $$str = geteventparam ;
補完後はカーソルが補完した文字列の後ろにあるので、その文字列に対して
置換ができればいいと思っています。
処理1.
 //単語補完した文字列を取得
 $$str = geteventparam ;
 //単語補完した文字列に対応した、置換文字列を取得する。
 ここに、iniファイルなどから単語補完文字列に対応した置換文字列を
 取得する処理を実施する。
 //$$strに単語補完を実施した文字列が格納されているので、
 //上方向に置換を実施する。
 replaceup $$str, 置換文字列 ;

マクロから単語補完処理を開始できても便利かなと思います。
 単語補完実施コマンド
 単語補完実施コマンドを処理したあとに、
 処理1.で記述した処理を実施する。

処理1.の代わりに処理2.のようなものでもいいかもしれません。

処理2.
 //単語補完した文字列を取得
 $$str = geteventparam ;
 //単語補完した文字列に対応した、置換文字列を取得する。
 ここに、iniファイルなどから単語補完文字列に対応した置換文字列を
 取得する処理を実施する。
 //置換処理ではなく、挿入処理で単語補完した文字列を置き換える。
 beginsel;
 //左に移動(単語補完の長さ)
 left strlen(strlen($$str));
 //単語補完した文字列を削除する。
 delete ;
 //単語補完に置き換える文字列を作成する処理を実施する。
 省略
 //その後、挿入する。置換後の文字列を$$repとする。
 insert $$rep ;

[ ]
RE:11521 単語補完後のマクロ実行についてNo.11535
秀丸担当 さん 06/12/04 12:47
 

>geteventparamというのがどのようなものか理解できていませんが、
>私が希望するのは、例えば下記のような文字列を単語補完で入力されたとします。
>例.
>dupline
>補完処理実行後、geteventparamでマクロで補完した文字列を取得して
>変数$$strに代入します。
> $$str = geteventparam ;

例をありがとうございます。
ヘルプに書いてないのでなんですが、geteventparamは関数で、自動起動マクロ
の種類によって意味が違い、どのような条件によって自動起動マクロが実行され
たかを知るために用意しました。
やるとしたら、以下のような感じになると思います。
 #x1 = geteventparam(0);
 #y1 = geteventparam(1);
 #x2 = geteventparam(2);
 #y2 = geteventparam(4);
 $str = gettext(#x1,#y1,#x2,#y2);

[ ]
RE:11535 単語補完後のマクロ実行についてNo.11580
プックン さん 06/12/05 21:28
 
>やるとしたら、以下のような感じになると思います。
説明ありがとうございました。
なんとなく、自分が希望したい動作が出来そうな感じです。
よろしくお願いいたします。

[ ]
RE:11580 単語補完+マクロNo.11582
Iranoan さん 06/12/05 23:14
 
 秀丸担当さん、プックンさん今日は、Iranoan です。
> 単語補完後であれば比較的簡単にできると思います。
> 単語補完文字列を対象にということは、新しく追加された geteventparam() で、
> どこからどこまでが補完されたかというのがわかるといいでしょうか?
 単語補完後などとは関係なく、getclipboard 文もしくは、getsearchhist()
関数のように、一つづつ補完候補の文字列を取得する関数、や menuarry 文の
ように、単語の補完候補を制御できる listarry といった文があると、制御が
どうとでもなり便利な記がしますがどうでしょう。現在の menuarry 文だと表
示したままキー入力で補完候補の絞り込みが出来ないんですよね〜。

[ ]
RE:11582 単語補完+マクロNo.11616
秀丸担当 さん 06/12/06 17:15
 

> 単語補完後などとは関係なく、getclipboard 文もしくは、getsearchhist()
>関数のように、一つづつ補完候補の文字列を取得する関数、や menuarry 文の
>ように、単語の補完候補を制御できる listarry といった文があると、制御が
>どうとでもなり便利な記がしますがどうでしょう。現在の menuarry 文だと表
>示したままキー入力で補完候補の絞り込みが出来ないんですよね〜。

ううむ、なんだかどんどん話だけが先行していていっている気もしますが、ネタ
として参考にしたいと思います。

[ ]
RE:11616 単語補完+マクロNo.11639
Iranoan さん 06/12/07 17:20
 
 秀丸担当さん今日は、Iranoan です。
> ネタ
> として参考にしたいと思います。
 それで十分です。

[ ]