補完中のキー入力
補完中のキー入力について。補完リストがアクティブになっている間は、キー入力に対応する通常のイベント(onKey なんとかとか)は発生しないようになります。そのかわり、onKeyCompletion イベントが発生します。
このイベントに、打たれたキーの名前と修飾キーの状態が渡されます。そいで、どのキーを押されたら~という判断をして、適当な値を返す。
適当な値というのは
var
COMPLETION_NOP = 0,
COMPLETION_CANCEL = 1,
COMPLETION_OK = 2,
COMPLETION_LIST_HOME = 3,
COMPLETION_LIST_END = 4,
COMPLETION_LIST_UP = 5,
COMPLETION_LIST_DOWN = 6,
COMPLETION_LIST_PGUP = 7,
COMPLETION_LIST_PGDN = 8,
COMPLETION_CARET_LEFT = 9,
COMPLETION_CARET_RIGHT = 10,
COMPLETION_CARET_DEL = 11,
COMPLETION_CARET_BS = 12;
というふうに定義してみました。
//補完中に表示不可能なキーが入力されるごとに呼ばれる
f.onKeyCompletion = function (arg, classname, methodname) {
var key = arg('key');
var modifier = arg('modifier');
// Ctrl+P で 1 つ上の項目を選択
if ((key == 'P') && (modifier & KEYMASK_CTRL))
return COMPLETION_LIST_UP;
// Ctrl+N で 1 つ下の項目を選択
if ((key == 'N') && (modifier & KEYMASK_CTRL))
return COMPLETION_LIST_DOWN;
return COMPLETION_NOP;
};
こんなふうにイベント内で使います。どちらかというと C-p、C-n より、古き良きダイヤモンドカーソルのほうが使いやすいかも。
昨日出てきた補完対象範囲の境界を何を以って決めるの? というのを考え中なのですが、ぜんぜんおもいつかなかったりするわけですよ。
by knife37
| 2004-11-23 00:57
| 妄想を申そう
| Top
|