<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
   <extension-point id="pydev_debug_console_input_listener" name="pydev_debug_console_input_listener" schema="schema/pydev_debug_console_input_listener.exsd"/>
   <extension-point id="pydev_debug_command_line_participant" name="pydev_debug_command_line_participant" schema="schema/pydev_debug_command_line_participant.exsd"/>

<extension
      point="org.eclipse.ui.console.consolePageParticipants">
   <consolePageParticipant
         class="org.python.pydev.debug.console_actions.ConsoleRestartLaunchPageParticipant"
         id="org.python.pydev.debug.console_actions.ConsoleRestartLaunchPageParticipant">
      <enablement></enablement>
   </consolePageParticipant>
</extension>

<!-- Have an instance observing all the PyEdit editors -->
   <extension point="org.python.pydev.pydev_pyedit_listener">
  		<pyedit_listener_participant class="com.python.pydev.interactiveconsole.EvaluateActionSetter"/>
   </extension>

<!-- command: activate interactive console-->
   <extension point="org.eclipse.ui.commands">
      <command
            description="Activates the interactive console."
            id="org.python.pydev.interactiveconsole.evaluateActionSetter"
            categoryId="org.python.pydev.ui.category.source"
            name="Interactive Console">
      </command>
   </extension>
<!-- binding: activate interactive console-->
   <extension point="org.eclipse.ui.bindings">
      <key
            sequence="M1+M3+Enter"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.interactiveconsole.evaluateActionSetter"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
   </extension>


<!--- run keybindings -->
<extension point="org.eclipse.ui.editorActions">
<editorContribution
     targetID="org.python.pydev.editor.PythonEditor"
     id="org.python.pydev.debug.editor.editorContribution">
     <action
           definitionId="org.python.pydev.debug.ui.actions.runEditorBasedOnNatureTypeAction"
           label="Run As Python"
           class="org.python.pydev.debug.ui.actions.RunEditorBasedOnNatureTypeAction"
           id="org.python.pydev.debug.ui.actions.runEditorBasedOnNatureTypeAction">
     </action>
     <action
           definitionId="org.python.pydev.debug.ui.actions.debugEditorBasedOnNatureTypeAction"
           label="Run As Python"
           class="org.python.pydev.debug.ui.actions.DebugEditorBasedOnNatureTypeAction"
           id="org.python.pydev.debug.ui.actions.debugEditorBasedOnNatureTypeAction">
     </action>
     <action
           definitionId="org.python.pydev.debug.ui.actions.runEditorAsCustomUnitTestAction"
           label="Run As Jython"
           class="org.python.pydev.debug.ui.actions.RunEditorAsCustomUnitTestAction"
           id="org.python.pydev.debug.ui.actions.runEditorAsCustomUnitTestAction">
     </action>
     <action
           definitionId="org.python.pydev.debug.ui.actions.relaunchLastAction"
           label="Relaunch last pydev launch"
           class="org.python.pydev.debug.console_actions.RelaunchLastAction"
           id="org.python.pydev.debug.ui.actions.relaunchLastAction">
     </action>
     <action
           definitionId="org.python.pydev.debug.ui.actions.terminateAllLaunchesAction"
           label="Terminate all launches"
           class="org.python.pydev.debug.console_actions.TerminateAllLaunchesAction"
           id="org.python.pydev.debug.ui.actions.terminateAllLaunchesAction">
     </action>
</editorContribution>
</extension>
<!--- run keybindings:commands -->
<extension point="org.eclipse.ui.commands">
      <category
            name="PyDev - Run"
            description="Python run category"
            id="org.python.pydev.ui.category.run">
      </category>
      <command
            description="Run the editor based on the python nature"
            id="org.python.pydev.debug.ui.actions.runEditorBasedOnNatureTypeAction"
            categoryId="org.python.pydev.ui.category.run"
            name="Run editor with current interpreter">
      </command>
      <command
            description="Debug the editor based on the python nature"
            id="org.python.pydev.debug.ui.actions.debugEditorBasedOnNatureTypeAction"
            categoryId="org.python.pydev.ui.category.run"
            name="Debug editor with current interpreter">
      </command>
      <command
            description="Run custom tests from editor."
            id="org.python.pydev.debug.ui.actions.runEditorAsCustomUnitTestAction"
            categoryId="org.python.pydev.ui.category.run"
            name="Run custom tests">
      </command>
      <command
            description="Relaunch last pydev launch."
            id="org.python.pydev.debug.ui.actions.relaunchLastAction"
            categoryId="org.python.pydev.ui.category.run"
            name="Relaunch last pydev launch">
      </command>
      <command
            description="Terminate all launches"
            id="org.python.pydev.debug.ui.actions.terminateAllLaunchesAction"
            categoryId="org.python.pydev.ui.category.run"
            name="Terminate all launches">
      </command>
	  <command
            description="Display text evaluation from debugger"
	        id="org.python.pydev.debug.command.Display"
            categoryId="org.python.pydev.ui.category.run"
	  	    name="Display text evaluation from debugger"
	  	    >
      </command>
</extension>


<!--- run keybindings:bindings -->
<extension point="org.eclipse.ui.bindings">
      <key
            sequence="F9"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.debug.ui.actions.runEditorBasedOnNatureTypeAction"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M2+F9"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.debug.ui.actions.debugEditorBasedOnNatureTypeAction"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+F9"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.debug.ui.actions.runEditorAsCustomUnitTestAction"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+M2+F9"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.debug.ui.actions.relaunchLastAction"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+M3+F9"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.debug.ui.actions.terminateAllLaunchesAction"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <!-- Ctrl+Shift == M1+M2 -->
	  <key sequence="M1+M2+D"
	  		commandId="org.python.pydev.debug.command.Display"
	  		contextId="org.python.pydev.ui.editor.scope"
	  		schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
	  		/>

</extension>


<!--- launcher -->
<extension point="org.eclipse.debug.core.launchConfigurationTypes">
	<launchConfigurationType
        delegate="org.python.pydev.debug.ui.launching.RegularLaunchConfigurationDelegate"
        id="org.python.pydev.debug.regularLaunchConfigurationType"
        modes="run, debug, interactive"
        name="Python Run"
        public="true">
	</launchConfigurationType>
	<launchConfigurationType
        delegate="org.python.pydev.debug.ui.launching.IronpythonLaunchConfigurationDelegate"
        id="org.python.pydev.debug.ironpythonLaunchConfigurationType"
        modes="run, debug, interactive"
        name="IronPython Run"
        public="true">
	</launchConfigurationType>
	<launchConfigurationType
        delegate="org.python.pydev.debug.ui.launching.UnittestLaunchConfigurationDelegate"
        id="org.python.pydev.debug.unittestLaunchConfigurationType"
        modes="run, debug"
        name="Python unittest"
        public="true">
	</launchConfigurationType>
	<launchConfigurationType
        delegate="org.python.pydev.debug.ui.launching.JythonUnittestLaunchConfigurationDelegate"
        id="org.python.pydev.debug.jythonUnittestLaunchConfigurationType"
        modes="run, debug"
        name="Jython unittest"
        public="true">
	</launchConfigurationType>
	<launchConfigurationType
        delegate="org.python.pydev.debug.ui.launching.IronpythonUnittestLaunchConfigurationDelegate"
        id="org.python.pydev.debug.ironpythonUnittestLaunchConfigurationType"
        modes="run, debug"
        name="IronPython unittest"
        public="true">
	</launchConfigurationType>
    <launchConfigurationType
        delegate="org.python.pydev.debug.ui.launching.JythonLaunchConfigurationDelegate"
        id="org.python.pydev.debug.jythonLaunchConfigurationType"
        modes="run, debug, interactive"
        name="Jython run"
        public="true"
        sourceLocatorId="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"
        sourcePathComputerId="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer">
     </launchConfigurationType>
    <!-- Make interactive console work with debugger infractstructure for variables view, expressions... -->
    <launchConfigurationType
          delegate="org.python.pydev.debug.ui.launching.InteractiveConsoleConfigurationDelegate"
          id="org.python.pydev.debug.interactiveConsoleConfigurationType"
          modes="run, debug, interactive"
          name="PyDev Interactive Console"
          public="false">
    </launchConfigurationType>

</extension>
<!--- the launcher icon  -->
<extension point="org.eclipse.debug.ui.launchConfigurationTypeImages">
	<launchConfigurationTypeImage
		icon="icons/python_run.png"
		configTypeID="org.python.pydev.debug.regularLaunchConfigurationType"
		id="org.python.pydev.debug.ui.launchConfigurationTypeImage">
	</launchConfigurationTypeImage>
	<launchConfigurationTypeImage
		icon="icons/ironpython_run.png"
		configTypeID="org.python.pydev.debug.ironpythonLaunchConfigurationType"
		id="org.python.pydev.debug.ui.launchConfigurationTypeImage">
	</launchConfigurationTypeImage>
	<launchConfigurationTypeImage
		icon="icons/python_unit.png"
		configTypeID="org.python.pydev.debug.unittestLaunchConfigurationType"
		id="org.python.pydev.debug.ui.launchConfigurationTypeImage">
	</launchConfigurationTypeImage>
	<launchConfigurationTypeImage
		icon="icons/jython_unit.png"
		configTypeID="org.python.pydev.debug.jythonUnittestLaunchConfigurationType"
		id="org.python.pydev.debug.ui.launchConfigurationTypeImage">
	</launchConfigurationTypeImage>
	<launchConfigurationTypeImage
		icon="icons/ironpython_unit.png"
		configTypeID="org.python.pydev.debug.ironpythonUnittestLaunchConfigurationType"
		id="org.python.pydev.debug.ui.launchConfigurationTypeImage">
	</launchConfigurationTypeImage>
	<launchConfigurationTypeImage
		icon="icons/jython_run.png"
		configTypeID="org.python.pydev.debug.jythonLaunchConfigurationType"
		id="org.python.pydev.debug.ui.launchConfigurationTypeImage">
	</launchConfigurationTypeImage>
	<!-- TODO find more appropriate icon for interactive console -->
    <!-- Make interactive console work with debugger infractstructure for variables view, expressions... -->
	<launchConfigurationTypeImage
		configTypeID="org.python.pydev.debug.interactiveConsoleConfigurationType"
		icon="icons/python_coverage.png"
		id="org.python.pydev.debug.ui.interactiveConsoleLaunchConfigurationTypeImage">
	</launchConfigurationTypeImage>
</extension>
<!--- launcher tab group -->
<extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">

	<!--IronPython-->
	<launchConfigurationTabGroup
		type="org.python.pydev.debug.ironpythonLaunchConfigurationType"
		class="org.python.pydev.debug.ui.IronpythonTabGroup"
		id="org.python.pydev.debug.ui.IronpythonTabGroup">
	</launchConfigurationTabGroup>
    <launchConfigurationTabGroup
        type="org.python.pydev.debug.ironpythonUnittestLaunchConfigurationType"
        class="org.python.pydev.debug.ui.IronpythonUnittestTabGroup"
        id="org.python.pydev.debug.ui.IronpythonTabGroup">
    </launchConfigurationTabGroup>


	<!--Python-->
	<launchConfigurationTabGroup
		type="org.python.pydev.debug.regularLaunchConfigurationType"
		class="org.python.pydev.debug.ui.PythonTabGroup"
		id="org.python.pydev.debug.ui.PythonTabGroup">
	</launchConfigurationTabGroup>
	<launchConfigurationTabGroup
		type="org.python.pydev.debug.unittestLaunchConfigurationType"
		class="org.python.pydev.debug.ui.PythonUnittestTabGroup"
		id="org.python.pydev.debug.ui.PythonTabGroup">
	</launchConfigurationTabGroup>


	<!--Jython-->
	<launchConfigurationTabGroup
		type="org.python.pydev.debug.jythonUnittestLaunchConfigurationType"
		class="org.python.pydev.debug.ui.JythonUnittestTabGroup"
		id="org.python.pydev.debug.ui.JythonTabGroup">
	</launchConfigurationTabGroup>
	<launchConfigurationTabGroup
		type="org.python.pydev.debug.jythonLaunchConfigurationType"
		class="org.python.pydev.debug.ui.JythonTabGroup"
		id="org.python.pydev.debug.ui.JythonTabGroup">
	</launchConfigurationTabGroup>

</extension>

<!--- launcher pop up over a python file -->
<extension point="org.eclipse.core.expressions.propertyTesters">
	<propertyTester
		class="org.python.pydev.debug.ui.launching.InterpreterTypeTester"
		id="org.python.pydev.debug.ui.launching.LaunchableTester"
		namespace="org.python.pydev.debug.ui"
		properties="interpreterType"
		type="org.eclipse.core.runtime.IAdaptable">
	</propertyTester>
	<propertyTester
		namespace="org.python.pydev.debug.ui"
		properties="python_type"
		type="java.lang.Object"
		class="org.python.pydev.debug.ui.PythonTypePropertyTester"
		id="org.python.pydev.debug.ui.python_type">
	</propertyTester>
	<propertyTester
		namespace="org.python.pydev.debug.ui"
		properties="executable_directory"
		type="java.lang.Object"
		class="org.python.pydev.debug.ui.ExecutableDirectoryPropertyTester"
		id="org.python.pydev.debug.ui.executable_directory">
	</propertyTester>

</extension>
<!--- launch shortcuts -->
<extension point="org.eclipse.debug.ui.launchShortcuts">
	<shortcut
		label="Python Run"
		icon="icons/python_run.png"
		modes="run, debug"
		class="org.python.pydev.debug.ui.launching.LaunchShortcut"
		id="org.python.pydev.debug.ui.launchShortcut.python">
		<!--this adds it to run-as (taken from \eclipse\plugins\org.eclipse.jdt.junit_3.0.1) -->
        <contextualLaunch>
           <enablement>
              <with variable="selection">
                 <count value="1"/>
           		 <iterate>
           		    <and>
	           		 	<or>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.py"/>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.pyw"/>
                  		    <test property="org.python.pydev.debug.ui.python_type"/>
                  		    <test property="org.python.pydev.debug.ui.executable_directory"/>
	               		</or>
               		    <test property="org.eclipse.debug.ui.projectNature" value="org.python.pydev.pythonNature"/>
              		    <test property="org.python.pydev.debug.ui.interpreterType" value="python"/>
               		</and>
           		 </iterate>
              </with>
           </enablement>
        </contextualLaunch>
        <configurationType id="org.python.pydev.debug.regularLaunchConfigurationType"/>
	</shortcut>
	<shortcut
		label="IronPython Run"
		icon="icons/ironpython_run.png"
		modes="run, debug"
		class="org.python.pydev.debug.ui.launching.IronpythonLaunchShortcut"
		id="org.python.pydev.debug.ui.launchShortcut.ironpython">
		<!--this adds it to run-as (taken from \eclipse\plugins\org.eclipse.jdt.junit_3.0.1) -->
        <contextualLaunch>
           <enablement>
              <with variable="selection">
                 <count value="1"/>
           		 <iterate>
           		    <and>
	           		 	<or>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.py"/>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.pyw"/>
	               		    <test property="org.python.pydev.debug.ui.python_type"/>
	               		</or>
               		    <test property="org.eclipse.debug.ui.projectNature" value="org.python.pydev.pythonNature"/>
              		    <test property="org.python.pydev.debug.ui.interpreterType" value="ironpython"/>
               		</and>

           		 </iterate>
              </with>
           </enablement>
        </contextualLaunch>
        <configurationType id="org.python.pydev.debug.ironpythonLaunchConfigurationType"/>
	</shortcut>
	<shortcut
		label="Jython Run"
		icon="icons/jython_run.png"
		modes="run, debug"
		class="org.python.pydev.debug.ui.launching.JythonLaunchShortcut"
		id="org.python.pydev.debug.ui.launchShortcut.jython">
		<!--this adds it to run-as (taken from \eclipse\plugins\org.eclipse.jdt.junit_3.0.1) -->
        <contextualLaunch>
           <enablement>
              <with variable="selection">
                 <count value="1"/>
           		 <iterate>
           		    <and>
	           		 	<or>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.py"/>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.pyw"/>
	               		    <test property="org.python.pydev.debug.ui.python_type"/>
	               		</or>
               		    <test property="org.eclipse.debug.ui.projectNature" value="org.python.pydev.pythonNature"/>
              		    <test property="org.python.pydev.debug.ui.interpreterType" value="jython"/>
               		</and>
           		 </iterate>
              </with>
           </enablement>
        </contextualLaunch>
        <configurationType id="org.python.pydev.debug.jythonLaunchConfigurationType"/>
	</shortcut>
	<shortcut
		label="Python unit-test"
		icon="icons/python_unit.png"
		modes="run, debug"
		class="org.python.pydev.debug.ui.launching.UnitTestLaunchShortcut"
		id="org.python.pydev.debug.ui.launchShortcut.python.unittest">
        <contextualLaunch>
           <enablement>
              <with variable="selection">
           		 <iterate>
           		    <and>
	           		 	<or>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.py"/>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.pyw"/>
	               		    <test property="org.python.pydev.debug.ui.python_type"/>
                            <adapt type="org.eclipse.core.resources.IContainer" />
	               		</or>
               		    <test property="org.eclipse.debug.ui.projectNature" value="org.python.pydev.pythonNature"/>
              		    <test property="org.python.pydev.debug.ui.interpreterType" value="python"/>
               		</and>

           		 </iterate>
              </with>
           </enablement>
        </contextualLaunch>
        <configurationType id="org.python.pydev.debug.unittestLaunchConfigurationType"/>
	</shortcut>
	<shortcut
		label="Jython unit-test"
		icon="icons/jython_unit.png"
		modes="run, debug"
		class="org.python.pydev.debug.ui.launching.JythonUnitTestLaunchShortcut"
		id="org.python.pydev.debug.ui.launchShortcut.jython.unittest">
        <contextualLaunch>
           <enablement>
              <with variable="selection">
           		 <iterate>
           		    <and>
	           		 	<or>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.py"/>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.pyw"/>
	               		    <test property="org.python.pydev.debug.ui.python_type"/>
                            <adapt type="org.eclipse.core.resources.IContainer" />
	               		</or>
               		    <test property="org.eclipse.debug.ui.projectNature" value="org.python.pydev.pythonNature"/>
              		    <test property="org.python.pydev.debug.ui.interpreterType" value="jython"/>
               		</and>

           		 </iterate>
              </with>
           </enablement>
        </contextualLaunch>
        <configurationType id="org.python.pydev.debug.jythonUnittestLaunchConfigurationType"/>
	</shortcut>
	<shortcut
		label="IronPython unit-test"
		icon="icons/ironpython_unit.png"
		modes="run, debug"
		class="org.python.pydev.debug.ui.launching.IronpythonUnitTestLaunchShortcut"
		id="org.python.pydev.debug.ui.launchShortcut.ironpython.unittest">
        <contextualLaunch>
           <enablement>
              <with variable="selection">
           		 <iterate>
           		    <and>
	           		 	<or>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.py"/>
	               		    <test property="org.eclipse.debug.ui.matchesPattern" value="*.pyw"/>
	               		    <test property="org.python.pydev.debug.ui.python_type"/>
                            <adapt type="org.eclipse.core.resources.IContainer" />
	               		</or>
               		    <test property="org.eclipse.debug.ui.projectNature" value="org.python.pydev.pythonNature"/>
              		    <test property="org.python.pydev.debug.ui.interpreterType" value="ironpython"/>
               		</and>

           		 </iterate>
              </with>
           </enablement>
        </contextualLaunch>
        <configurationType id="org.python.pydev.debug.ironpythonUnittestLaunchConfigurationType"/>
	</shortcut>
</extension>



<!--- CONTRIBUTED VIEWS -->
<extension point="org.eclipse.ui.views">
   <view
        class="org.python.pydev.debug.codecoverage.PyCodeCoverageView"
        icon="icons/python_coverage.png"
        category="org.python.pydev"
        name="Code Coverage"
        id="org.python.pydev.views.PyCodeCoverageView"/>
   <view
        class="org.python.pydev.debug.profile.ProfileView"
        icon="icons/python_profile.png"
        category="org.python.pydev"
        name="Profile (PyVmMonitor)"
        id="org.python.pydev.debug.profile.ProfileView"/>
   <view
         class="org.python.pydev.debug.referrers.ReferrersView"
         icon="icons/referrers.png"
         category="org.python.pydev"
         name="Referrers View"
         id="org.python.pydev.views.ReferrersView"/>
   <view
         class="org.python.pydev.debug.curr_exception.CurrentExceptionView"
         icon="icons/python_exception_breakpoint.png"
         category="org.python.pydev"
         name="Caught Exceptions"
         id="org.python.pydev.views.CurrentExceptionView"/>
   <!--- removed until the implementation is improved
   <view
        icon="icons/python_run.png"
        class="org.python.pydev.debug.unittest.TestReportView"
        category="org.python.pydev"
        name="Unit Test Report View"
        id="org.python.pydev.debug.views.TestReportView"/>
   -->
</extension>

<extension
   id="pydev_coverage_marker"
   name="PyDev coverage marker"
   point="org.eclipse.core.resources.markers">
   <super type="org.eclipse.core.resources.problemmarker"/>
   <persistent value="false"/>
</extension>


<!--- console line tracking -->
<extension
	point="org.eclipse.debug.ui.consoleLineTrackers">
	<consoleLineTracker
		class="org.python.pydev.debug.ui.PythonConsoleLineTracker"
		processType="PYDEV.PYTHON"
		id="org.python.pydev.debug.ui.PythonConsoleLineTracker">
	</consoleLineTracker>
</extension>
<extension
	point="org.eclipse.debug.ui.consoleLineTrackers">
	<consoleLineTracker
		class="org.python.pydev.debug.ui.PythonConsoleLineTracker"
		processType="java"
		id="org.python.pydev.debug.ui.PythonConsoleLineTracker">
	</consoleLineTracker>
</extension>









<!-- DEBUGGING -->
<!-- breakpoint ruler action -->
<extension point="org.eclipse.ui.editorActions">
	<editorContribution
		id="org.python.pydev.debug.BreakpointRulerActions"
		targetID="org.python.pydev.editor.PythonEditor">
		<action
			id="org.python.pydev.debug.BreakpointRulerAction"
			actionID="RulerDoubleClick"
			label="Add breakpoint"
			class="org.python.pydev.debug.ui.actions.ManageBreakpointRulerActionDelegate">
		</action>
	</editorContribution>
</extension>

<!-- popup menu -->
<extension point="org.eclipse.ui.popupMenus">
	<viewerContribution
    	id="org.python.pydev.debug.PyEditPopupActions"
    	targetID="#PyEditRulerContext">
		<action
		    id="org.python.pydev.debug.ui.actions.PythonBreakpointPropertiesRulerActionDelegate"
			label="Breakpoint properties"
            helpContextId="breakpoint_properties_action_context"
			menubarPath="debug"
			class="org.python.pydev.debug.ui.actions.PythonBreakpointPropertiesRulerActionDelegate">
		</action>
    	<action
			id="org.python.pydev.debug.ui.actions.EnableDisableBreakpointRulerActionDelegate"
			label="Enable breakpoint"
			menubarPath="debug"
			helpContextId="enable_disable_breakpoint_action_context"
			class="org.python.pydev.debug.ui.actions.EnableDisableBreakpointRulerActionDelegate">
		</action>
		<action
			id="org.python.pydev.debug.ui.actions.ManageBreakpointRulerActionDelegate"
			label="Add Breakpoint"
			menubarPath="debug"
			class="org.python.pydev.debug.ui.actions.ManageBreakpointRulerActionDelegate">
		</action>
	</viewerContribution>

	<viewerContribution id="org.python.pydev.debug.WatchExpression" targetID="#PyEditContext">
		<action
	        class="org.python.pydev.debug.ui.actions.WatchExpressionAction"
	        icon="icons/watch_exp.gif"
	        id="org.python.pydev.debug.ui.actions.WatchExpression"
	        label="Watch"
	        menubarPath="org.python.pydev.editor.watchexpression">
         </action>
		 <action class="org.python.pydev.debug.ui.actions.EvalExpressionAction"
			id="org.python.pydev.debug.command.Display"
			label="Display"
			menubarPath="org.python.pydev.editor.watchexpression"
			definitionId="org.python.pydev.debug.command.Display">
		 </action>
	</viewerContribution>
 <objectContribution
       adaptable="false"
       id="org.python.pydev.debug.PythonBreakPointActions"
       objectClass="org.python.pydev.debug.model.PyBreakpoint">
    <action
          class="org.python.pydev.debug.ui.actions.PythonBreakpointPropertiesRulerAction"
          enablesFor="1"
          helpContextId="breakpoint_suspend_policy_toggle_action_context"
          icon="icons/breakmarker_conditional.gif"
          id="org.python.pydev.debug.PythonBreakpointProperties"
          label="%breakpointPropertiesAction.label"
          menubarPath="emptyBreakpointGroup"/>
 </objectContribution>
</extension>

<!-- breakpoints
	need a marker to mark the breakpoint
	breakpoint associated with marker for BreakpointManager
	marker image provider to provide name for the marker
-->
<!-- org.eclipse.debug.core.breakpointMarker -->
<extension
	point="org.eclipse.core.resources.markers"
	id="pyStopBreakpointMarker">
	<super type="org.eclipse.debug.core.lineBreakpointMarker"/>
	<persistent value="true"/>
</extension>
<extension
	point="org.eclipse.core.resources.markers"
	id="pyConditionalStopBreakpointMarker">
	<super type="org.eclipse.debug.core.lineBreakpointMarker"/>
	<persistent value="true"/>
</extension>
<extension
	point="org.eclipse.core.resources.markers"
	id="djangoStopBreakpointMarker">
	<super type="org.eclipse.debug.core.lineBreakpointMarker"/>
	<persistent value="true"/>
</extension>


<extension
	point="org.eclipse.debug.core.breakpoints">
	<breakpoint id="pythonStopBreakpoint"
		markerType="org.python.pydev.debug.pyStopBreakpointMarker"
		class="org.python.pydev.debug.model.PyBreakpoint"/>
</extension>
<extension
	point="org.eclipse.debug.core.breakpoints">
	<breakpoint id="pyConditionalStopBreakpointMarker"
		markerType="org.python.pydev.debug.pyConditionalStopBreakpointMarker"
		class="org.python.pydev.debug.model.PyBreakpoint"/>
</extension>
<extension
	point="org.eclipse.debug.core.breakpoints">
	<breakpoint id="djangoStopBreakpoint"
		markerType="org.python.pydev.debug.djangoStopBreakpointMarker"
		class="org.python.pydev.debug.model.PyBreakpoint"/>
</extension>

<extension
	point="org.eclipse.ui.ide.markerImageProviders">
	<imageprovider
       class="org.python.pydev.debug.model.PyBreakpoint"
       icon="icons/breakmarker.gif"
       id="pythonBreakPointImage"
       markertype="org.python.pydev.debug.pyStopBreakpointMarker"/>
 <imageprovider
       class="org.python.pydev.debug.model.PyBreakpoint"
       icon="icons/breakmarker_conditional.gif"
       id="pythonConditionalBreakPointImage"
       markertype="org.python.pydev.debug.pyConditionalStopBreakpointMarker"/>
	<imageprovider
       class="org.python.pydev.debug.model.PyBreakpoint"
       icon="icons/breakmarker_django.png"
       id="djangoBreakPointImage"
       markertype="org.python.pydev.debug.djangoStopBreakpointMarker"/>
</extension>

<extension point = "org.eclipse.debug.ui.debugModelPresentations">
	<debugModelPresentation
		class = "org.python.pydev.debug.model.PyDebugModelPresentation"
		id = "org.python.pydev.debug">
	</debugModelPresentation>
</extension>

<extension point="org.eclipse.debug.core.watchExpressionDelegates">
	<watchExpressionDelegate
		debugModel="org.python.pydev.debug"
		delegateClass="org.python.pydev.debug.model.PyWatchExpressionDelegate"/>
</extension>
<extension
      point="org.eclipse.ui.propertyPages">
   <page
         adaptable="true"
         class="org.python.pydev.debug.ui.propertypages.PythonBreakpointPage"
         id="org.pydev.debug.ui.propertypages.common"
         name="Breakpoint Properties"
         objectClass="org.python.pydev.debug.model.PyBreakpoint"/>
</extension>


<extension point="org.eclipse.ui.handlers">
	<handler class="org.python.pydev.debug.ui.actions.EvalExpressionAction" commandId="org.python.pydev.debug.command.Display">
	</handler>
</extension>


<extension point="org.eclipse.ui.keywords" name="Interpreter Keywords">
    <keyword id="org.python.pydev.debugpage.keywords"  label="donttrace reload"/>
</extension>

<extension point="org.eclipse.ui.preferencePages">
      <page
            name="Run"
            category="org.python.pydev.prefs"
            class="org.python.pydev.debug.ui.RunPreferencesPage"
            id="org.python.pydev.prefs.runPage">
      </page>
      <page
            name="Debug"
            category="org.python.pydev.prefs"
            class="org.python.pydev.debug.ui.DebugPrefsPage"
            id="org.python.pydev.prefs.debugPage">
            <keywordReference id="org.python.pydev.debugpage.keywords"/>
      </page>
</extension>

<extension point="org.eclipse.ui.preferencePages">
      <page
            name="Source Locator"
            category="org.python.pydev.prefs.debugPage"
            class="org.python.pydev.debug.ui.SourceLocatorPrefsPage"
            id="org.python.pydev.prefs.debugPage.SourceLocatorPrefsPage">
      </page>
</extension>

<extension point="org.eclipse.ui.preferencePages">
      <page
            name="Path Mappings"
            category="org.python.pydev.prefs.debugPage"
            class="org.python.pydev.debug.ui.PathMappingsPrefsPage"
            id="org.python.pydev.prefs.debugPage.PathMappingsPrefsPage">
      </page>
</extension>

<extension point="org.python.pydev.pydev_pyedit_listener">
	<pyedit_listener_participant class="org.python.pydev.debug.ui.PyEditBreakpointSync"/>
</extension>
<extension point="org.python.pydev.pydev_pyedit_listener">
	<pyedit_listener_participant class="org.python.pydev.debug.model.PyReloadCode"/>
</extension>
<extension point="org.python.pydev.pydev_pyedit_listener">
	<pyedit_listener_participant class="org.python.pydev.debug.newconsole.prefs.InteractiveConsoleCommandsSyncListener"/>
</extension>



<!-- preferences -->
  <extension point="org.eclipse.core.runtime.preferences">
     <initializer class="org.python.pydev.debug.core.PydevDebugPreferencesInitializer"/>
  </extension>

<!-- console stuff -->
  <extension point="org.eclipse.ui.console.consoleFactories">
    <consoleFactory
      class="org.python.pydev.debug.newconsole.PydevConsoleFactory"
      icon="icons/python_16x16.png"
      label="PyDev Console" />
  </extension>
  <extension point="org.eclipse.core.runtime.preferences">
     <initializer class="org.python.pydev.debug.newconsole.PydevConsolePreferencesInitializer"/>
  </extension>

	<extension point="org.eclipse.ui.keywords" name="Interpreter Keywords">
	    <keyword id="org.python.pydev.debug.console"  label="interactive console shell"/>
	</extension>
	<extension point="org.eclipse.ui.keywords" name="Interpreter Keywords">
	    <keyword id="org.python.pydev.debug.initial_commands"  label="interactive console shell initial commands"/>
	</extension>

  <extension point="org.eclipse.ui.preferencePages">
     <page
        name="Interactive Console"
        category="org.python.pydev.prefs"
        class="org.python.pydev.debug.newconsole.prefs.InteractiveConsolePrefs"
        id="org.python.pydev.debug.newconsole.prefs.InteractiveConsolePrefs">
        <keywordReference id="org.python.pydev.debug.console"/>
     </page>
     <page
        name="Initial Commands"
        category="org.python.pydev.debug.newconsole.prefs.InteractiveConsolePrefs"
        class="org.python.pydev.debug.newconsole.prefs.InteractiveConsoleInitialCommandsPreferencesPage"
        id="org.python.pydev.debug.newconsole.prefs.InteractiveConsoleInitialCommandsPreferencesPage">
        <keywordReference id="org.python.pydev.debug.initial_commands"/>
     </page>
     <page
           category="org.python.pydev.debug.newconsole.prefs.InteractiveConsolePrefs"
           class="org.python.pydev.debug.newconsole.prefs.InteractiveConsoleUMDPrefs"
           id="org.python.pydev.debug.newconsole.prefs.UMD"
           name="User Module Deleter (UMD)">
     </page>
     <page
           category="org.python.pydev.debug.newconsole.prefs.InteractiveConsolePrefs"
           class="org.python.pydev.debug.newconsole.prefs.InteractiveConsoleCommandsPreferencesPage"
           id="org.python.pydev.debug.newconsole.prefs.InteractiveConsoleCommandsPreferencesPage"
           name="User commands">
     </page>
  </extension>
<!-- end console stuff -->


	<!-- the adapter factory must be registered (otherwise the CNF cannot 'get it' - even if the objects themselves are
	adaptable).
    -->
    <extension point="org.eclipse.core.runtime.adapters">
         <factory class="org.python.pydev.debug.ui.PyEditRunToLineAdapterFactory" adaptableType="org.python.pydev.editor.PyEdit">
			<adapter type="org.eclipse.debug.ui.actions.IRunToLineTarget"/>
         </factory>
         <factory class="org.python.pydev.debug.ui.PyToggleTargetAdapter" adaptableType="org.python.pydev.shared_ui.editor.BaseEditor">
			<adapter type="org.eclipse.debug.ui.actions.IToggleBreakpointsTarget"/>
         </factory>
         <factory class="org.python.pydev.debug.ui.PyToggleTargetAdapter" adaptableType="org.brainwy.liclipsetext.editor.common.BaseLiClipseEditor">
			<adapter type="org.eclipse.debug.ui.actions.IToggleBreakpointsTarget"/>
         </factory>
    </extension>

   <extension
         point="org.eclipse.ui.console.consolePageParticipants">
      <consolePageParticipant
            class="org.python.pydev.debug.console.ConsoleCompletionsPageParticipant"
            id="org.python.pydev.debug.console.consoleCompletionsPageParticipant">
         <enablement></enablement>
      </consolePageParticipant>
   </extension>

   <extension
         point="org.eclipse.ui.console.consolePageParticipants">
      <consolePageParticipant
            class="org.python.pydev.debug.console.PromptOverlayConsolePageParticipant"
            id="org.python.pydev.debug.console.PromptOverlayConsolePageParticipant">
         <enablement></enablement>
      </consolePageParticipant>
   </extension>

   <!-- Make interactive console work with debugger infractstructure for variables view, expressions... -->
   <extension
         point="org.eclipse.ui.console.consolePageParticipants">
      <consolePageParticipant
            class="org.python.pydev.debug.console.ConsoleActivateDebugContext"
            id="org.python.pydev.debug.console.consoleActivateDebugContext">
         <enablement>
            <instanceof value="org.python.pydev.debug.newconsole.PydevConsole"/>
         </enablement>
      </consolePageParticipant>
   </extension>

<!-- view: pyunit view-->
<extension point="org.eclipse.ui.views">
   <view
        class="org.python.pydev.debug.pyunit.PyUnitView"
        icon="icons/pyunit.png"
        category="org.python.pydev"
        name="PyUnit"
        id="org.python.pydev.debug.pyunit.pyUnitView"/>
</extension>

 <extension
       point="org.eclipse.ui.handlers">
    <handler
          class="org.python.pydev.debug.handlers.StepIntoEditorSelectionHandler"
          commandId="org.python.pydev.debug.stepIntoSelection">
       <enabledWhen>
         <with
               variable="activeEditor">
            <instanceof
                  value="org.python.pydev.editor.PyEdit">
            </instanceof>
         </with>
       </enabledWhen>
    </handler>
 </extension>
 <extension
       point="org.eclipse.ui.workbench.texteditor.hyperlinkDetectors">
    <hyperlinkDetector
          activate="true"
          class="org.python.pydev.debug.handlers.StepIntoSelectionHyperlinkDetector"
          description="Step Into Selection"
          id="org.python.pydev.debug.hyperlinkdetector.stepIntoSelection"
          modifierKeys="M1+M3"
          name="Step Into Selection"
          targetId="org.python.pydev.editor.PythonEditor">
    </hyperlinkDetector>
 </extension>
 
 <!--Extension Points for SetNext Statement-->
    <extension
		point="org.eclipse.ui.commands">
 		<command
        	id="org.python.pydev.debug.setnext"
        	name="Set Next Statement"
        	categoryId="org.python.pydev.ui.category.run">
		</command>
 		<command
        	id="org.python.pydev.debug.stepIntoSelection"
        	name="Step Into Editor Selection"
        	categoryId="org.python.pydev.ui.category.run">
		</command>
 	</extension>
    <extension
         point="org.eclipse.ui.menus">
      <menuContribution
        locationURI="menu:org.eclipse.ui.run?after=stepReturnGroup">
         <command
           commandId="org.python.pydev.debug.setnext"
           disabledIcon="icons/setnext_co_dis.gif"
           icon="icons/setnext_co.gif"
           mnemonic="O"
           style="push"
           id="org.python.pydev.debug.menu.run.setnext">
         </command>
      </menuContribution>
      <menuContribution
  		locationURI="toolbar:org.eclipse.debug.ui.DebugView?after=stepReturnGroup">
  		<command
           commandId="org.python.pydev.debug.setnext"
           disabledIcon="icons/setnext_co_dis.gif"
           icon="icons/setnext_co.gif"
           id="org.python.pydev.debug.toolbar.view.setnext">
           <!--
           Note: putting the visibleWhen below *should* work to hide the set next, but it doesn't really work
           (and I don't really know why).
           See: https://github.com/eclipse/cdt/blob/bfea9deb90ae1e5c8b419386050eb48a455b60dd/dsf-gdb/org.eclipse.cdt.examples.dsf.gdb/plugin.xml#L107

            <visibleWhen checkEnabled="false">
               <and>
                  <systemTest property="org.eclipse.debug.ui.debugViewToolbarVisible" value="true"/>
                  <with variable="org.eclipse.core.runtime.Platform">
                     <test property="org.eclipse.core.runtime.bundleState"
                        args="org.python.pydev.debug"
                        value="ACTIVE">
                     </test>
                  </with>
               </and>
            </visibleWhen>
           -->
         </command>
      </menuContribution>
      <menuContribution
        locationURI="popup:org.python.pydev.debug.PyEditPopupActions?after=additions">
     	<command
           commandId="org.python.pydev.debug.setnext"
           label="Set Next Statement">
     	</command>
      </menuContribution>
    </extension>
   <extension point="org.eclipse.ui.bindings">
   <key
        sequence="M1+M3+R"
        commandId="org.python.pydev.debug.setnext"
        schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
   <key
        sequence="M1+F5"
        contextId="org.python.pydev.ui.editor.scope"
        commandId="org.python.pydev.debug.stepIntoSelection"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
   </extension>
   <extension point="org.eclipse.ui.actionSets">
	<actionSet
		id="org.python.pydev.debug.debugActionSet"
		label="PyDev Set Next Statement">
		<action
           id="org.eclipse.debug.ui.actions.SetNextStatement"
           class="org.python.pydev.debug.ui.actions.RetargetSetNextAction"
           definitionId="org.python.pydev.debug.setnext"
           helpContextId="run_to_line_action_context"
           disabledIcon="icons/setnext_co_dis.gif"
           icon="icons/setnext_co.gif"
           label="Set Next Statement">
     	</action>
	</actionSet>
   	</extension>
   	    <extension point="org.eclipse.core.runtime.adapters">
         <factory class="org.python.pydev.debug.ui.PyEditSetNextAdapterFactory" adaptableType="org.python.pydev.editor.PyEdit">
			<adapter type="org.python.pydev.debug.ui.actions.ISetNextTarget"/>
         </factory>
    </extension>


<!-- Extension points for BreakOnException -->
<extension
	point="org.eclipse.ui.commands">
	<command
        name="Add Python Exception Breakpoint..."
        description="Add Python Exception Breakpoint..."
        categoryId="org.python.pydev.ui.category.source"
        id="org.python.pydev.debug.pyConfigureException">
  </command>
</extension>

<extension point="org.eclipse.ui.menus">
<menuContribution
      locationURI="menu:org.eclipse.ui.run">
      <command
           commandId="org.python.pydev.debug.pyConfigureException"
           label="Manage Python Exception Breakpoints"
           id="org.python.pydev.debug.menu.run.pyConfigureException"
           icon="icons/python_exception_breakpoint.png">
      </command>
  </menuContribution>
</extension>

<extension point="org.eclipse.ui.actionSets">
  <actionSet
        label="PyDev Exception Breakpoints"
        visible="false"
        id="org.python.pydev.exceptionBreakpoints">
     <menu
           label="P&amp;ydev"
           id="pyGeneralMenu">
        <separator name="pyExceptionBreakpoints"/>
     </menu>
     <action
           label="Manage Exception Breakpoints"
           class="org.python.pydev.debug.ui.actions.PyConfigureExceptionAction"
           tooltip="Pydev: Manage exception breakpoints"
           menubarPath="pyGeneralMenu/pyExceptionBreakpoints"
           id="org.python.pydev.debug.pyConfigureException"
           icon="icons/python_exception_breakpoint.png"
           definitionId="org.python.pydev.debug.pyConfigureException"
           >
     </action>
  </actionSet>
</extension>

<extension point="org.eclipse.ui.perspectiveExtensions">
    <perspectiveExtension targetID="org.eclipse.debug.ui.DebugPerspective">
        <actionSet id="org.python.pydev.exceptionBreakpoints"/>
    </perspectiveExtension>
</extension>
<!-- Extension points for BreakOnException -->

<extension
	point="org.eclipse.ui.commands">
	<command
        name="Disable Step into properties"
        description="Disable Step into properties"
        categoryId="org.python.pydev.ui.category.source"
        id="org.python.pydev.debug.pyPropertyTrace">
  </command>
</extension>

<extension point="org.eclipse.ui.menus">
<menuContribution
      locationURI="menu:org.eclipse.ui.run">
      <command
           commandId="org.python.pydev.debug.pyPropertyTrace"
           label="Disable Step into properties"
           id="org.python.pydev.debug.menu.run.pyPropertyTrace"
           icon="icons/stepover_co.gif">
      </command>
  </menuContribution>
</extension>

<extension point="org.eclipse.ui.actionSets">
  <actionSet
        label="Disable Step into properties"
        visible="false"
        id="org.python.pydev.pyPropertyTrace">
     <action
           label="Disable Step into properties"
           class="org.python.pydev.debug.ui.actions.PyPropertyTraceAction"
           id="org.python.pydev.debug.pyPropertyTrace"
           icon="icons/stepover_co.gif"
           definitionId="org.python.pydev.debug.pyPropertyTrace"
           >
     </action>
  </actionSet>
</extension>

<!-- Extension point for Show In Outline -->
<extension point="org.eclipse.ui.perspectiveExtensions">
    <perspectiveExtension targetID="org.eclipse.debug.ui.DebugPerspective">
        <showInPart id="org.eclipse.ui.views.ContentOutline"/>
        <showInPart id="org.python.pydev.navigator.view"/>
    </perspectiveExtension>
</extension>

<extension point="org.eclipse.ui.perspectiveExtensions">
    <perspectiveExtension targetID="org.eclipse.debug.ui.DebugPerspective">
        <actionSet id="org.python.pydev.pyPropertyTrace"/>
    </perspectiveExtension>
</extension>
<extension
      point="org.eclipse.ui.editors.annotationTypes">
   <type
         name="org.python.pydev.debug.pyStopBreakpointMarkerAnnotation">
   </type>
</extension>
<extension
      point="org.eclipse.ui.editors.markerAnnotationSpecification">
   <specification
         annotationType="org.python.pydev.debug.pyStopBreakpointMarkerAnnotation"
         label="Breakpoints (PyDev)"
         icon="icons/breakmarker.gif"
         textPreferenceKey="pyStopBreakpointMarkerAnnotationIndication"
         textPreferenceValue="false"
         textStylePreferenceKey="pyStopBreakpointMarkerAnnotationIndicationTextStyle"
         textStylePreferenceValue="NONE"
         highlightPreferenceKey="pyStopBreakpointMarkerAnnotationHighlighting"
         highlightPreferenceValue="false"
         contributesToHeader="false"
         overviewRulerPreferenceKey="pyStopBreakpointMarkerAnnotationIndicationInOverviewRuler"
         overviewRulerPreferenceValue="false"
         verticalRulerPreferenceKey="pyStopBreakpointMarkerAnnotationIndicationInVerticalRuler"
         verticalRulerPreferenceValue="true"
         colorPreferenceKey="pydevOccurrenceIndicationColor"
         colorPreferenceValue="255,255,150"
         presentationLayer="4"
         showInNextPrevDropdownToolbarActionKey="pyStopBreakpointMarkerAnnotationInNextPrevDropdownToolbarAction"
         showInNextPrevDropdownToolbarAction="false"
         isGoToNextNavigationTargetKey="pyStopBreakpointMarkerAnnotationGoToNextNavigationTarget"
         isGoToNextNavigationTarget="false"
         isGoToPreviousNavigationTargetKey="pyStopBreakpointMarkerAnnotationGoToPreviousNavigationTarget"
         isGoToPreviousNavigationTarget="false">
         >
   </specification>
</extension>

<!-- PyDev debug console related actions -->
   <extension point="org.eclipse.ui.popupMenus">
      <!-- Open the debug console -->
      <objectContribution
            adaptable="true"
            id="org.python.pydev.debug.newconsole.actions.debugconsoleaction"
            objectClass="org.python.pydev.debug.model.PyStackFrame">
         <menu id="org.python.pydev.ui.actions.menu" label="PyDev"/>
         <action
               class="org.python.pydev.debug.newconsole.actions.DebugConsoleAction"
               enablesFor="+"
               id="org.python.pydev.debug.newconsole.actions.debugconsoleaction"
               label="Debug Console"
               menubarPath="org.python.pydev.ui.actions.menu/pydev"
               tooltip="Open a Debug Console">
         </action>
         <visibility>
            <not>
               <objectClass
                     name="org.python.pydev.debug.model.PyStackFrameConsole">
               </objectClass>
            </not>
         </visibility>
      </objectContribution>
   </extension>

   <extension
         point="org.eclipse.ui.viewActions">
      <viewContribution
            targetID="org.eclipse.debug.ui.VariableView"
            id="org.python.pydev.debug.VariableViewActions">
         <action
               class="org.python.pydev.debug.ui.variables.ShowPrivateReferencesActionDelegate"
               id="org.python.pydev.debug.variableViewActions.ShowPrivateReferences"
               label="Show Special Variables"
               menubarPath="org.python.pydev.debug.VariableView.pydevSubmenu/pydevPart"
               style="toggle"
               tooltip="Show Special Variables"/>
         <action
               class="org.python.pydev.debug.ui.variables.ShowProtectedReferencesActionDelegate"
               id="org.python.pydev.debug.variableViewActions.ShowProtectedReferences"
               label="Show Protected Variables"
               menubarPath="org.python.pydev.debug.VariableView.pydevSubmenu/pydevPart"
               style="toggle"
               tooltip="Show Protected Variables"/>
         <action
               class="org.python.pydev.debug.ui.variables.ShowClassReferencesActionDelegate"
               id="org.python.pydev.debug.variableViewActions.ShowClassReferences"
               label="Show Class Variables"
               menubarPath="org.python.pydev.debug.VariableView.pydevSubmenu/pydevPart"
               style="toggle"
               tooltip="Show Class Variables"/>
         <action
               class="org.python.pydev.debug.ui.variables.ShowFunctionReferencesActionDelegate"
               id="org.python.pydev.debug.variableViewActions.ShowFunctionReferences"
               label="Show Function Variables"
               menubarPath="org.python.pydev.debug.VariableView.pydevSubmenu/pydevPart"
               style="toggle"
               tooltip="Show Function Variables"/>
         <action
               class="org.python.pydev.debug.ui.variables.ShowCapitalizedReferencesActionDelegate"
               id="org.python.pydev.debug.variableViewActions.ShowCapitalizedReferences"
               label="Show Capitalized Variables"
               menubarPath="org.python.pydev.debug.VariableView.pydevSubmenu/pydevPart"
               style="toggle"
               tooltip="Show Capitalized Variables (those beginning with an uppercase letter)"/>
         <action
               class="org.python.pydev.debug.ui.variables.ShowAllUppercaseReferencesActionDelegate"
               id="org.python.pydev.debug.variableViewActions.ShowAllUppercaseReferences"
               label="Show All Uppercase Variables"
               menubarPath="org.python.pydev.debug.VariableView.pydevSubmenu/pydevPart"
               style="toggle"
               tooltip="Show All Uppercase Variables (those with no lower case letters)"/>
         <menu
               id="org.python.pydev.debug.VariableView.pydevSubmenu"
               label="PyDev"
               path="pydevActions">
            <groupMarker name="org.python.pydev.debug.pydevPart"/>
         </menu>
      </viewContribution>
   </extension>


    <!--[[[cog
    import cog

    template_definition = '''<definition
        id="%(definitionId)s">
        <with variable="selection">
          <count value="1"></count>
          <or>
            <iterate ifEmpty="false" operator="and">
              <instanceof value="org.python.pydev.debug.model.PyVariable"></instanceof>
            </iterate>
            <iterate ifEmpty="false" operator="and">
              <instanceof value="org.eclipse.debug.core.model.IWatchExpression"></instanceof>
            </iterate>
          </or>
        </with>
      </definition>'''

    template_definition_stack = '''<definition
        id="%(definitionId)s">
        <with variable="selection">
          <count value="1"></count>
          <or>
            <iterate ifEmpty="false" operator="and">
              <instanceof value="org.python.pydev.debug.model.PyStackFrame"></instanceof>
            </iterate>
            <iterate ifEmpty="false" operator="and">
              <instanceof value="org.python.pydev.debug.model.CaughtException"></instanceof>
            </iterate>
          </or>
        </with>
      </definition>'''

    template_variables = '''    <menuContribution locationURI="popup:org.eclipse.debug.ui.VariableView?after=additions">
            <command commandId="%(commandId)s" tooltip="%(caption)s">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="%(definitionId)s"/>
                </visibleWhen>
            </command>
        </menuContribution>'''

    template_referrers = '''    <menuContribution locationURI="popup:org.python.pydev.views.ReferrersView?after=additions">
            <command commandId="%(commandId)s" tooltip="%(caption)s">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="%(definitionId)s"/>
                </visibleWhen>
            </command>
        </menuContribution>'''

    template_curr_exception = '''    <menuContribution locationURI="popup:org.python.pydev.views.CurrentExceptionView?after=additions">
            <command commandId="%(commandId)s" tooltip="%(caption)s">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="%(definitionId)s"/>
                </visibleWhen>
            </command>
        </menuContribution>'''

    template_watch = '''    <menuContribution locationURI="popup:org.eclipse.debug.ui.ExpressionView?after=additions">
            <command commandId="%(commandId)s" label="%(caption)s Watch Expression" mnemonic="%(mnemonic)s" style="push" tooltip="%(caption)s (Watch Expression)">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="%(definitionId)s"/>
                </visibleWhen>
            </command>
        </menuContribution>'''

    dicts = []
    for commandId, caption, definitionId, mnemonic, handler in (
        ('org.python.pydev.debug.commands.prettyPrint', '&amp;Pretty Print to Console', 'org.python.pydev.debug.model.RunCustomOperationCommand.ExtractableContext', 'P', 'org.python.pydev.debug.handlers.PrettyPrintCommandHandler'),
        ('org.python.pydev.debug.commands.getReferrers', '&amp;Get Referrers', 'org.python.pydev.debug.model.RunCustomOperationCommand.GetReferrers', 'G', 'org.python.pydev.debug.handlers.GetReferrersCommandHandler'),
        (
            'org.python.pydev.debug.commands.ignoreCaughtException',
            '&amp;Ignore caught exception',
            'org.python.pydev.debug.model.RunCustomOperationCommand.IgnoreCaughtException',
            'I',
            'org.python.pydev.debug.handlers.IgnoreCaughtExceptionCommandHandler'
        ),
        ):

        d = dict(commandId=commandId, caption=caption.replace('&amp;', ''), definitionId=definitionId, mnemonic=mnemonic, handler=handler, caption_with_acc=caption)
        dicts.append(d)


    cog.outl('<extension point="org.eclipse.core.expressions.definitions">')
    for d in dicts:
        if d['commandId'] == 'org.python.pydev.debug.commands.ignoreCaughtException':
            cog.outl(template_definition_stack % d)
        else:
            cog.outl(template_definition % d)
    cog.outl('</extension>')

    cog.outl('<extension point="org.eclipse.ui.menus">')
    for d in dicts:
        if d['commandId'] != 'org.python.pydev.debug.commands.ignoreCaughtException':
            cog.outl(template_variables % d)
            cog.outl(template_referrers % d)
            cog.outl(template_watch % d)
        cog.outl(template_curr_exception % d)
    cog.outl('</extension>')

    cog.outl('<extension point="org.eclipse.ui.handlers">')
    for d in dicts:
        cog.outl('    <handler class="%(handler)s" commandId="%(commandId)s"/>' % d)
    cog.outl('</extension>')

    cog.outl('<extension point="org.eclipse.ui.commands">')
    for d in dicts:
        cog.outl('    <command description="%(caption)s" id="%(commandId)s" name="%(caption_with_acc)s"/>' % d)
    cog.outl('</extension>')

    ]]]-->
    <extension point="org.eclipse.core.expressions.definitions">
    <definition
        id="org.python.pydev.debug.model.RunCustomOperationCommand.ExtractableContext">
        <with variable="selection">
          <count value="1"></count>
          <or>
            <iterate ifEmpty="false" operator="and">
              <instanceof value="org.python.pydev.debug.model.PyVariable"></instanceof>
            </iterate>
            <iterate ifEmpty="false" operator="and">
              <instanceof value="org.eclipse.debug.core.model.IWatchExpression"></instanceof>
            </iterate>
          </or>
        </with>
      </definition>
    <definition
        id="org.python.pydev.debug.model.RunCustomOperationCommand.GetReferrers">
        <with variable="selection">
          <count value="1"></count>
          <or>
            <iterate ifEmpty="false" operator="and">
              <instanceof value="org.python.pydev.debug.model.PyVariable"></instanceof>
            </iterate>
            <iterate ifEmpty="false" operator="and">
              <instanceof value="org.eclipse.debug.core.model.IWatchExpression"></instanceof>
            </iterate>
          </or>
        </with>
      </definition>
    <definition
        id="org.python.pydev.debug.model.RunCustomOperationCommand.IgnoreCaughtException">
        <with variable="selection">
          <count value="1"></count>
          <or>
            <iterate ifEmpty="false" operator="and">
              <instanceof value="org.python.pydev.debug.model.PyStackFrame"></instanceof>
            </iterate>
            <iterate ifEmpty="false" operator="and">
              <instanceof value="org.python.pydev.debug.model.CaughtException"></instanceof>
            </iterate>
          </or>
        </with>
      </definition>
    </extension>
    <extension point="org.eclipse.ui.menus">
        <menuContribution locationURI="popup:org.eclipse.debug.ui.VariableView?after=additions">
            <command commandId="org.python.pydev.debug.commands.prettyPrint" tooltip="Pretty Print to Console">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="org.python.pydev.debug.model.RunCustomOperationCommand.ExtractableContext"/>
                </visibleWhen>
            </command>
        </menuContribution>
        <menuContribution locationURI="popup:org.python.pydev.views.ReferrersView?after=additions">
            <command commandId="org.python.pydev.debug.commands.prettyPrint" tooltip="Pretty Print to Console">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="org.python.pydev.debug.model.RunCustomOperationCommand.ExtractableContext"/>
                </visibleWhen>
            </command>
        </menuContribution>
        <menuContribution locationURI="popup:org.eclipse.debug.ui.ExpressionView?after=additions">
            <command commandId="org.python.pydev.debug.commands.prettyPrint" label="Pretty Print to Console Watch Expression" mnemonic="P" style="push" tooltip="Pretty Print to Console (Watch Expression)">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="org.python.pydev.debug.model.RunCustomOperationCommand.ExtractableContext"/>
                </visibleWhen>
            </command>
        </menuContribution>
        <menuContribution locationURI="popup:org.python.pydev.views.CurrentExceptionView?after=additions">
            <command commandId="org.python.pydev.debug.commands.prettyPrint" tooltip="Pretty Print to Console">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="org.python.pydev.debug.model.RunCustomOperationCommand.ExtractableContext"/>
                </visibleWhen>
            </command>
        </menuContribution>
        <menuContribution locationURI="popup:org.eclipse.debug.ui.VariableView?after=additions">
            <command commandId="org.python.pydev.debug.commands.getReferrers" tooltip="Get Referrers">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="org.python.pydev.debug.model.RunCustomOperationCommand.GetReferrers"/>
                </visibleWhen>
            </command>
        </menuContribution>
        <menuContribution locationURI="popup:org.python.pydev.views.ReferrersView?after=additions">
            <command commandId="org.python.pydev.debug.commands.getReferrers" tooltip="Get Referrers">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="org.python.pydev.debug.model.RunCustomOperationCommand.GetReferrers"/>
                </visibleWhen>
            </command>
        </menuContribution>
        <menuContribution locationURI="popup:org.eclipse.debug.ui.ExpressionView?after=additions">
            <command commandId="org.python.pydev.debug.commands.getReferrers" label="Get Referrers Watch Expression" mnemonic="G" style="push" tooltip="Get Referrers (Watch Expression)">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="org.python.pydev.debug.model.RunCustomOperationCommand.GetReferrers"/>
                </visibleWhen>
            </command>
        </menuContribution>
        <menuContribution locationURI="popup:org.python.pydev.views.CurrentExceptionView?after=additions">
            <command commandId="org.python.pydev.debug.commands.getReferrers" tooltip="Get Referrers">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="org.python.pydev.debug.model.RunCustomOperationCommand.GetReferrers"/>
                </visibleWhen>
            </command>
        </menuContribution>
        <menuContribution locationURI="popup:org.python.pydev.views.CurrentExceptionView?after=additions">
            <command commandId="org.python.pydev.debug.commands.ignoreCaughtException" tooltip="Ignore caught exception">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="org.python.pydev.debug.model.RunCustomOperationCommand.IgnoreCaughtException"/>
                </visibleWhen>
            </command>
        </menuContribution>
    </extension>
    <extension point="org.eclipse.ui.handlers">
        <handler class="org.python.pydev.debug.handlers.PrettyPrintCommandHandler" commandId="org.python.pydev.debug.commands.prettyPrint"/>
        <handler class="org.python.pydev.debug.handlers.GetReferrersCommandHandler" commandId="org.python.pydev.debug.commands.getReferrers"/>
        <handler class="org.python.pydev.debug.handlers.IgnoreCaughtExceptionCommandHandler" commandId="org.python.pydev.debug.commands.ignoreCaughtException"/>
    </extension>
    <extension point="org.eclipse.ui.commands">
        <command description="Pretty Print to Console" id="org.python.pydev.debug.commands.prettyPrint" name="&amp;Pretty Print to Console"/>
        <command description="Get Referrers" id="org.python.pydev.debug.commands.getReferrers" name="&amp;Get Referrers"/>
        <command description="Ignore caught exception" id="org.python.pydev.debug.commands.ignoreCaughtException" name="&amp;Ignore caught exception"/>
    </extension>
    <!-- [[[end]]] -->

   <extension point="org.python.pydev.pydev_ctrl_1">
        <ctrl_1_participant class="org.python.pydev.debug.quick_assist.QuickAssistDontTrace"/>
   </extension>
   <extension
         point="org.eclipse.debug.core.processFactories">
      <processFactory
            class="org.python.pydev.debug.processfactory.PyProcessFactory"
            id="org.python.pydev.debug.processfactory.PyProcessFactory">
      </processFactory>
   </extension>
   <extension
         point="org.python.pydev.pydev_hover2">
      <pyTextHover
            activate="false"
            class="org.python.pydev.debug.ui.hover.PyDebugHover"
            description="Provides Debug Hover Info"
            enable="true"
            id="org.python.pydev.debug.ui.hover.PyDebugHover"
            label="PyDev Debug Hover"
            preempt="false"
            priority="50">
      </pyTextHover>
   </extension>

</plugin>

