emu雑記

C#erな人が書いているブログです。最近、javaを始めました。なんかいろいろやってます。

Visual Studio 拡張機能 メニューコマンド編 その2

前回に引き続き、拡張機能の設定回りを解説していきます。


前回は、コマンドをどこのメニューバーに配置するかを最後に説明しました。
ところが、定義された定数が存在しない場所に配置するとき、
vsctファイルのGroup要素のParent要素id属性に、何を指定すればいいかわかりません。

<Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0600">
  <Parent guid="定義する" id="ここが不明"/>
    </Group>
</Groups>

そんなときは、以下の手順で調べることができます。


  • [ファイル名を指定して実行]から「regedit」と入力して、レジストリエディタを起動
  • [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\General]に移動
  • EnableVSIPLoggingを1に変更。

値が存在しない場合には、Generalを右クリック-新規-DWORD(32ビット値)を選択して、EnableVSIPLoggingという値を作成し、1をセットする。
f:id:emu717171:20131113220305j:plain

  • 表示したい場所で、Ctrl+Shiftキーを押しながら右クリックすると、ダイアログが表示される。

これはXAMLのエディター上で行った際のダイアログです。
f:id:emu717171:20131113220606j:plain

このダイアログのGuidとCmdIdが重要です。

まず、CmdId:259を16進数に変更します。その値がidになります。
そして、その二つの値をvsctファイルの下のGuidSymbolに記載します。

<!--XAMLのコンテキストメニューのGuidとID-->
<GuidSymbol name="xamlEditorCommandSet" value="{4C87B692-1202-46AA-B64C-EF01FAEC53DA}">
  <IDSymbol name="xamlContextMenu" value="0x0103"/>
</GuidSymbol>


これを利用して、Group要素を編集します。

</Groups>
<Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0600">
    <Parent guid="xamlEditorCommandSet" id="xamlContextMenu"/>
  </Group>
</Groups>

実行してみると、このように表示されています。
f:id:emu717171:20131113222006j:plain


次は、キーバインドを説明しようと思います。