問題タブ [languageservice]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
185 参照

c# - 言語サービスを提供する問題

私は、インターネット上で言語サービスを提供する 2 つの方法を見つけました。

最初の方法では、タイマーを使用しIOleComponentManagerて登録し、アイドル時間中にサービスを呼び出します。

2 番目の方法では、サービスを としてケーシングし、「オンデマンドでサービスを提供する」ためにIServiceContainerを追加します。ServiceCreatorCallback

おそらく、2 番目の方法が「推奨される方法」になっていると思われます。残念ながら、このメソッドを使用すると、実装OnSynchronizeDropdownsで呼び出されることはありません。TypeAndMembersDropdownBars

また、 myLanguageServiceがファイルにエラーを見つけた場合、 を使用ParseRequest.Sink.AddError()してエラー リストにエラーを追加します。「オンデマンド」を提案すると、これらのエラーは GUI に表示されませんが、コードをデバッグするとエラーが追加されます。

構文の強調表示、「定義に移動」、および「すべての参照を検索」が引き続き機能するため、言語サービスが登録されていることがわかります。

「オンデマンドでサービスを提供する」ために使用しているコードは次のとおりです。

LanguageServiceオンデマンドで提供するときに、一部の機能が機能しない理由を誰か教えてもらえますか? 私は何か不足していますか、それとも完全に機能する言語サービスを意図したものではありませんか?

0 投票する
1 に答える
722 参照

c# - IElisonBuffer に構文強調表示を追加する

私は、C# コードを関数に分割し、これらの関数をIElisonBuffers内に格納するプロジェクトに取り組んでいます。私は Intellisense を接続しており、以下に示すように、バッファーは他の拡張機能とうまくやり取りしています。

ここに画像の説明を入力

ただし、これらのエディター内で構文の強調表示を機能させることができません。

これらのエディターは、次の手順で埋め込みます。

  1. ファイルの を作成IVsInvisibleEditorします。
  2. IVsTextLinesこのために を入手IVsInvisibleEditor
  3. を作成し、IVsCodeWindowこれのバッファを から に設定しIVsCodeWindowますIVsTextLinesIVsInvisibleEditor
  4. IWpfTextViewHostこのコード ウィンドウから を取得します。これにより、従来のスパンと対話できる「WPF Land」に戻ります。
  5. IWpfTextViewHostのテキスト ビューのSnapshotSpan を作成します。この SnapshotSpan には、単一の関数が含まれています。
  6. IElisionBufferSnapshotSpan を含む を作成します。
  7. に渡すIVsTextBufferビアを作成します。IVsEditorAdaptersFactoryService.CreateVsTextBufferAdapterForSecondaryBuffer()IElisionBuffer
  8. 次に、C# GUID: 694DD9B6-B865-4C5B-AD85-86356E9C88DC でtoをキャストしIVsTextBufferIVsTextLines呼び出しを渡します。SetLanguageServiceID()
  9. 正しく設定されていることを再確認しましたがGetLanguageServiceID()、すべて問題ないようです。
  10. を作成IVsTextViewし、新しい で初期化しますIVsTextBuffer
  11. 次に、これの を取得しIWpfTextViewHostますIVsTextView

IElisionBuffer の言語サービス ID を設定する際に注意が必要な特別な手順はありますか?

完全を期すために、これは私が使用しているコードです:

0 投票する
4 に答える
1690 参照

c# - プロジェクション バッファーを使用して、Visual Studio エディターで埋め込み言語をサポートする方法

このリンクの最初の段落の最後に、次のように記載されています。

Visual Studio のテキスト アウトライン機能は、プロジェクション バッファーを使用して折りたたまれたテキストを非表示にすることで実装されます。また、ASP.NET ページの Visual Studio エディターはプロジェクションを使用して、Visual Basic や C# などの組み込み言語をサポートします

私は検索して検索しましたが、これを達成するための例やドキュメントはまったく見つかりませんでした。これがどのように行われるか知っている人はいますか? 分類が機能するようになり、C# コードとして分類したいスパンの射影バッファーを作成しました。バッファのコンテキスト タイプを「CSharp」に設定しましたが、スパンが分類されません。また、コンテンツ タイプを「プロジェクション」に基づいて作成しようとしましたが、どちらも機能するようになりました。

0 投票する
2 に答える
421 参照

typescript - サービスとしての Typescript コンパイラ: ある型が別の型に割り当て可能かどうかをテストする方法は?

Typescript言語サービスを使用して、Typescriptファイルのシンボルの名前変更を自動化するコマンドラインnodejsツールを作成しています。

ツールに次のように指示します。このタイプのすべてのシンボルの名前をこのシンボルに変更します。resharper と同様に、ローカル変数、プロパティなどの名前も変更します。一度に複数のシンボルの名前を変更できるため、中間の一時的な一意の名前を必要とせずに、2 つのシンボル名を交換することもできます (たとえば、Foo を Bar に、またはその逆に名前を変更します)。

これを機能させるには、PullSymbol 情報を取得できるように、言語サービスのプライベート関数 getSymbolInfoAtPosition を公開する必要がありました。

現在、PullSymbol で getNameAndTypeName を呼び出すことによって、正確な名前と型の一致のみを検出しますが、構造的に互換性のある一致を実行したいと考えています。

C# では、Type に IsAssignableFrom メソッドがあるため、これは簡単です。

Typescript のサービスとしてのコンパイラを使用して、ある PullSymbol が別の PullSymbol と構造的に互換性があるかどうかを検出する方法を知っている人はいますか?

どうもありがとう、ピーター・ヴァースワイベレン

0 投票する
2 に答える
182 参照

visual-studio-2013 - Visual Studio 拡張機能のカスタム ColorableItems

Visual Studio の LanguageService に取り組んでおり、Visual Studio 2013 のカスタム カラーに問題があります。最近、Visual Studio 2010 から 2013 に移行しましたが、に設定RequestStockColorsするとfalse、構文の強調表示がすべて失われます。

私の LanguageService は と を実装GetColorableItemしてGetItemCountいます。私は9つのカスタムカラーを使用しています。GetColorableItem言語サービスをデバッグすると、それが数回呼び出されていることに気付きましたが、GetItemCountヒットすることはありません。

Visual Studio でデバッグするときは、次のコマンド ライン引数を使用しています。

/ranu /rootsuffix Exp

更新:最初の 5 つの色 (標準のトークンの色と重複する色) の名前を、標準の名前 (「キーワード」、「識別子」など) に一致するように変更し、それらの色が表示されるようになりましたが、私の余分な色の種類が表示されます。さらに、Visual Studio の [フォントと色] 構成にそれらのいずれも表示されません。それらをそこにインストールするにはどうすればよいですか?

0 投票する
1 に答える
1608 参照

typescript - Typescript 言語サービスを使用してプロパティ情報を取得する方法

Typescript 1.4.0 でオブジェクトのプロパティの型を取得する方法。

オブジェクトのプロパティを検索できる C# に似たものを探しています。

私がこれまでに持っているものは次のとおりです。

インターフェースの例を考えると:

TypeScript 言語サービスは結果を返します。

私が不足している情報は、型 (string,number,Map<>,any) であり、それが配列またはオブジェクトの場合です。

これを達成する方法はありますか?

よろしくお願いいたします。

0 投票する
0 に答える
113 参照

c# - Visual Studio でプロジェクション バッファを使用して C# に埋め込まれた言語を編集する方法は?

プロジェクション手法を使用して、組み込み言語をサポートするために Visual Studio エディターをカスタマイズできます。Djangoのエディターのカスタマイズなど、オンラインで入手できる例は、HTML に埋め込まれたスクリプト言語をサポートしています。実装は、組み込みの HTML エディターに関連付けられているようです。

C# に埋め込まれた言語で同様の機能を実現する方法について提案がある人はいますか? Django エディタで使用されているプロジェクション バッファ ソリューションを複製して、コンテンツ タイプを「HTML」から「CSharp」に変更してみました。エディターは C# のコンテンツを「コード」として認識しているようですが、構文の強調表示、IntelliSense などは提供していません。