2006/4/11 (火) 00:13:07 fon  
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
[4399] Re13:キーワードヘルプ拡張
スレッドを分けました。(>>dev:4298

げんたさん、試していただいてありがとうございます!
ご指摘頂いた箇所を修正したパッチを新たに作成しました。
■1.5.9.91beta版 「キーワードヘルプ拡張」パッチ
 ブリーフケース/Developer/Source
 →sdiff_2006-03-17_KeyDictSelect_v4.zip

■v3からの差分
1.既存のキーワードヘルプ機能を残したままになっていたので旧メニュー
  を削除
2.辞書ヒット時に右クリックしたときの1行目の機能名を、ヘルプの説明
  内容そのものから「キーワードの説明をクリップボードにコピー」に変更
3.「ヒットした次の辞書も検索」がONで「辞書を開く」したとき、最後に
  ヒットした辞書へジャンプしていたのを、最初にヒットした辞書にジャ
  ンプするように修正

■作成にあたり
>右クリックメニューのヘルプで、肝心の検索結果がはみ出して見えない.
この機能は既に実装されていたのですが、本来キーワードヘルプのToolTipの説明をクリップボードにコピーする仕様のようで、やはり自分も判りづらく感じましたので「キーワードの説明をクリップボードにコピー」に変更しました。
>サーバに問い合わせるとか,指定のURLに問い合わせるとかできるとさらに用途が広がりそうな感じもしますね.
これが出来たら素晴らしいです!Web系のアプリはかなり疎いので、得意な方がいらっしゃれば是非お願いしたいです。自分も勉強してみます。

■ユースケース(一部、げんたさんコメント流用)
▼英語辞書として活用する場合
1.GENE95などをサクラ辞書形式に変換してキーワード辞書登録する。
2.英文訳を表示させる際、共通設定の「キャレット位置の...」をONにしていれば、「Ctrl+右」キーで次々と訳を表示させながら読み進めることができる。
3.[共通設定]の[支援]に追加された「キャレット位置の...」は右クリックでの検索と関連していて、
 OFF:選択したときキーワードヘルプをToolTip形式で表示、
 ON :選択していないときも、単語を自動的に検出してキーワードヘルプをToolTip形式で表示、する。
また、辞書ヒットしている場合、右クリックメニューに、「キーワードの説明をクリップボードにコピー」する機能と、ヒットした「辞書を開く」機能があり、説明文の修正や、編集している文書への適用が容易に行える。
4.辞書に新規に用語を登録したい場合、メニューから直接辞書を開く機能は持っていないが、各辞書固有のキーワードを登録しておくことで、そのキーワードをトリガに「辞書を開」けば良い。
5.英語固有の変化形「s, es, ed, ing, tion, ist, er, less , etc..」など辞書ヒットしない単語でも、「選択範囲で前方一致検索」をONしていれば、選択範囲のカーソルを進めることでインクリメンタルサーチできるため、類似の単語の意味から類推できる。
6.欲しい説明が複数辞書で重複している場合、「ヒットした次の辞書も検索」すれば、意味の比較あるいは欲しい説明を見つけやすくなる。

※10万行を超える辞書などもあり、処理速度を気にしていましたが、2回目以降の検索では勝手にキャッシュに入るらしく、さほどストレスを感じることなく使用できます。(さすがに和英辞郎50MBなどになると、もたつきが激しいですが)

▼ナレッジデータベースとして
1.CVSで各人・各テーマごとなどの辞書を管理する
2.各位の調査案件をキーワードヘルプとしてサクラに複数登録し、随時更新する

2006/4/16 (日) 17:06:28 fon  
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727) Sleipnir/2.30
[4411] Re14:キーワードヘルプ拡張
キーワードヘルプ機能拡張で、一通り欲しい機能を実装できましたので、懸案事項を整理しておきます。
ご意見・提案がありましたら、よろしくお願いします。

■キーワードヘルプの拡張で気になっている事項

1.マウスオーバで辞書検索するオプションもやった方がいいか?
 類似の機能で「キャレット位置の単語を辞書検索」を実装したが、2アクション(マウス移動+クリック)必要なため、標準の(マウス移動+ダブルクリック)と比べて大差がないのでは?
 ということで、マウスオーバだけでツールチップを表示する検討をしましたが、OnMOUSEMOVEへの単純な検索機能組み込みでは、パフォーマンスの面で問題があり、現在作業を止めています。

2.キーワードヘルプ関係のオプションはどこに置くのが適当か?
 キーワードヘルプ機能のオプション(チェックボックス)は、次のように現状5つありますが、散らかっているように見えなくもないため、思案中です。
 共通設定->支援タブ
  1.キャレット位置の単語を辞書検索
 タイプ別設定->キーワードヘルプタブ
  2.キーワードヘルプ機能を使う
  3.ヒットした次の辞書も検索
  4.キーワードも表示
  5.選択範囲で前方一致検索

3.キーワードヘルプだけ拡張したが、他の支援機能はそのままで良いか?
 支援機能なくせにキーワードヘルプだけ新たなタブへ移動したのですが、そうするとhokanやmigemoなどはそのままで良いかなと思った次第です。
 複数辞書化をどのように実現するか、とか必要性とかパフォーマンスとか、自分のスキル的な問題はありますが、一応問題提起として。

4.エディタ上から抽出した文字列に対応する文字列をツールチップorメニューに表示するという枠組みで考えて,サーバ・URLに問い合わせるように。

5.ツールチップウィンドウの自動折返し幅を、現在の画面解像度幅から、画面右端までに修正する。

6.ツールチップを別ウィンドウで表示する。
 マウスを動かす度にびろびろウィンドウが出て見辛い向きもありそうなこと、またヘルプ中のURLへアクセスしたり、必要な箇所だけコピーしたり出来るように。

7.その他バグや変な仕様、分かり辛い点など。

2006/4/30 (日) 03:15:53 げんた  
INCM1.23c
[4449] Re14:キーワードヘルプ拡張
しばらく間があきましたが,また評価してみました.

▼[共通設定]の[支援]に追加された「キャレット位置の...」
のPopupが出る条件として,マウスカーソルがエディタウィンドウの中に無いとダメなんですね.

「キーワードも表示する」オプションが「ヒットした次の辞書も検索」にチェックが入っていないと有効にならない.
>辞書ヒットしない単語でも、「選択範囲で前方一致検索」をONしていれば、選択範囲のカーソルを進めることでインクリメンタルサーチ
というのが期待通り動かないんですが...複数形はどうやっても検索できないみたいですし.

[実装の詳細について]
CShareData_new.cpp で従来のbUseKeyWordHelpが削除されてbUseKeyHelpSelectに置き換えられていましたが,特に理由がなければ同じ名前のままとした方が良いと思います.

nKeyHelpNumはキーワードの数を数えればわかるのでわざわざiniに保管する必要はないのでは?

従来のキーワードヘルプの設定を引き継ぐために,
if( cProfile.IsReadingMode() ){
        cProfile.IOProfileData( pszSecName, "szKeyWordHelpFile",
                types.m_KeyHelpArr[0].m_szPath, sizeof( types.m_KeyHelpArr[0].m_szPath ) );
}
みたいなのが必要かと思います.

CShareData.h で KeyHelpInfo::m_szUse のフラグはboolかintでよいのでは?文字列比較はパフォーマンスが低下します.

MAX_KEYHELP_FILE = 100 ってそんなに登録します?

2006/5/14 (日) 02:23:06 fon  
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727) Sleipnir/2.30
[4468] Re15:キーワードヘルプ拡張
遅くなりましたが、げんたさんのコメントに、だいたい対応しました。

パッチファイル:
 ・SourceForge Patches
  ・キーワードヘルプ拡張(パッチ)
   ・KeywordHelpExt20060513.zip

>1.Popupが出る条件として,マウスカーソルがエディタウィンドウの中に無いとダメ
→まだ未対応です。
 もう1点、ツールチップの折り返し幅がシステムの画面横サイズになってしまう問題も解決できていません。
 (本当は、画面右端で自動的に折り返して欲しいのですが、どうしてもうまくいきません。)

>2.「キーワードも表示する」が有効にならないことがある.
→CEditView::KeySearchCoreで、オプションをチェックしていないときの実装をちゃんと追加。

>3.「選択範囲で前方一致検索」が期待通り動かないんですが...
→仕様上の問題の可能性があります。
 例)「believe」が辞書内にある場合、「unbelievable」ではヒットしませんので、選択範囲を「believ」に調整してやると「believe」に反応します。(実装上はstrncmpしているだけです。)
 仕様上の問題というのは、1つのファイルでヒットしたら、そのファイル内の次の候補は探さないで次の辞書を探しに行ってしまうことです。この仕様は、「ヒットした次の辞書も検索」にも当てはまります。

>4.従来のbUseKeyWordHelpが削除されてbUseKeyHelpSelectに置き換えられている
→修正。

>5.nKeyHelpNumはキーワードの数をiniに保管する必要はないのでは?
→iniロード時の読み出せたファイル数を使用し、nKeyHelpNumはini保存しないように変更。

>6.従来のキーワードヘルプの設定を引き継ぐために,"szKeyWordHelpFile"キーワードも監視が必要
→上記読み出し処理を追加。

>7.CShareData.h で KeyHelpInfo::m_szUse のフラグは文字列比較ではパフォーマンスが.
→int m_nUseに変更。

>8.MAX_KEYHELP_FILE = 100 ってそんなに登録します?
→20 に変更。
 20の根拠はTYPEの数と同じという程度ですので、適宜減らしてください!

げんたさん、評価と丁寧なコメントありがとうございます。
問題1が解決していませんが、その他は対応できたと思っています。
(この他、キーワードヘルプ・ダイアログのコードを CPropTypesRegex.cpp に間借りして実装しているのがちょっと気持ち悪いです。)

※本件とは別に、キーワードヘルプやファイルマネージャ風の機能を実装する上でのフレームについて検討しています。
アウトライン解析ウィンドウのようなものを別途用意するとして、各エディタウィンドウごとでは負荷が大きいので、別プロセスで動いて、さらにサクラのイベントも取れるものにしたいです。
キーワード辞書も、コピペなど別の操作をしたいときモッサリ感が微妙にいらつくため、別プロセス動作はあった方が良さそうです。
また、EmEditor_v6やttPage-Rなど、サイドバーも流行っぽいですので、この際。
(勝手にリンク)
http://www.forest.impress.co.jp/article/2006/04/24/emeditor6beta1.html
http://www.forest.impress.co.jp/article/2006/03/31/ttpager.html

※パッチを置く位置が [ 1466720 ]キーワードヘルプ拡張 でなきゃいけない気がしましたが、アカウントを持っていませんでしたので、サクラのホームページ記載にしたがって、SubmitNewしました。


2006/5/15 (月) 01:41:59 げんた  
INCM1.23c
[4471] Re16:キーワードヘルプ拡張
>アカウントを持っていませんでしたので
コメントは出来ても添付ファイルのUploadが出来ないんですね.

差し支えなければアカウント取ってもらった方がいいかもしれませんね.

2006/5/18 (木) 22:59:25 fon  
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
[4473] Re17:キーワードヘルプ拡張
> アカウント取ってもらった方が・・
アカウントを作成してみましたが、ファイル添付のコントロールが出てきません。
Patches->Summaryでアイテム選択したページで良いんですよね?
アカウントに特別な設定が必要だったりするんでしょうか。皆さん出来ているようで、自分のやり方or設定かと思いますが。。

スレッド違いのついでに、TortoiseMergeの差分表示が、行内の比較までしてくれて気に入りました。
単体でも起動できましたので、早速DFの代わりに使用しています。

2006/5/19 (金) 22:10:27 げんた  
INCM1.23c
[4475] Re18:キーワードヘルプ拡張
>アカウントを作成してみましたが、ファイル添付のコントロールが出てきません。
試しに他のプロジェクトの掲示板を見てみると...出ませんね.

Developerしか登録できないのかもしれません.
アカウントを教えて頂ければdeveloperに登録します.

INCM/CMT
Cyclamen v3.81
[ut:0.020][st:0.010]