<idea-plugin>
  <id>fuchsia.developer.plugin.fidl</id>
  <name>FIDL</name>
  <version>0.14</version>
  <vendor
      url="https://fuchsia.googlesource.com/intellij-language-fidl/">The Fuchsia Authors
  </vendor>
  <category>Languages</category>

  <description><![CDATA[
    <a href="https://fuchsia.dev/fuchsia-src/development/languages/fidl/">FIDL</a> Plugin for IntelliJ.<br>
    <h2> Features </h2>
    <ul>
    <li> Syntax and Semantic Highlighting </li>
    <li> Error highlighting </li>
    </ul>
    ]]></description>

  <change-notes><![CDATA[
      <ul>
        <li><b>0.14</b>
          <ul>
            <li>Support union ordinals and remove xunion.</li>
            <li>Support service declarations.</li>
          </ul>
        </li>
        <li><b>0.13</b>
          <ul>
            <li>Add exception handle subtype and strict keyword for xunion</li>
            <li>Produce error when attributes are added to restricted table fields</li>
            <li>Support strict mode for bits/enums/tables</li>
            <li>Add new subtypes for handles: iommu, pcidevice, pmt, suspendtoken, vcpu</li>
          </ul>
        </li>
        <li><b>0.12</b>
          <ul>
            <li>Add spell checker for doc comments</li>
            <li>Add support for doc comments on type alias declarations</li>
            <li>Fix bug around spurious errors for negative numbers.</li>
          </ul>
        </li>
        <li><b>0.11</b>
          <ul>
            <li>Pull several errors out of grammar into syntax highlighter (also, make grammar more accurate)</li>
            <li>Allow type aliases anywhere a top level declaration is allowed.</li>
          </ul>
        </li>
        <li><b>0.10</b>
          <ul>
            <li>Add structure view.</li>
            <li>Add generalized type aliasing</li>
          </ul>
        </li>
        <li><b>0.9</b>
          <ul>
            <li>Add support for bytes keyword.</li>
            <li>Amended bits and enum members to require values.</li>
          </ul>
        </li>
        <li><b>0.8</b>
          <ul>
            <li>Add support for bits syntax and binary numeric literals.</li>
            <li>Remove support for interface syntax.</li>
          </ul>
        </li>
        <li><b>0.7</b>
          <ul>
            <li>Add protocol support, deprecate interface support</li>
            <li>Remove explicit ordinal support</li>
            <li>Add doc comment support to interfaces</li>
          </ul>
        <li><b>0.6</b>
          <ul>
            <li>Add temporary support for extensible unions.</li>
            <li>Add support for error syntax.</li>
            <li>Add support for attributes / doc comments in a few more places.</li>
          </ul>
        </li>
        <li><b>0.5</b>
          <ul>
            <li>Fix for exception in syntax highlighter init</li>
          </ul>
        </li>
        <li><b>0.4</b>
          <ul>
            <li>Expanded support for context-sensitive keywords</li>
            <li>Deprecated ordinals.</li>
          </ul>
        </li>
        <li><b>0.3</b>
           <ul>
             <li>Add support for context-sensitive keywords</li>
             <li>Bug fix for ambiguous grammar</li>
           </ul>
        </li>
        <li><b>0.2</b> Add table support</li>
        <li><b>0.1</b> Initial support for parsing and syntax highlighting</li>
      </ul>
    ]]>
  </change-notes>

  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
  <idea-version since-build="173.0"/>

  <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
       on how to target different products -->
  <depends>com.intellij.modules.lang</depends>

  <extensions defaultExtensionNs="com.intellij">
    <fileTypeFactory implementation="fuchsia.developer.plugin.fidl.FidlFileTypeFactory"/>
    <lang.parserDefinition language="Fidl"
        implementationClass="fuchsia.developer.plugin.fidl.FidlParserDefinition"/>
    <lang.syntaxHighlighterFactory language="Fidl"
        implementationClass="fuchsia.developer.plugin.fidl.FidlSyntaxHighlighterFactory"/>
    <annotator language="Fidl" implementationClass="fuchsia.developer.plugin.fidl.ContextAwareHighlighter"/>
    <lang.psiStructureViewFactory language="Fidl"
        implementationClass="fuchsia.developer.plugin.fidl.StructureViewFactory"/>
    <spellchecker.support language="Fidl" implementationClass="fuchsia.developer.plugin.fidl.FidlSpellcheckingStrategy"/>
  </extensions>

  <actions>
    <!-- Add your actions here -->
  </actions>

</idea-plugin>
