« ハリー・ポッターと謎のプリンス | トップページ | この一ヶ月半で思ったこと »

Peggyでインクリメンタルサーチスクリプトを投稿しました

以前作成したPeggyのインクリメンタルサーチスクリプトに関連して、JunさんがPeggy4.52で必要な機能を実装してくださいましたので、対応したものを投稿しました。
Peggyの掲示板にも書いたのですが、以前公開したものと比較して以下の点で変更されています。

a.入力語が見つからなかったときの動作を改善しました。
b.Shift+Enterキーで、前の候補を検索できるようになりました。
c.矢印キー、Home/End/PagUp/PageDown/Deleteの何れかのキーを押すと、インクリメンタルサーチを終了し、その後キーに応じた動作を行うようにしました。

aの変更は、JunさんがMocaScriptにDialog.getCurSel()、Dialog.setCurSel()の改良でカスタムダイアログボックスのEDITコントロールのカーソル位置を設定できるようにしてくださったおかげで実現できたもので、使い勝手の上で非常に重要な改善です。
というか、この改善がないとインクリメンタルサーチとしてほとんど使い物になりません(^^;

bの変更は、EDITコンポーネントにonKeyイベントが追加され、Shift等の修飾キーも取れるようになったおかげで実現できました。View.searchメソッドが前から後ろの方向にしか検索できない関係で、一度view内の検索語を全検索するという非常に効率の悪い実装になっているのですが、Mocascriptが十分高速なおかげでさほど気にならないと思います。

cの変更もonKeyイベントが追加されたことによる恩恵です。今まではインクリメンタルサーチの解除にESCキーを押す必要があったのですが、矢印キー等でも解除されるようになりした。

他につけようと思えばつけられる機能はあるけど、今のところはこのくらいかな。Emacsのインクリメンタルサーチを目指して作成したので、おおよそ近いものにはなったと思いますが、onKeyイベントが全部のキー入力を取れるわけではない関係上、Ctrl+Sで次の候補に行く等の機能は実現できませんでした。現状ではこれで十分だと思いますし、必要だと思ったら要望していこうと思います。

でもこのスクリプト、多分Mocascriptのあいまい検索機能を使った初めてのスクリプトじゃないかな。インクリメンタルサーチであいまい検索ができるのはなかなか新鮮です。Migemoに対応できたらよかったんだけど、Peggyの検索語強調表示の方が対応していないからあんまり実用的じゃなさそう。そもそも、プログラミングの用途だと日本語でインクリメンタルサーチすること自体あんまりないですし。

このスクリプトは、カスタムダイアログボックスに入力されたキーイベントでPeggy側のviewを操作するという手法で作られているのですが、インクリメンタルサーチ以外でもこの手法を活用できる例はあるかもしれません。思いついたらいろいろ試してみようと思います。

|

« ハリー・ポッターと謎のプリンス | トップページ | この一ヶ月半で思ったこと »

「パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/1789/12028109

この記事へのトラックバック一覧です: Peggyでインクリメンタルサーチスクリプトを投稿しました:

« ハリー・ポッターと謎のプリンス | トップページ | この一ヶ月半で思ったこと »