<idea-plugin>
  <name>Dart</name>
  <id>Dart</id>
  <description><![CDATA[
    <p>Provides <a href="https://dart.dev/">Dart</a> support to JetBrains IDEs and Android Studio.

    <h2>Features</h2>
    <ul>
      <li>Smart coding assistance for Dart that includes code completion, formatting, navigation, intentions, refactorings, and more
      <li>Integration with the Pub package manager and Dart Analysis Server
      <li>On-the-fly problem detection with suggestions
      <li>Built-in debugger for debugging Dart command line and web applications
      <li>Running and debugging Dart tests
      <li>Option in the <i>Welcome</i> screen to create new Dart projects
    </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 IntelliJ IDEA, you can check out this section in the
      <a href="https://www.jetbrains.com/help/idea/dart.html">documentation</a>.
  ]]></description>
  <vendor>JetBrains</vendor>
  <category>Languages</category>
  <depends>com.intellij.modules.xml</depends>
  <depends>com.intellij.modules.spellchecker</depends>
  <depends optional="true" config-file="dart-js-debugger-support.xml">JavaScriptDebugger</depends>
  <depends optional="true" config-file="dart-yaml.xml">org.jetbrains.plugins.yaml</depends>
  <depends optional="true" config-file="dart-copyright.xml">com.intellij.copyright</depends>
  <depends optional="true" config-file="dart-coverage.xml">com.intellij.modules.coverage</depends>

  <resource-bundle>messages.DartBundle</resource-bundle>

  <extensionPoints>
    <extensionPoint name="completionExtension" interface="com.jetbrains.lang.dart.ide.completion.DartCompletionExtension" dynamic="true"/>
    <extensionPoint name="completionTimerExtension" interface="com.jetbrains.lang.dart.ide.completion.DartCompletionTimerExtension" dynamic="true"/>
  </extensionPoints>

  <extensions defaultExtensionNs="com.intellij">
    <moveFileHandler implementation="com.jetbrains.lang.dart.ide.refactoring.moveFile.DartServerMoveDartFileHandler"/>
    <fileType name="Dart" extensions="dart" language="Dart" implementationClass="com.jetbrains.lang.dart.DartFileType" fieldName="INSTANCE"/>
    <lang.syntaxHighlighter language="Dart" implementationClass="com.jetbrains.lang.dart.highlight.DartSyntaxHighlighter"/>
    <highlightErrorFilter implementation="com.jetbrains.lang.dart.highlight.DartHighlightingErrorFilter"/>
    <embeddedTokenHighlighter implementation="com.jetbrains.lang.dart.highlight.DartSyntaxHighlighter"/>

    <lang.braceMatcher language="Dart" implementationClass="com.jetbrains.lang.dart.ide.DartBraceMatcher"/>
    <typedHandler implementation="com.jetbrains.lang.dart.ide.editor.DartTypeHandler" id="Dart"/>
    <quoteHandler fileType="Dart" className="com.jetbrains.lang.dart.ide.editor.DartQuoteHandler"/>

    <lang.commenter language="Dart" implementationClass="com.jetbrains.lang.dart.ide.DartCommenter"/>
    <lang.parserDefinition language="Dart" implementationClass="com.jetbrains.lang.dart.DartParserDefinition"/>

    <enterHandlerDelegate implementation="com.jetbrains.lang.dart.ide.editor.DartEnterInDocLineCommentHandler"/>
    <enterHandlerDelegate implementation="com.jetbrains.lang.dart.ide.editor.DartEnterInStringHandler" order="first"/>
    <enterBetweenBracesDelegate language="Dart"  implementationClass="com.intellij.codeInsight.editorActions.enter.EnterBetweenBracesAndBracketsDelegate"/>
    <lang.lineWrapStrategy language="Dart" implementationClass="com.jetbrains.lang.dart.ide.editor.DartLineWrapPositionStrategy"/>
    <stripTrailingSpacesFilterFactory implementation="com.jetbrains.lang.dart.ide.editor.DartStripTrailingSpacesFilterFactory"/>
    <copyPastePostProcessor implementation="com.jetbrains.lang.dart.ide.editor.DartCopyPasteProcessor"/>
    <autoImportOptionsProvider instance="com.jetbrains.lang.dart.ide.editor.DartAutoImportOptionsProvider"/>

    <languageInjector implementation="com.jetbrains.lang.dart.psi.DartLanguageInjector"/>
    <multiHostInjector implementation="com.jetbrains.lang.dart.injection.DartMultiHostInjector"/>

    <colorSettingsPage implementation="com.jetbrains.lang.dart.highlight.DartColorsAndFontsPage"/>
    <lang.foldingBuilder language="Dart" implementationClass="com.jetbrains.lang.dart.folding.DartFoldingBuilder"/>
    <extendWordSelectionHandler implementation="com.jetbrains.lang.dart.ide.editor.DartWordSelectionHandler"/>
    <basicWordSelectionFilter implementation="com.jetbrains.lang.dart.ide.editor.DartSelectionFilter"/>

    <html.scriptContentProvider language="Dart" implementationClass="com.jetbrains.lang.dart.DartScriptContentProvider"/>
    <nonProjectFileWritingAccessExtension implementation="com.jetbrains.lang.dart.ide.DartWritingAccessProvider"/>
    <spellchecker.support language="Dart" implementationClass="com.jetbrains.lang.dart.ide.spelling.DartSpellcheckingStrategy"/>
    <spellchecker.bundledDictionaryProvider implementation="com.jetbrains.lang.dart.ide.spelling.DartBundledDictionaryProvider"/>
    <lang.documentationProvider language="Dart" implementationClass="com.jetbrains.lang.dart.ide.documentation.DartDocumentationProvider"/>
    <lang.implementationTextSelectioner language="Dart"
                                        implementationClass="com.jetbrains.lang.dart.ide.DartImplementationTextSelectioner"/>
    <lang.formatter language="Dart" implementationClass="com.jetbrains.lang.dart.ide.formatter.DartFormattingModelBuilder"/>
    <postFormatProcessor implementation="com.jetbrains.lang.dart.ide.formatter.DartPostFormatProcessor"/>
    <readerModeMatcher implementation="com.jetbrains.lang.dart.ide.DartReaderModeMatcher"/>
    <lang.psiStructureViewFactory language="Dart" implementationClass="com.jetbrains.lang.dart.ide.structure.DartStructureViewFactory"/>
    <psi.referenceContributor language="HTML" implementation="com.jetbrains.lang.dart.psi.DartPackagePathReferenceContributor"
                              order="last"/>
    <psi.referenceContributor language="Dart" implementation="com.jetbrains.lang.dart.psi.DartReferenceContributor"/>
    <psi.referenceContributor language="XML" implementation="com.jetbrains.lang.dart.psi.DartReferenceContributor"/>
    <xml.xmlTypedHandlersAdditionalSupport implementation="com.jetbrains.lang.dart.xml.DartXmlTypedHandlersAdditionalSupport" />
    <include.provider implementation="com.jetbrains.lang.dart.psi.DartPackageAwareFileIncludeProvider" order="first"/>
    <typeHierarchyProvider language="Dart" implementationClass="com.jetbrains.lang.dart.ide.hierarchy.type.DartTypeHierarchyProvider"/>
    <callHierarchyProvider language="Dart" implementationClass="com.jetbrains.lang.dart.ide.hierarchy.call.DartCallHierarchyProvider"/>
    <methodHierarchyProvider language="Dart" implementationClass="com.jetbrains.lang.dart.ide.hierarchy.method.DartMethodHierarchyProvider"/>
    <lang.elementManipulator forClass="com.jetbrains.lang.dart.psi.DartUriElement"
                             implementationClass="com.jetbrains.lang.dart.psi.impl.DartUriElementBase$DartUriElementManipulator"/>
    <lang.elementManipulator forClass="com.jetbrains.lang.dart.psi.DartStringLiteralExpression"
                             implementationClass="com.jetbrains.lang.dart.psi.impl.DartStringLiteralExpressionBase$DartStringManipulator"/>
    <lang.refactoringSupport language="Dart"
                             implementationClass="com.jetbrains.lang.dart.ide.refactoring.DartRefactoringSupportProvider"/>

    <codeInsight.parameterInfo language="Dart"
                               implementationClass="com.jetbrains.lang.dart.ide.info.DartParameterInfoHandler"/>

    <langCodeStyleSettingsProvider implementation="com.jetbrains.lang.dart.ide.formatter.settings.DartLanguageCodeStyleSettingsProvider"/>
    <lang.importOptimizer language="Dart" implementationClass="com.jetbrains.lang.dart.ide.imports.DartImportOptimizer"/>

    <renameHandler implementation="com.jetbrains.lang.dart.ide.refactoring.DartServerRenameHandler"/>
    <inlineActionHandler implementation="com.jetbrains.lang.dart.ide.refactoring.DartInlineHandler"/>

    <codeInsight.lineMarkerProvider language="Dart" implementationClass="com.jetbrains.lang.dart.ide.marker.DartMethodLineMarkerProvider"/>
    <codeInsight.lineMarkerProvider language="Dart"
                                    implementationClass="com.jetbrains.lang.dart.ide.marker.DartServerImplementationsMarkerProvider"/>
    <codeInsight.lineMarkerProvider language="Dart"
                                    implementationClass="com.jetbrains.lang.dart.ide.marker.DartServerOverrideMarkerProvider"/>

    <codeInsight.gotoSuper language="Dart" implementationClass="com.jetbrains.lang.dart.ide.actions.DartServerGotoSuperHandler"/>
    <testFinder implementation="com.jetbrains.lang.dart.ide.testIntegration.DartTestFinder"/>
    <definitionsScopedSearch implementation="com.jetbrains.lang.dart.ide.actions.DartInheritorsSearcher"/>

    <codeInsight.overrideMethod language="Dart"
                                implementationClass="com.jetbrains.lang.dart.ide.generation.DartOverrideMethodHandler"/>
    <codeInsight.implementMethod language="Dart"
                                 implementationClass="com.jetbrains.lang.dart.ide.generation.DartImplementMethodHandler"/>

    <statementUpDownMover implementation="com.jetbrains.lang.dart.ide.moveCode.DartStatementMover" id="dartStatementMover" order="before dartComponentMover" />
    <statementUpDownMover implementation="com.jetbrains.lang.dart.ide.moveCode.DartComponentMover" id="dartComponentMover" order="before xml" />

    <fileBasedIndex implementation="com.jetbrains.lang.dart.ide.index.DartImportAndExportIndex"/>
    <fileBasedIndex implementation="com.jetbrains.lang.dart.ide.index.DartPartUriIndex"/>
    <fileBasedIndex implementation="com.jetbrains.lang.dart.ide.index.DartClassIndex"/>
    <fileBasedIndex implementation="com.jetbrains.lang.dart.ide.index.DartLibraryIndex"/>
    <fileBasedIndex implementation="com.jetbrains.lang.dart.ide.index.DartComponentIndex"/>
    <fileBasedIndex implementation="com.jetbrains.lang.dart.ide.index.DartSymbolIndex"/>

    <!-- moduleBuilder works in IntelliJ IDEA only -->
    <moduleBuilder builderClass="com.jetbrains.lang.dart.projectWizard.DartModuleBuilder"/>
    <!-- directoryProjectGenerator works in WebStorm and other small IDEs -->
    <directoryProjectGenerator implementation="com.jetbrains.lang.dart.projectWizard.DartProjectGenerator"/>

    <projectConfigurable groupId="language" instance="com.jetbrains.lang.dart.sdk.DartConfigurable"
                         id="dart.settings" key="dart.title" bundle="messages.DartBundle" nonDefaultProject="true"/>
    <library.presentationProvider implementation="com.jetbrains.lang.dart.sdk.DartSdkLibraryPresentationProvider"/>
    <library.type implementation="com.jetbrains.lang.dart.sdk.DartPackagesLibraryType"/>

    <treeStructureProvider implementation="com.jetbrains.lang.dart.projectView.DartTreeStructureProvider"/>
    <declarationRangeHandler key="com.jetbrains.lang.dart.psi.DartPsiCompositeElement"
                             implementationClass="com.jetbrains.lang.dart.contextInfo.DartDeclarationRangeHandler"/>
    <projectViewNestingRulesProvider implementation="com.jetbrains.lang.dart.projectView.DartNestingRulesProvider"/>
    <iconProvider implementation="com.jetbrains.lang.dart.projectView.DartIconProvider" order="first" id="DartIconProvider"/>
    <projectViewNodeDecorator implementation="com.jetbrains.lang.dart.projectView.DartNodeDecorator"/>

    <internalFileTemplate name="Dart File"/>

    <liveTemplateMacro implementation="com.jetbrains.lang.dart.ide.template.macro.DartClassNameMacro"/>
    <liveTemplateMacro implementation="com.jetbrains.lang.dart.ide.template.macro.DartMethodNameMacro"/>
    <liveTemplateMacro implementation="com.jetbrains.lang.dart.ide.template.macro.DartClassNameMethodNameMacro"/>
    <liveTemplateMacro implementation="com.jetbrains.lang.dart.ide.template.macro.DartMethodParametersMacro"/>
    <liveTemplateMacro implementation="com.jetbrains.lang.dart.ide.template.macro.DartMethodReturnTypeMacro"/>
    <liveTemplateMacro implementation="com.jetbrains.lang.dart.ide.template.macro.DartListVariableMacro"/>
    <liveTemplateMacro implementation="com.jetbrains.lang.dart.ide.template.macro.DartIterableVariableMacro"/>
    <liveTemplateMacro implementation="com.jetbrains.lang.dart.ide.template.macro.DartSuggestIndexNameMacro"/>
    <liveTemplateMacro implementation="com.jetbrains.lang.dart.ide.template.macro.DartSuggestVariableNameMacro"/>

    <liveTemplateContext contextId="DART" implementation="com.jetbrains.lang.dart.ide.template.DartTemplateContextType$Generic"/>
    <liveTemplateContext contextId="DART_STATEMENT" baseContextId="DART" implementation="com.jetbrains.lang.dart.ide.template.DartTemplateContextType$Statement"/>
    <defaultLiveTemplates file="liveTemplates/dart_miscellaneous.xml"/>
    <codeInsight.template.postfixTemplateProvider language="Dart"
       implementationClass="com.jetbrains.lang.dart.ide.template.postfix.DartPostfixTemplateProvider"/>

    <codeInsight.declarativeInlayProvider language="Dart"
                                          implementationClass="com.jetbrains.lang.dart.hints.DartInlayHintsProvider"
                                          isEnabledByDefault="true"
                                          group="OTHER_GROUP"
                                          providerId="dart.closing.labels"
                                          bundle="messages.DartBundle"
                                          nameKey="dart.inlay.hints.closing.labels.name"
                                          descriptionKey="dart.inlay.hints.closing.labels.description">
    </codeInsight.declarativeInlayProvider>

    <lang.surroundDescriptor language="Dart"
                             implementationClass="com.jetbrains.lang.dart.ide.surroundWith.DartExpressionSurroundDescriptor"/>
    <lang.surroundDescriptor language="Dart"
                             implementationClass="com.jetbrains.lang.dart.ide.surroundWith.DartStatementsSurroundDescriptor"/>

    <gotoClassContributor implementation="com.jetbrains.lang.dart.ide.DartClassContributor"/>
    <gotoSymbolContributor implementation="com.jetbrains.lang.dart.ide.DartSymbolContributor"/>

    <completion.contributor language="Dart" implementationClass="com.jetbrains.lang.dart.ide.completion.DartServerCompletionContributor"/>
    <gotoDeclarationHandler implementation="com.jetbrains.lang.dart.ide.completion.DartGotoDeclarationHandler"/>
    <lookup.charFilter implementation="com.jetbrains.lang.dart.ide.completion.DartCharFilter"/>
    <lang.smartEnterProcessor language="Dart"
                              implementationClass="com.jetbrains.lang.dart.ide.completion.DartServerStatementCompletionProcessor"/>

    <annotator language="Dart" implementationClass="com.jetbrains.lang.dart.ide.annotator.DartAnnotator"/>
    <annotator language="HTML" implementationClass="com.jetbrains.lang.dart.ide.annotator.DartAnnotator"/>
    <annotator language="XML" implementationClass="com.jetbrains.lang.dart.ide.annotator.DartAnnotator"/>

    <lang.findUsagesProvider language="Dart" implementationClass="com.jetbrains.lang.dart.ide.findUsages.DartFindUsagesProvider"/>
    <usageTypeProvider implementation="com.jetbrains.lang.dart.ide.findUsages.DartUsageTypeProvider"/>
    <findUsagesHandlerFactory implementation="com.jetbrains.lang.dart.ide.findUsages.DartServerFindUsagesHandlerFactory"/>
    <fileStructureGroupRuleProvider implementation="com.jetbrains.lang.dart.ide.findUsages.DartUnitMemberGroupRuleProvider"/>
    <fileStructureGroupRuleProvider implementation="com.jetbrains.lang.dart.ide.findUsages.DartClassMemberGroupRuleProvider"/>
    <elementDescriptionProvider implementation="com.jetbrains.lang.dart.psi.DartElementDescriptionProvider"/>

    <applicationService serviceImplementation="com.jetbrains.lang.dart.assists.DartQuickAssistSet"/>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention0</className>  <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention1</className>  <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention2</className>  <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention3</className>  <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention4</className>  <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention5</className>  <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention6</className>  <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention7</className>  <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention8</className>  <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention9</className>  <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention10</className> <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention11</className> <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention12</className> <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention13</className> <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>
    <intentionAction> <className>com.jetbrains.lang.dart.assists.DartQuickAssistIntention$DartQuickAssistIntention14</className> <language/> <bundleName>messages.DartBundle</bundleName> <categoryKey>inspections.group.name</categoryKey> <descriptionDirectoryName>DartQuickAssistIntention</descriptionDirectoryName></intentionAction>

    <projectService serviceImplementation="com.jetbrains.lang.dart.analyzer.DartAnalysisServerService"/>

    <toolWindow id="Dart Analysis" anchor="bottom" icon="DartIcons.Dart_13" doNotActivateOnStart="true" canCloseContents="false"
                factoryClass="com.jetbrains.lang.dart.ide.errorTreeView.DartAnalysisToolWindowFactory"/>

    <applicationService serviceImplementation="com.jetbrains.lang.dart.analyzer.DartClosingLabelManager"/>
    <applicationService serviceImplementation="com.jetbrains.lang.dart.folding.DartCodeFoldingSettings"/>

    <codeFoldingOptionsProvider instance="com.jetbrains.lang.dart.folding.DartCodeFoldingOptionsProvider" id="Dart" order="after Android,after C++,after General,after Go,after ObjectiveC"/>
    <editorNotificationProvider implementation="com.jetbrains.lang.dart.ide.actions.DartEditorNotificationsProvider"/>
    <consoleFilterProvider implementation="com.jetbrains.lang.dart.ide.runner.DartConsoleFilterProvider" order="first"/>
    <console.folding implementation="com.jetbrains.lang.dart.ide.runner.server.DartConsoleFolding"/>

    <xdebugger.breakpointType implementation="com.jetbrains.lang.dart.ide.runner.DartLineBreakpointType"/>
    <xdebugger.breakpointType implementation="com.jetbrains.lang.dart.ide.runner.DartExceptionBreakpointType"/>

    <configurationType implementation="com.jetbrains.lang.dart.ide.runner.server.DartCommandLineRunConfigurationType"/>
    <runConfigurationProducer implementation="com.jetbrains.lang.dart.ide.runner.server.DartCommandLineRuntimeConfigurationProducer"/>
    <configurationType implementation="com.jetbrains.lang.dart.ide.runner.server.DartRemoteDebugConfigurationType"/>
    <configurationType implementation="com.jetbrains.lang.dart.ide.runner.server.webdev.DartWebdevConfigurationType"/>
    <runConfigurationProducer implementation="com.jetbrains.lang.dart.ide.runner.server.webdev.DartWebdevConfigurationProducer"/>
    <configurationType implementation="com.jetbrains.lang.dart.ide.runner.test.DartTestRunConfigurationType"/>
    <runConfigurationProducer implementation="com.jetbrains.lang.dart.ide.runner.test.DartTestRunConfigurationProducer"/>

    <programRunner implementation="com.jetbrains.lang.dart.ide.runner.DartRunner"/>

    <lineIndentProvider implementation="com.jetbrains.lang.dart.ide.editor.DartLineIndentProvider"/>
    <testSourcesFilter implementation="com.jetbrains.lang.dart.test.DartTestSourcesFilter"/>

    <applicationService serviceImplementation="com.jetbrains.lang.dart.ide.codeInsight.DartCodeInsightSettings"/>
    <codeCompletionConfigurable instance="com.jetbrains.lang.dart.ide.editor.DartSmartKeysConfigurable"/>

    <backgroundPostStartupActivity implementation="com.jetbrains.lang.dart.DartStartupActivity"/>
    <vfs.asyncListener implementation="com.jetbrains.lang.dart.DartFileListener"/>

    <search.optionContributor implementation="com.jetbrains.lang.dart.DartSearchableOptionContributor"/>

    <lang.syntaxHighlighter language="Dart in Html" implementationClass="com.jetbrains.lang.dart.highlight.DartSyntaxHighlighter"/>
    <lang.parserDefinition language="Dart in Html" implementationClass="com.jetbrains.lang.dart.DartParserDefinition"/>
    <notificationGroup id="Dart Support" displayType="BALLOON"
                       bundle="messages.DartBundle" key="notification.group.dart.support"/>
    <notificationGroup id="Dart Analysis" displayType="TOOL_WINDOW" toolWindowId="Dart Analysis" isLogByDefault="false"
                       bundle="messages.DartBundle" key="notification.group.dart.analysis"/>
    <notificationGroup id="Dart Webdev" displayType="TOOL_WINDOW" toolWindowId="Dart Webdev" isLogByDefault="false"
                       bundle="messages.DartBundle" key="notification.group.dart.webdev"/>
    <notificationGroup id="Dart Analysis Server" displayType="BALLOON"
                       bundle="messages.DartBundle" key="notification.group.dart.analysis.server"/>
    <notificationGroup id="Dart Pub Tool" displayType="BALLOON"
                       bundle="messages.DartBundle" key="notification.group.dart.pub.tool"/>
    <notificationGroup id="Dart analysis issue" displayType="NONE"
                       bundle="messages.DartBundle" key="notification.group.dart.analysis.issue"/>

    <!--suppress PluginXmlCapitalization -->
    <registryKey defaultValue="true" description="Launch Dart Tooling Daemon and DevTools" key="dart.launch.dtd.and.devtools"/>
    <registryKey defaultValue="true" description="Dart macros support (SDK 3.4+)" key="dart.macros.support"/>

    <registryKey key="dart.server.vm.options" defaultValue="" description="Dart VM options to use when starting Dart Analysis Server process"/>
    <registryKey key="dart.server.additional.arguments" defaultValue="" description="Dart Analysis Server command line arguments"/>
    <registryKey key="dart.projects.without.pubspec" defaultValue="false" description="For special internal Dart projects only"/>
  </extensions>

  <extensions defaultExtensionNs="org.jetbrains">
    <webServerPathHandler implementation="com.jetbrains.lang.dart.pubServer.PubServerPathHandler"/>
  </extensions>

  <projectListeners>
    <listener class="com.jetbrains.lang.dart.DartWorkspaceModelChangeListener" topic="com.intellij.platform.backend.workspace.WorkspaceModelChangeListener"/>
    <listener class="com.jetbrains.lang.dart.ide.errorTreeView.DartAnalysisToolWindowFactory$DartToolWindowManagerListener"
              topic="com.intellij.openapi.wm.ex.ToolWindowManagerListener"/>
  </projectListeners>

  <actions>
    <action id="Dart.stop.dart.webdev.server" class="com.jetbrains.lang.dart.pubServer.StopDartWebdevServerAction"
            icon="AllIcons.Actions.Suspend"/>
    <action id="Dart.NewDartFile" class="com.jetbrains.lang.dart.ide.actions.CreateDartFileAction"
            icon="DartIcons.Dart_file">
      <add-to-group group-id="NewGroup" anchor="before" relative-to-action="NewFromTemplate"/>
    </action>
    <action id="Dart.Reanalyze" class="com.jetbrains.lang.dart.ide.errorTreeView.ReanalyzeDartSourcesAction"
            icon="AllIcons.Actions.Restart">
    </action>
    <!--suppress PluginXmlCapitalization -->
    <action id="Dart.Restart.Analysis.Server" class="com.jetbrains.lang.dart.ide.errorTreeView.RestartDartAnalysisServerAction"
            icon="AllIcons.Actions.ForceRefresh">
    </action>
    <action id="Dart.Analyzer.Diagnostics" class="com.jetbrains.lang.dart.ide.errorTreeView.AnalysisServerDiagnosticsAction">
    </action>
    <action id="Dart.DartStyle" class="com.jetbrains.lang.dart.ide.actions.DartStyleAction">
      <add-to-group group-id="CodeFormatGroup" anchor="last"/>
      <add-to-group group-id="EditorPopupMenu" relative-to-action="EditorPopupMenu1" anchor="after"/>
      <add-to-group group-id="ProjectViewPopupMenuModifyGroup" anchor="before" relative-to-action="$Delete"/>
    </action>
    <action id="Dart.DartSortMembers" class="com.jetbrains.lang.dart.ide.actions.DartSortMembersAction">
      <add-to-group group-id="CodeFormatGroup" anchor="after" relative-to-action="Dart.DartStyle"/>
    </action>
    <!--<action id="Dart.DartFix" class="com.jetbrains.lang.dart.ide.actions.DartFixAction"/>-->
    <action id="Generate.Constructor.Dart" class="com.jetbrains.lang.dart.ide.generation.DartGenerateConstructorAction">
      <add-to-group anchor="first" group-id="GenerateGroup"/>
    </action>
    <action id="Generate.Named.Constructor.Dart" class="com.jetbrains.lang.dart.ide.generation.DartGenerateNamedConstructorAction">
      <add-to-group anchor="after" relative-to-action="Generate.Constructor.Dart"  group-id="GenerateGroup"/>
    </action>
    <action id="Generate.GetAccessor.Dart" class="com.jetbrains.lang.dart.ide.generation.DartGenerateGetterAction">
      <add-to-group anchor="after" relative-to-action="Generate.Named.Constructor.Dart" group-id="GenerateGroup"/>
    </action>
    <action id="Generate.SetAccessor.Dart" class="com.jetbrains.lang.dart.ide.generation.DartGenerateSetterAction">
      <add-to-group anchor="after" relative-to-action="Generate.GetAccessor.Dart" group-id="GenerateGroup"/>
    </action>
    <action id="Generate.GetSetAccessor.Dart" class="com.jetbrains.lang.dart.ide.generation.DartGenerateGetterSetterAction">
      <add-to-group anchor="after" relative-to-action="Generate.SetAccessor.Dart" group-id="GenerateGroup"/>
    </action>
    <!--suppress PluginXmlCapitalization -->
    <action id="Generate.ToString.Dart" class="com.jetbrains.lang.dart.ide.generation.DartGenerateToStringAction">
      <add-to-group anchor="after" relative-to-action="Generate.GetSetAccessor.Dart" group-id="GenerateGroup"/>
    </action>
    <!--suppress PluginXmlCapitalization -->
    <action id="Generate.EqualsAndHashcode.Dart" class="com.jetbrains.lang.dart.ide.generation.DartGenerateEqualsAndHashcodeAction">
      <add-to-group anchor="after" relative-to-action="Generate.ToString.Dart" group-id="GenerateGroup"/>
    </action>

    <group id="Dart.pub.actions.context.menu.group">
      <action id="Dart.pub.get" class="com.jetbrains.lang.dart.ide.actions.DartPubGetAction"/>
      <action id="Dart.pub.upgrade" class="com.jetbrains.lang.dart.ide.actions.DartPubUpgradeAction"/>
      <action id="Dart.build" class="com.jetbrains.lang.dart.ide.actions.DartPubBuildAction"/>
      <separator/>
      <add-to-group group-id="EditorPopupMenu" anchor="first"/>
      <add-to-group group-id="ProjectViewPopupMenu" relative-to-action="CutCopyPasteGroup" anchor="before"/>
    </group>
    <action id="Dart.pub.outdated" class="com.jetbrains.lang.dart.ide.actions.DartPubOutdatedAction"/>
    <action id="Dart.pub.cache.repair" class="com.jetbrains.lang.dart.ide.actions.DartPubCacheRepairAction"/>
    <action id="DartCopyDtdUriAction" class="com.jetbrains.lang.dart.ide.toolingDaemon.DartCopyDtdUriAction"/>
  </actions>
</idea-plugin>
