<!--suppress XmlUnboundNsPrefix -->
<idea-plugin allow-bundled-update="true">
  <id>com.dmarcotte.handlebars</id>
  <name>Handlebars/Mustache</name>
  <category>Template Languages</category>
  <vendor>JetBrains</vendor>

  <description><![CDATA[
<p>Provides support for the <a href="https://handlebarsjs.com/">Handlebars</a>
and <a href="https://mustache.github.io/">Mustache</a> template languages
to all JetBrains IDEs that <a href="https://www.jetbrains.com/products/#lang=js&type=ide">support JavaScript</a>.

<h2>Features</h2>
<ul>
  <li>Customizable highlighting for the template syntax
  <li>Completion of closing tags, braces, and HTML tags
  <li><code>.html</code> files treated as Handlebars or Mustache files
  <li>Automatic indentation when typing
</ul>
<h2>Getting started</h2>
<p>For information on getting started, head over to the <a href="https://www.jetbrains.com/help/">documentation</a> for your IDE.
For WebStorm, you can check out this section in the <a href="https://www.jetbrains.com/help/webstorm/using-handlebars-and-mustache-templates.html">documentation</a>.
]]>
  </description>

  <depends>com.intellij.modules.lang</depends>
  <depends optional="true" config-file="javascript-ex.xml">JavaScript</depends>

  <extensions defaultExtensionNs="com.intellij">
    <dependencySupport kind="javascript" coordinate="npm:hbs" displayName="Handlebars"/>
    <fileType name="Handlebars/Mustache" implementationClass="com.dmarcotte.handlebars.file.HbFileType" fieldName="INSTANCE" language="Handlebars" extensions="handlebars;hbs;mustache"/>
    <html.scriptContentProvider language="Handlebars" implementationClass="com.dmarcotte.handlebars.HbScriptContentProvider"/>
    <lang.parserDefinition language="Handlebars" implementationClass="com.dmarcotte.handlebars.parsing.HbParseDefinition"/>
    <lang.ast.factory language="Handlebars" implementationClass="com.dmarcotte.handlebars.parsing.HbAstFactory"/>
    <lang.formatter language="Handlebars" implementationClass="com.dmarcotte.handlebars.format.HbFormattingModelBuilder"/>
    <colorSettingsPage implementation="com.dmarcotte.handlebars.pages.HbColorsPage"/>
    <lang.fileViewProviderFactory language="Handlebars" implementationClass="com.dmarcotte.handlebars.file.HbFileViewProviderFactory"/>
    <lang.commenter language="Handlebars" implementationClass="com.dmarcotte.handlebars.editor.comments.HbCommenter"/>
    <braceMatcher filetype="Handlebars/Mustache" implementationClass="com.dmarcotte.handlebars.editor.braces.HbBraceMatcher"/>
    <completion.contributor language="Handlebars" implementationClass="com.dmarcotte.handlebars.completion.HbKeywordCompletionContributor"/>
    <lang.foldingBuilder language="Handlebars"
                         implementationClass="com.dmarcotte.handlebars.editor.folding.HbFoldingBuilder"/>
    <typedHandler implementation="com.dmarcotte.handlebars.editor.actions.HbTypedHandler" order="before xmlSlash"/>
    <enterHandlerDelegate implementation="com.dmarcotte.handlebars.editor.actions.HbEnterHandler"/>
    <projectConfigurable provider="com.dmarcotte.handlebars.pages.HbConfigurationProvider"/>
    <codeFoldingOptionsProvider instance="com.dmarcotte.handlebars.config.HbFoldingOptionsProvider" id="Handlebars" order="after Android,after C++,after Dart,after General,after Go,after ObjectiveC"/>
    <lang.psiStructureViewFactory language="Handlebars" implementationClass="com.dmarcotte.handlebars.structure.HbStructureViewFactory"/>
    <annotator language="Handlebars" implementationClass="com.dmarcotte.handlebars.inspections.HbBlockMismatchAnnotator"/>
    <xml.zenCodingGenerator implementation="com.dmarcotte.handlebars.editor.templates.HbEmmetGenerator"/>

    <iconProvider id="handlebars" implementation="com.dmarcotte.handlebars.file.HbIconProvider"/>
    <lang.substitutor language="HTML" implementationClass="com.dmarcotte.handlebars.file.HbLanguageSubstitutor"/>

    <liveTemplateContext contextId="Handlebars" implementation="com.dmarcotte.handlebars.editor.templates.HbTemplateContextType"/>
    <defaultLiveTemplates file="liveTemplates/Handlebars"/>

    <lang.syntaxHighlighter language="Handlebars" implementationClass="com.dmarcotte.handlebars.HbHighlighter"/>

    <localInspection bundle="messages.HbBundle"
                     key="handlebars.inspections.helpers.empty"
                     groupBundle="messages.HbBundle"
                     groupKey="inspections.group.name"
                     language="Handlebars"
                     enabledByDefault="true"
                     level="WARNING"
                     implementationClass="com.dmarcotte.handlebars.inspections.HbEmptyBlockInspection"/>
    <highlightErrorFilter implementation="com.dmarcotte.handlebars.inspections.HbErrorFilter"/>
    <fileIndentOptionsProvider implementation="com.dmarcotte.handlebars.format.HbFileIndentOptionsProvider"/>
    <editorHighlighterProvider filetype="Handlebars/Mustache" implementationClass="com.dmarcotte.handlebars.file.HbHighlighterProvider"/>
    <iconMapper mappingFile="HandlebarsIconMappings.json"/>
  </extensions>
</idea-plugin>
