|
>(1) 単語補完コマンドと同等。設定に従って候補収集から補完まで行う
>(2) 候補提示 UI だけを呼び出す。前処理、設定、後処理はマクロで行う
現状でマクロ実行をすると補完候補を強制的に消すようにしているのですが、マ
クロで単語補完を出すと、マクロ実行で候補を消すという動作と矛盾するのでど
うしたものかと考えていました。
でもやっぱりできたほうがいいですね。
autocomplete;
autocomplete #flags1, #flags2, #flags3, $dicfile;
#flags1は表示方法
#flags2は検索対象など
#flags3は検索方法など
$dicfileは辞書ファイル
とか考えてました。
が作ってません。
単語補完は基本的に非同期の並行処理なので、
>// 候補提示
>suggest $dicfile, #option_flags;
>
>// 後処理
>if (result == -1) {
といった感じにできるかどうか、簡単なようですがこれが難しそうです。
単語補完の文を実行したらマクロは即終了といった単発呼び出し専用ならば比較
的簡単だとは思います。
>(3) 単語補完前後にマクロを自動起動する
>---------------------------------------
>// 自動起動マクロ
>if (geteventparam() == 補完前) {
> // 前処理
> writeregnum "HKCU", ..., "AutocompConfig", ...;
> // どうやって補完候補を制御するか?
>}
>if (geteventparam() == 補完後) {
> // 後処理
>}
>---------------------------------------
自動起動マクロの「カーソル移動後タイマー」から「キャッシュファイルを…」
の間の空間には、「リアルタイム検索」と「単語補完前」を想定して作っていた
のですが、V6.50ではやめました。
「リアルタイム検索」は検索ダイアログの検索ボックス編集中に適時呼ばれ、入
力した文字に対してsearchbufferを変化させるとか。
たとえば「ai」と入力すると、searchbufferを「[ai|あい|愛]」にフィルタ的に
変換してくれるマクロを想定とか。
「単語補完前」は、補完するために取り込む範囲をあらかじめ指定するか、単語
補完の代替となるマクロをすり替えるとか。
たとえば、
if( geteventparam(0) == 補完前 ) {
execmacro "completex.mac";
seteventnotify 1; //標準の単語補完の実行を中断
}
とか
if( geteventparam(0) == 補完前 ) {
selectline;
seteventnotify 2; //範囲選択を取り込んで補完
}
というのを実際作ってみたりしましたが、ボツにしました。
|
|