1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VisualStudioのソースコードスニペット用拡張機能作成Tips

Last updated at Posted at 2020-01-25

はじめに

VisualStudioのスニペットではできない入力時の日時を入れたりすることが拡張機能ならできるようになります.
その拡張機能を作るうえでここだけサンプルから変えれば簡単なものが作れるといった内容を記載していきます.
以降は以下サイトの手順が完了しているものとします.
https://docs.microsoft.com/ja-jp/visualstudio/extensibility/walkthrough-displaying-statement-completion?view=vs-2017
※ 手順通りに行いusingの追加を行ってもエラーが残っている場合は参照に追加したもののバージョンに誤りがないか確認してみてください.時々同一名称の別バージョンのものを追加してしまっており,エラーとなってしまうことがあったりします.

Tips

対象ファイル指定

TestCompletionSourceProviderクラスとTestCompletionHandlerProviderクラスの[ContentType()]に対象を記載。

  
 [ContentType("TypeScript")]

挿入したい文字列の生成を行う箇所

TestCompletionSourceクラスの以下メソッド内

void ICompletionSource.AugmentCompletionSession(ICompletionSession session, IList<CompletionSet> completionSets)

現在のエディタ内のテキスト取得

文字を入力した際のエディタ内のテキストを取得できます.

m_textBuffer.CurrentSnapshot.GetText()

現在の文字挿入位置取得

(session.TextView.Caret.Position.BufferPosition - 1).Position

受付可能な文字の変更

TestCompletionCommandHandlerクラスのExecメソッド内の以下条件にて、10進の数字か文字のみ受け付けられるようになっています。
例えば「/」を使用したい場合はこの条件を書き換えることで使用できるようになります.

if (!typedChar.Equals(char.MinValue) && char.IsLetterOrDigit(typedChar))

設定より挿入する文字列を切り替える

以下チュートリアルを参考に設定項目を追加し,その値を使用する.
細かい話は気が向いたら書くかもしれません……
https://docs.microsoft.com/ja-jp/visualstudio/extensibility/extending-user-settings-and-options?view=vs-2017

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?