<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<!--
 #=============================================================================#
 # Copyright (c) 2011, 2021 Stephan Wahlbrink and others.
 # 
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License 2.0 which is available at
 # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 # which is available at https://www.apache.org/licenses/LICENSE-2.0.
 # 
 # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 # 
 # Contributors:
 #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
 #=============================================================================#
-->

<plugin>
   
   <extension
         point="org.eclipse.core.variables.dynamicVariables">
      <variable
            name="file_name_base"
            description="%variables_FileNameBase_description"
            resolver="org.eclipse.statet.ecommons.resources.core.variables.ResourceVariableResolver"
            supportsArgument="true">
      </variable>
      <variable
            name="file_name_ext"
            description="%variables_FileNameExt_description"
            resolver="org.eclipse.statet.ecommons.resources.core.variables.ResourceVariableResolver"
            supportsArgument="true">
      </variable>
      <variable
            name="resource_enc"
            description="%variables_ResourceEnc_description"
            resolver="org.eclipse.statet.ecommons.resources.core.variables.ResourceVariableResolver"
            supportsArgument="true">
      </variable>
      <variable
            name="container_enc"
            description="%variables_ContainerEnc_description"
            resolver="org.eclipse.statet.ecommons.resources.core.variables.ResourceVariableResolver"
            supportsArgument="true">
      </variable>
      <variable
            name="project_enc"
            description="%variables_ProjectEnc_description"
            resolver="org.eclipse.statet.ecommons.resources.core.variables.ResourceVariableResolver"
            supportsArgument="true">
      </variable>
   </extension>
   
   <extension
         point="org.eclipse.core.expressions.propertyTesters">
      <propertyTester
            id="org.eclipse.statet.ecommons.debug.expressionProperties.DebugElement"
            namespace="org.eclipse.statet.ecommons.debug"
            properties="equalsModelIdentifier"
            type="org.eclipse.core.runtime.IAdaptable"
            class="org.eclipse.statet.internal.ecommons.debug.core.DebugElementPropertyTester">
      </propertyTester>
   </extension>
   
</plugin>
