autocomplete の起動条件についてNo.11750
IKKI さん 06/12/13 02:03
 
IKKI です。こんにちは。

autocomplete を応用して連続的な入力アシスト機能を作ろうとすると、
ユーザーがまだ何も入力していない状態であっても、その文脈で可能な
すべての候補を提示したくなります。

例えば、拙作 CompleteTag がそのような動作をしています。
http://hide.maruo.co.jp/lib/macro/completetag304.html

現在の autocomplete 文は先行する文字列がない状態では何もしません。
候補を自動表示するときはこの動作が適切ですが、単語補完コマンドや
autocomplete 文によって明示的に単語補完を起動したときは、
先行する文字列がない状態でも候補を表示していいのではないでしょうか。

ご一考いただければと思います。

[ ]
RE:11750 autocomplete の起動条件についNo.11772
秀丸担当 さん 06/12/13 17:10
 

>autocomplete を応用して連続的な入力アシスト機能を作ろうとすると、
>ユーザーがまだ何も入力していない状態であっても、その文脈で可能な
>すべての候補を提示したくなります。
>
>例えば、拙作 CompleteTag がそのような動作をしています。
>http://hide.maruo.co.jp/lib/macro/completetag304.html
>
>現在の autocomplete 文は先行する文字列がない状態では何もしません。
>候補を自動表示するときはこの動作が適切ですが、単語補完コマンドや
>autocomplete 文によって明示的に単語補完を起動したときは、
>先行する文字列がない状態でも候補を表示していいのではないでしょうか。

いちおう、範囲選択をするとその文字を取り込んで補完をします。
もし自動起動マクロで単語補完前があれば、直前にマクロで範囲選択してから単
語補完を実行するというような使い方もできるかもしれません。これも未定です
が。

手動で単語補完した場合は、記号1つの場合は取り込むようにしたのですが、こ
れと同様に空白よりも前の単語や、日本語もできたらいいと思います。というネ
タとしておきたいと思います。

[ ]
RE:11772 autocompleteの起動条件についてNo.11842
IKKI さん 06/12/18 03:21
 
IKKI です。こんにちは。

> 手動で単語補完した場合は、記号1つの場合は取り込むようにしたのですが、こ
> れと同様に空白よりも前の単語や、日本語もできたらいいと思います。というネ
> タとしておきたいと思います。

すみません、うまく伝わらなかったようです。

要望は「長さ0の文字列を取り込んで補完」です。

たとえば行頭にカーソルを置いた状態で手動で/マクロで単語補完を実行したら
リストボックスが出てきてすべての単語を表示してほしいです。

現状では何か1文字以上書いてからでないとリストボックスすら出てこないので、
自分が何を書きたいのか(書けるのか)わからない状態でヘルプ代わりに補完を
使う(ようなマクロを作る)ことができません。

手動で/マクロで単語補完を実行するということは、ユーザーはその時点で
「何かしたい」という意思を秀丸に伝えています。なのに秀丸から
「何もしない」という反応を返されると、ユーザーはがっかりします。

ということで、改めてご検討をお願いしたいと思います。

[ ]
RE:11842 autocompleteの起動条件についてNo.11857
秀丸担当 さん 06/12/18 12:37
 

>すみません、うまく伝わらなかったようです。
>
>要望は「長さ0の文字列を取り込んで補完」です。
>
>たとえば行頭にカーソルを置いた状態で手動で/マクロで単語補完を実行したら
>リストボックスが出てきてすべての単語を表示してほしいです。

そういう意味でしたか。
とりあえず手元のものでやってみたらできましたが、記号が直前にあるときはそ
の記号一文字を取り込むという動作があります。
ついでに日本語もやろうとしています。
カーソル位置によって記号を取り込むのか、日本語を取り込むのか、それとも全
部の単語なのか、一貫してないというか、状況によって変わりすぎという気もし
ますが、とりあえず次のβ版でやってみます。

[ ]
RE:11857 autocompleteの起動条件についてNo.11876
IKKI さん 06/12/18 21:54
 
IKKI です。こんばんは。

> とりあえず手元のものでやってみたらできましたが、記号が直前にあるときはそ
> の記号一文字を取り込むという動作があります。
> ついでに日本語もやろうとしています。

いろいろあると思いますが、少なくとも下記のマクロは
「長さ0の文字列を取り込んで補完」の動作をしてほしいです。
よろしくお願いします。

escape;
beginsel;
endsel;
autocomplete #flags1, #flags2, #flags3, $dicfile;

> カーソル位置によって記号を取り込むのか、日本語を取り込むのか、それとも全
> 部の単語なのか、一貫してないというか、状況によって変わりすぎという気もし
> ますが、とりあえず次のβ版でやってみます。

何かとても大変なことになっていきそうですね。

私見ですが、次の2つの設定をファイルタイプ別に用意すれば、手動かどうかで
動作を分けたりしなくても大抵のケースに対応できそうな気もします。

(1) 単語の一部と見なす記号を指定 or 単語の区切りとなる記号を指定

 前者の例: $%&/:@_
 後者の例: !"#'()*+,-.;<=>?[\]^`{|}~ および半角スペース

 ・日本語はこの設定に影響されない

(2) 単語と見なすパターンを正規表現で指定

 HTML用の例: (</?)?[a-zA-Z][a-zA-Z0-9:._-]*
 ドットシッタックスの例: \.?[a-zA-Z_][a-zA-Z0-9_]*

 ・カーソルがパターン上にあれば、マッチする文字列を取り込んで補完
 ・フリーフォーマット辞書からはパターンにマッチする文字列を収集
 ・ファイルタイプ別に標準的なパターンをプリセットとして用意しておく
 ・日本語はこの設定に影響されない

[ ]
RE:11876 autocompleteの起動条件についてNo.11883
秀丸担当 さん 06/12/19 09:16
 

>いろいろあると思いますが、少なくとも下記のマクロは
>「長さ0の文字列を取り込んで補完」の動作をしてほしいです。
>よろしくお願いします。
>
>escape;
>beginsel;
>endsel;
>autocomplete #flags1, #flags2, #flags3, $dicfile;

範囲選択のときは了解しました。

>何かとても大変なことになっていきそうですね。
>
>私見ですが、次の2つの設定をファイルタイプ別に用意すれば、手動かどうかで
>動作を分けたりしなくても大抵のケースに対応できそうな気もします。
>
>(1) 単語の一部と見なす記号を指定 or 単語の区切りとなる記号を指定
>
> 前者の例: $%&/:@_
> 後者の例: !"#'()*+,-.;<=>?[\]^`{|}~ および半角スペース
>
> ・日本語はこの設定に影響されない
>
>(2) 単語と見なすパターンを正規表現で指定
>
> HTML用の例: (</?)?[a-zA-Z][a-zA-Z0-9:._-]*
> ドットシッタックスの例: \.?[a-zA-Z_][a-zA-Z0-9_]*
>
> ・カーソルがパターン上にあれば、マッチする文字列を取り込んで補完
> ・フリーフォーマット辞書からはパターンにマッチする文字列を収集
> ・ファイルタイプ別に標準的なパターンをプリセットとして用意しておく
> ・日本語はこの設定に影響されない

何かとても大変なことになっています。
どんどん複雑なことになって、使っていただける人ははたして理解できるのか心
配です。
(2)の正規表現はオーバーヘッドが増えるので高速なのが損なわれそうなので避
けたいです。もしやるとしたら(1)のように文字の羅列で指定するかです。
詳細のさらに詳細でも付けようかと…
単語のカスタマイズは、やるかどうかわかりません。

[ ]