Gaming Life

一日24時間、ゲームは10時間

Visual Studioのコードスニペットのshortcut名にはハイフンは使えない

Visual Studioコードスニペットを自作していたら、表題の件にハマったのでメモがてら共有。

qiita.com

上記の記事で紹介されている Visual Studio Snippet Generatorで、スニペットを作ったのだが、Shortcutにハイフン(-)を入れると、コードスニペットが正しく機能しなくなった。

tools.unitycoder.com

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>commentblock-test</Title>
      <Shortcut>commentblock-test</Shortcut>
      <Description>create basic style comment block</Description>
      <Author>ai</Author>
    </Header>
    <Snippet>
      <Declarations>
        <Literal Editable="false"></Literal>
      </Declarations>
      <Code Language="cpp"><![CDATA[// ---------------------------------------------------------------- //
//  $end$
// ---------------------------------------------------------------- //]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

このXMLVisual Studioにインポートして commentblock-test を入力してTabキーを押すと、正しく動かない。

f:id:ai_gaminglife:20200813201649j:plain f:id:ai_gaminglife:20200813201651j:plain

色々試した結果、Shortcutからハイフンを取り除くと、正しく動作するようになった。

↓改良後のXML

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>commentblockTest</Title>
      <Shortcut>commentblockTest</Shortcut>
      <Description>create basic style comment block</Description>
      <Author>ai</Author>
    </Header>
    <Snippet>
      <Declarations>
        <Literal Editable="false"></Literal>
      </Declarations>
      <Code Language="cpp"><![CDATA[// ---------------------------------------------------------------- //
//  $end$
// ---------------------------------------------------------------- //]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

f:id:ai_gaminglife:20200813201707j:plain f:id:ai_gaminglife:20200813201712j:plain

ちなみに

Visual Studio Snippet Generatorは、デフォルトでC#用のスニペットファイルを出力する。C++などでそのスニペットを使用したいときは、 <Code Language> をcppなどに変更する必要がある。

参考

docs.microsoft.com