|
IKKI です。こんにちは。
autocomplete 文を使ってみました。
これを使って入力補助系マクロを作ろうとすると、次の情報が欲しくなります。
(1) 補完された文字列
(2) 最後に入力した文字/キー
これらの情報を何らかの形で取得できるようご検討いただければと思います。
▼補足
(1)について
autocomplete 文は何番目の候補が選ばれたかを result で返してくれます。
turukame.3:11472 で私が示した例がそうなっていたからかもしれませんが、
位置だけでなく文字列自体がわからないと嬉しくなかったです。(^^;
(2)について
たとえば「auto」という候補を選んだ状態で Enter を押すと「auto」が、
「;」を押すと「auto;」が補完されます。両者を区別するために、
ユーザーが最後に何を入力して補完を終えたかを知りたいです。
最後に入力したキーは keypressed で取得できますが、日本語キーボードと
英語キーボードでは文字が違うので、最後に入力された文字によって
処理を分岐したりしようとすると難しいことになりそうです。※
▼私案
●案1 autocomplete 文を関数にする
$compstr = autocomplete(#flags1, #flags2, #flags3, $dicfile);
#lastchar = result; // 最後に入力した文字コード
…関数が result を書き換えるのは変?
●案2 補完された文字列を保持するキーワードを追加
autocomplete #flags1, #flags2, #flags3, $dicfile;
#lastchar = result; // 最後に入力した文字コード
$compstr = lastcompletion; // 補完された文字列
●案3 補完された文字列の長さを result で返す
autocomplete #flags1, #flags2, #flags3, $dicfile;
$compstr = gettext2(column - result, lineno, column, lineno);
…最後に入力した文字はどうする?
---------------------------------------------------------------------
※ 以下のようにすれば可能かもしれませんが、未検証です。
if (最後のキーが(Shift+)文字キー && IMEがOFF) {
$lastchar = rightstr(補完された文字列, 1);
} else {
$lastchar = ""
}
|
|