<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>Add flexible keyword, allow strict on more declarations </li>
            <li>Support union ordinals and remove xunion.</li>
            <li>Support service declarations.</li>
            <li>Improve compatibility with IJ 2019.3, and shrink JAR size</li>
            <li>Support clock handle type.</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>
