▼ 2007/4/7 (土) 23:26:21 げんた | |
[4792] RE2: GNU GLOBALフロントエンド |
多少わかってきました.
1. GLOBALは必ずカレントディレクトリからGTAGを作成する
→カレント以外で作成する場合(Updateも同様)は実行前にカレントディレクトリの移動が必要
移動しているはずなのにどうもうまく動かないのは??
2. Read Openできないファイルがあると,そこでタグ生成が止まってしまう.
→Visual Studioの*.ncbファイル
3. 候補が出ないケース★問題4
→候補数==0と認識されている.
全くデータが読めていない.(ReadFileを一度も通らない)
これはループから抜けられない現象(★問題3)と関係がありました.
MsgWaitForMultipleObjectsでメッセージを受けてしまうと,そのメッセージを処理するまで永遠にメッセージが来たとの通知しか来ないみたいです.元々のコードは::BlockingHook( m_hWnd ) でメッセージを処理していたのに,そこをコメントアウトしたので先に進まなくなっていました.
どうせメッセージを処理しないのでWaitForMultipleObjectsに書き換えたら1文字目からきちんと候補が出るようになりました.
(1つなのでWaitForSingleObjectでもいいんですけど)
4. CmdExePrep() ★問題1
CreatePipeにハンドルの参照を渡している
→CmdExePrepの最初の2つはoutパラメータ
→参照かポインタにしないと,受け取れません
5. CDicMgr::HokanSearchGtags
CDicMgrが名前とは裏腹に何もmanageしていないのがそもそも問題ですが...
CDicMgr::HokanSearchGtags()を通す意味が全然無いみたい.
CDicMgr, CHokanMgr, CEditViewの役割をもう一度考え直す必要がありそうですね.
6. CheckExe
パスが通ったところに置くのはだめなの?
手直ししたもの(デバッグコード含む)を
http://sakura.qp.land.to/?Junk%2F31 に gtags_2007-04-07_assist1.zip として貼り付けました.
|
|