2

私は言語サービスに取り組んでおり、ユーザーがコードを入力した後の解析をより高速にしたいと考えています。

ParseReason.Check現在、MSDN に記載されているandメカニズムに依存していOnIdleますが、多くの場合、ユーザーがコードを入力してから時間が経ってから呼び出されます。カーソルを別の行に移動して、より速くトリガーすることが役立つ場合があります。

私がやりたいのは、ユーザーがファイルに入力したことを検出した後、ファイルを強制的に解析することです。ユーザーが入力していることを検出できますが、パーサーをトリガーする方法がわかりませんParseRequest

4

2 に答える 2

0

同様の問題が発生しました。VSで開かれていないファイルをスキャンしたかったのです。私ができる最善のことは、解析機能を抽象化してVSによって呼び出されるようにすることでしたが、VSを経由せずに必要なときにいつでも拡張機能の別の内部関数によって呼び出されるようにすることで、解析結果をと同じ構造に格納します。 ParseRequestでの直接VS呼び出し。

しかし、あなたがそれを行うためのより良い方法を見つけるかどうか知りたいと思います。

于 2012-02-29T01:29:01.083 に答える
0

実装を呼び出しBeginParse()てみることができますSource。これによりParseRequestCheck解析理由で が作成されます。OnIdle言語サービスのタイマーをオフにしてテストしたところ、機能しているようです。

ユーザーのキー押下を検出するコードがLanguageService実装のインスタンスにアクセスできる場合は、 service.GetSource(...).BeginParse(). それ自体にアクセスできる場合はSource、さらに簡単です。

于 2014-02-27T21:20:44.313 に答える