10

Microsoft.VisualStudio.Language.Intellisense.ICompletionSourceを継承して、ドメイン固有の言語にインテリセンスを提供するVisual Studio拡張機能を作成しました。intellisenseセッションが途中で終了しないようにします

私の言語のキーワードの有効な文字がアンダースコア '_'であることを除いて、これは問題なく動作します。

intellisenseが開くと、入力を開始することができ、intellisenseボックスの内容がフィルタリングされ、入力したもので始まる項目だけが表示されます。

しかし、ユーザーがアンダースコアを入力すると、特別な方法で処理されているように見えますが、使用可能なインテリセンスアイテムのリストをフィルタリングするのではなく、現在のアイテムをコミットしてインテリセンスセッションを終了します。

アンダースコアを通常の英数字と同じように扱えるように、この動作を停止する方法はありますか?

答えて

4

私はあなたが使用しているどのような言語わからないんだけど、あなたのExec方法で、それはあなたが(C#の)のような何かやっているように聞こえる:

if (nCmdID == (uint)VSConstants.VSStd2KCmdID.RETURN || nCmdID == (uint)VSConstants.VSStd2KCmdID.TAB || (char.IsWhiteSpace(typedChar) || char.IsPunctuation(typedChar)) 

をここに原因が_が句読点と考えられているということですので、char.IsPunctuation(typedChar)は現在のアイテムをコミットしてtrueを返します。

修正 - (char.IsPunctuation(typedChar) && typedChar != '_'):FYI

if (nCmdID == (uint)VSConstants.VSStd2KCmdID.RETURN || nCmdID == (uint)VSConstants.VSStd2KCmdID.TAB || (char.IsWhiteSpace(typedChar) || (char.IsPunctuation(typedChar) && typedChar != '_') || typedChar == '=')) 

: - https://github.com/kfmaurice/nla私はこの拡張機能をデバッグすることで、これをテストしてみました。この変更がなければ、アンダースコアを入力する際に​​コミットしていました。

2

あなたはツール - >オプション - >テキスト Editorの> JavaScript-> IntelliSense->参考に入る場合 が必要になることがあり、プロジェクトの種類に応じて、(基準グループのドロップダウン があるはずですこれを変更するには

あなたに気付くと、デフォルトの インテリセンスリファレンスファイルが含まれています。 アンダースコアフィルタを削除してください。

これを見つけましたhere。それがあなたのために働くかどうか私に教えてください。

2

ビジュアルスタジオで使用されているプラ​​グインチェーンがあります。プラグインの前に下線付きのプラグインがあります。提案をdestructi6nで試してください。

関連する問題