問題タブ [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.
c# - 言語サービスを提供する問題
私は、インターネット上で言語サービスを提供する 2 つの方法を見つけました。
最初の方法では、タイマーを使用しIOleComponentManager
て登録し、アイドル時間中にサービスを呼び出します。
2 番目の方法では、サービスを としてケーシングし、「オンデマンドでサービスを提供する」ためにIServiceContainer
を追加します。ServiceCreatorCallback
おそらく、2 番目の方法が「推奨される方法」になっていると思われます。残念ながら、このメソッドを使用すると、実装OnSynchronizeDropdowns
で呼び出されることはありません。TypeAndMembersDropdownBars
また、 myLanguageService
がファイルにエラーを見つけた場合、 を使用ParseRequest.Sink.AddError()
してエラー リストにエラーを追加します。「オンデマンド」を提案すると、これらのエラーは GUI に表示されませんが、コードをデバッグするとエラーが追加されます。
構文の強調表示、「定義に移動」、および「すべての参照を検索」が引き続き機能するため、言語サービスが登録されていることがわかります。
「オンデマンドでサービスを提供する」ために使用しているコードは次のとおりです。
LanguageService
オンデマンドで提供するときに、一部の機能が機能しない理由を誰か教えてもらえますか? 私は何か不足していますか、それとも完全に機能する言語サービスを意図したものではありませんか?
c# - IElisonBuffer に構文強調表示を追加する
私は、C# コードを関数に分割し、これらの関数をIElisonBuffers内に格納するプロジェクトに取り組んでいます。私は Intellisense を接続しており、以下に示すように、バッファーは他の拡張機能とうまくやり取りしています。
ただし、これらのエディター内で構文の強調表示を機能させることができません。
これらのエディターは、次の手順で埋め込みます。
- ファイルの を作成
IVsInvisibleEditor
します。 IVsTextLines
このために を入手IVsInvisibleEditor
- を作成し、
IVsCodeWindow
これのバッファを から に設定しIVsCodeWindow
ますIVsTextLines
。IVsInvisibleEditor
IWpfTextViewHost
このコード ウィンドウから を取得します。これにより、従来のスパンと対話できる「WPF Land」に戻ります。IWpfTextViewHost
のテキスト ビューのSnapshotSpan を作成します。この SnapshotSpan には、単一の関数が含まれています。IElisionBuffer
SnapshotSpan を含む を作成します。- に渡す
IVsTextBuffer
ビアを作成します。IVsEditorAdaptersFactoryService.CreateVsTextBufferAdapterForSecondaryBuffer()
IElisionBuffer
- 次に、C# GUID: 694DD9B6-B865-4C5B-AD85-86356E9C88DC でtoをキャストし
IVsTextBuffer
てIVsTextLines
呼び出しを渡します。SetLanguageServiceID()
- 正しく設定されていることを再確認しましたが
GetLanguageServiceID()
、すべて問題ないようです。 - を作成
IVsTextView
し、新しい で初期化しますIVsTextBuffer
。 - 次に、これの を取得し
IWpfTextViewHost
ますIVsTextView
。
IElisionBuffer の言語サービス ID を設定する際に注意が必要な特別な手順はありますか?
完全を期すために、これは私が使用しているコードです:
c# - プロジェクション バッファーを使用して、Visual Studio エディターで埋め込み言語をサポートする方法
このリンクの最初の段落の最後に、次のように記載されています。
Visual Studio のテキスト アウトライン機能は、プロジェクション バッファーを使用して折りたたまれたテキストを非表示にすることで実装されます。また、ASP.NET ページの Visual Studio エディターはプロジェクションを使用して、Visual Basic や C# などの組み込み言語をサポートします。
私は検索して検索しましたが、これを達成するための例やドキュメントはまったく見つかりませんでした。これがどのように行われるか知っている人はいますか? 分類が機能するようになり、C# コードとして分類したいスパンの射影バッファーを作成しました。バッファのコンテキスト タイプを「CSharp」に設定しましたが、スパンが分類されません。また、コンテンツ タイプを「プロジェクション」に基づいて作成しようとしましたが、どちらも機能するようになりました。
typescript - サービスとしての Typescript コンパイラ: ある型が別の型に割り当て可能かどうかをテストする方法は?
Typescript言語サービスを使用して、Typescriptファイルのシンボルの名前変更を自動化するコマンドラインnodejsツールを作成しています。
ツールに次のように指示します。このタイプのすべてのシンボルの名前をこのシンボルに変更します。resharper と同様に、ローカル変数、プロパティなどの名前も変更します。一度に複数のシンボルの名前を変更できるため、中間の一時的な一意の名前を必要とせずに、2 つのシンボル名を交換することもできます (たとえば、Foo を Bar に、またはその逆に名前を変更します)。
これを機能させるには、PullSymbol 情報を取得できるように、言語サービスのプライベート関数 getSymbolInfoAtPosition を公開する必要がありました。
現在、PullSymbol で getNameAndTypeName を呼び出すことによって、正確な名前と型の一致のみを検出しますが、構造的に互換性のある一致を実行したいと考えています。
C# では、Type に IsAssignableFrom メソッドがあるため、これは簡単です。
Typescript のサービスとしてのコンパイラを使用して、ある PullSymbol が別の PullSymbol と構造的に互換性があるかどうかを検出する方法を知っている人はいますか?
どうもありがとう、ピーター・ヴァースワイベレン
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 の [フォントと色] 構成にそれらのいずれも表示されません。それらをそこにインストールするにはどうすればよいですか?
typescript - Typescript 言語サービスを使用してプロパティ情報を取得する方法
Typescript 1.4.0 でオブジェクトのプロパティの型を取得する方法。
オブジェクトのプロパティを検索できる C# に似たものを探しています。
私がこれまでに持っているものは次のとおりです。
インターフェースの例を考えると:
TypeScript 言語サービスは結果を返します。
私が不足している情報は、型 (string,number,Map<>,any) であり、それが配列またはオブジェクトの場合です。
これを達成する方法はありますか?
よろしくお願いいたします。
c# - Visual Studio でプロジェクション バッファを使用して C# に埋め込まれた言語を編集する方法は?
プロジェクション手法を使用して、組み込み言語をサポートするために Visual Studio エディターをカスタマイズできます。Djangoのエディターのカスタマイズなど、オンラインで入手できる例は、HTML に埋め込まれたスクリプト言語をサポートしています。実装は、組み込みの HTML エディターに関連付けられているようです。
C# に埋め込まれた言語で同様の機能を実現する方法について提案がある人はいますか? Django エディタで使用されているプロジェクション バッファ ソリューションを複製して、コンテンツ タイプを「HTML」から「CSharp」に変更してみました。エディターは C# のコンテンツを「コード」として認識しているようですが、構文の強調表示、IntelliSense などは提供していません。