<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>

<!-- Python editor -->
   <extension point="org.eclipse.ui.editors">
      <editor
            class="org.python.pydev.editor.PyEdit"
            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
            default="true"
            extensions="py,pyw,pyx,pxd,pxi"
            icon="icons/python_file.gif"
            id="org.python.pydev.editor.PythonEditor"
            name="Python Editor">
         <contentTypeBinding
               contentTypeId="org.python.pydev.pythonfile">
         </contentTypeBinding>
      </editor>
   </extension>
<!-- Initialize our preferences -->
   <extension point="org.eclipse.core.runtime.preferences">
      <initializer class="org.python.pydev.builder.pylint.PyLintPrefInitializer"/>
      <initializer class="org.python.pydev.plugin.preferences.PydevPrefsInitializer"/>
      <initializer class="org.python.pydev.editor.codecompletion.PyCodeCompletionInitializer"/>
   </extension>
<!-- document provider (even for the external files) -->
   <extension point="org.eclipse.ui.editors.documentProviders">
      <provider
            class="org.python.pydev.editor.PyDocumentProvider"
            id="org.python.pydev.shared_ui.editor_input.PydevFileEditorInput"
            inputTypes="org.python.pydev.shared_ui.editor_input.PydevFileEditorInput"/>
      <provider
            class="org.python.pydev.editor.PyDocumentProvider"
            id="org.python.pydev.shared_ui.editor_input.PydevFileEditorInput"
            inputTypes="org.python.pydev.shared_ui.editor_input.PydevZipFileEditorInput"/>
      <provider
            class="org.python.pydev.editor.PyDocumentProvider"
            id="org.python.pydev.editor.PyDocumentProvider"
            extensions=".py,.pyw,.pyx,.pxd,.pxi"/>
   </extension>
   <extension
         id="PyDocumentSetupParticipant"
         point="org.eclipse.core.filebuffers.documentSetup">
      <participant
            class="org.python.pydev.editor.PyDocumentSetupParticipant"
            extensions="py,pyw,pyx,pxd,pxi"/>
   </extension>

<!-- Python file content type (so that it is regarded as text) -->
  <extension point="org.eclipse.core.contenttype.contentTypes">
      <content-type
            base-type="org.eclipse.core.runtime.text"
            file-extensions="py,pyw,pyx,pxd,pxi"
            file-names="SConstruct"
            id="org.python.pydev.pythonfile"
            name="Python File"
            priority="high"/>
   </extension>



<!-- Python nature -->
   <extension
         id="pythonNature"
         name="Python Nature"
         point="org.eclipse.core.resources.natures">
      <runtime>
         <run
               class="org.python.pydev.plugin.nature.PythonNature">
         </run>
      </runtime>
      <builder id="org.python.pydev.builder"/>
   </extension>
   <extension
         point="org.eclipse.ui.ide.projectNatureImages">
      <image
            icon="icons/pythonNature.gif"
            natureId="org.python.pydev.pythonNature"
            id="org.python.pydev.ui.projectNatureImage">
      </image>
   </extension>



<!-- PyDev project properties -->
   <extension point="org.eclipse.ui.propertyPages">
      <page name="PyDev - PYTHONPATH"
            class="org.python.pydev.ui.PyProjectProperties"
            id="org.python.pydev.ui.pyProjectProperties">
         <filter name="projectNature"
               value="org.python.pydev.pythonNature"/>
         <enabledWhen>
            <adapt type="org.eclipse.core.resources.IProject"/>
         </enabledWhen>
      </page>
   </extension>
   <extension point="org.eclipse.ui.propertyPages">

      <page name="PyDev - Interpreter/Grammar"
            class="org.python.pydev.ui.PyProjectPythonDetails"
            id="org.python.pydev.ui.pyProjectPythonDetails">
         <filter name="projectNature" value="org.python.pydev.pythonNature"/>
         <enabledWhen>
            <adapt type="org.eclipse.core.resources.IProject"/>
         </enabledWhen>
      </page>
   </extension>


<!-- PyDev nature/project related actions -->
   <extension point="org.eclipse.ui.popupMenus">

      <!-- add to PYTHONPATH -->
      <objectContribution
            adaptable="false"
            id="org.python.pydev.ui.actions.container.PyAddSrcFolder"
            objectClass="org.eclipse.core.resources.IContainer">
         <menu id="org.python.pydev.ui.actions.menu" label="PyDev"/>
         <action
               class="org.python.pydev.ui.actions.container.PyAddSrcFolder"
               enablesFor="+"
               id="org.python.pydev.ui.actions.container.pyAddNature"
               label="Set as Source Folder (add to PYTHONPATH)"
               icon="icons/packagefolder_obj.gif"
               menubarPath="org.python.pydev.ui.actions.menu/pydev"
               tooltip="Include this folder in its project's PYTHONPATH">
         </action>
      </objectContribution>


      <!-- remove from PYTHONPATH -->
      <objectContribution
            adaptable="false"
            id="org.python.pydev.ui.actions.container.PyRemSrcFolder"
            objectClass="org.python.pydev.navigator.elements.PythonSourceFolder">
         <menu id="org.python.pydev.ui.actions.menu" label="PyDev"/>
         <action
               class="org.python.pydev.ui.actions.container.PyRemSrcFolder"
               enablesFor="+"
               id="org.python.pydev.ui.actions.container.pyAddNature"
               label="Set as non-source folder (remove from PYTHONPATH)"
               icon="icons/packagefolder_obj_remove.gif"
               menubarPath="org.python.pydev.ui.actions.menu/pydev"
               tooltip="Remove this folder from its project's PYTHONPATH">
         </action>
      </objectContribution>


      <!-- remove .pyc -->
      <objectContribution
            adaptable="true"
            id="org.python.pydev.ui.actions.container.pyDeletePycAndClassFiles"
            objectClass="org.eclipse.core.resources.IContainer">
         <menu id="org.python.pydev.ui.actions.menu" label="PyDev"/>
         <action
               class="org.python.pydev.ui.actions.container.PyDeletePycAndClassFiles"
               enablesFor="+"
               id="org.python.pydev.ui.actions.container.pyDeletePycAndClassFiles"
               label="Remove *.pyc, *.pyo and *$py.class Files"
               menubarPath="org.python.pydev.ui.actions.menu/pydev"
               tooltip="Removes all the .pyc, .pyo and $py.class files.">
         </action>
      </objectContribution>

      <!-- Code Formatting -->
      <objectContribution
            adaptable="true"
            id="org.python.pydev.ui.actions.container.pySourceFormatAction"
            objectClass="org.eclipse.core.resources.IContainer">
         <menu id="org.python.pydev.ui.actions.menu" label="PyDev"/>
         <action
               class="org.python.pydev.ui.actions.container.PySourceFormatAction"
               enablesFor="+"
               id="org.python.pydev.ui.actions.container.pySourceFormatAction"
               label="Source format python files"
               menubarPath="org.python.pydev.ui.actions.menu/pydev"
               tooltip="Applies the code-formatting to the selected python files.">
         </action>
      </objectContribution>


      <!-- Organize Imports -->
      <objectContribution
            adaptable="true"
            id="org.python.pydev.ui.actions.container.pyOrganizeImportsAction"
            objectClass="org.eclipse.core.resources.IContainer">
         <menu id="org.python.pydev.ui.actions.menu" label="PyDev"/>
         <action
               class="org.python.pydev.ui.actions.container.PyOrganizeImportsAction"
               enablesFor="+"
               id="org.python.pydev.ui.actions.container.pyOrganizeImportsAction"
               label="Organize Imports ..."
               icon="icons/new/imp_obj.gif"
               menubarPath="org.python.pydev.ui.actions.menu/pydev"
               tooltip="Organizes imports in the selected python files.">
         </action>
      </objectContribution>

      <!-- 2To3 -->
      <objectContribution
            adaptable="true"
            id="org.python.pydev.ui.actions.resources.py2To3"
            objectClass="org.eclipse.core.resources.IResource">
         <menu id="org.python.pydev.ui.actions.menu" label="PyDev"/>
         <action
               class="org.python.pydev.ui.actions.resources.Py2To3"
               enablesFor="+"
               id="org.python.pydev.ui.actions.resources.py2To3"
               label="Apply 2To3 (lib2to3 must be in PYTHONPATH)"
               menubarPath="org.python.pydev.ui.actions.menu/pydev"
               tooltip="Apply 2To3 (lib2to3 must be available in the interpreter PYTHONPATH)">
         </action>
         <visibility><objectState name="projectNature" value="org.python.pydev.pythonNature"/></visibility>
      </objectContribution>

      <!-- remove errors -->
      <objectContribution
            adaptable="true"
            id="org.python.pydev.ui.actions.container.pyDeleteErrors"
            objectClass="org.eclipse.core.resources.IContainer">
         <menu id="org.python.pydev.ui.actions.menu" label="PyDev"/>
         <action
               class="org.python.pydev.ui.actions.container.PyDeleteErrors"
               enablesFor="+"
               id="org.python.pydev.ui.actions.container.pyDeleteErrors"
               label="Remove error markers"
               menubarPath="org.python.pydev.ui.actions.menu/pydev"
               tooltip="Remove error markers">
         </action>
      </objectContribution>


      <!-- remove nature -->
      <objectContribution
            adaptable="true"
            id="org.python.pydev.ui.actions.project.PyRemoveNature"
            objectClass="org.eclipse.core.resources.IProject">
         <menu id="org.python.pydev.ui.actions.menu" label="PyDev"/>
         <action
               class="org.python.pydev.ui.actions.project.PyRemoveNature"
               enablesFor="1"
               icon="icons/remove_nature.png"
               id="org.python.pydev.ui.actions.project.pyRemoveNature"
               label="Remove PyDev Project Config"
               menubarPath="org.python.pydev.ui.actions.menu/pydev"
               tooltip="Remove the PyDev project configuration">
         </action>
         <visibility><objectState name="projectNature" value="org.python.pydev.pythonNature"/></visibility>
      </objectContribution>


      <!-- add nature -->
      <objectContribution
            adaptable="true"
            id="org.python.pydev.ui.actions.project.PyAddNature"
            objectClass="org.eclipse.core.resources.IProject">
         <menu id="org.python.pydev.ui.actions.menu" label="PyDev"/>
         <action
               class="org.python.pydev.ui.actions.project.PyAddNature"
               enablesFor="1"
               icon="icons/python_nature.png"
               id="org.python.pydev.ui.actions.project.pyAddNature"
               label="Set as PyDev Project"
               menubarPath="org.python.pydev.ui.actions.menu/pydev"
               tooltip="Set project as a PyDev project">
         </action>
         <visibility><not><objectState name="projectNature" value="org.python.pydev.pythonNature"/></not></visibility>
      </objectContribution>


   </extension>

<!-- Preferences Keywords -->
	<extension point="org.eclipse.ui.keywords" name="Interpreter Keywords">
	    <keyword id="org.python.pydev.interpreter.keywords"  label="forced builtins pythonpath"/>
	</extension>
	<extension point="org.eclipse.ui.keywords" name="PyDev Preferences">
	    <keyword id="org.python.pydev.preferences.keywords"  label="tabs spaces colors folding"/>
	</extension>
	<extension point="org.eclipse.ui.keywords" name="Save actions">
	    <keyword id="org.python.pydev.preferences.save"  label="formatter"/>
	</extension>
	<extension point="org.eclipse.ui.keywords" name="Code formatter">
	    <keyword id="org.python.pydev.preferences.formatter"  label="autopep8 pep8"/>
	</extension>
	<extension point="org.eclipse.ui.keywords" name="Typing">
	    <keyword id="org.python.pydev.typing"  label="indentation new line parentheses"/>
	</extension>
	<extension point="org.eclipse.ui.keywords" name="Tabs">
	    <keyword id="org.python.pydev.tabs"  label="tabs indentation"/>
	</extension>
	<extension point="org.eclipse.ui.keywords" name="Minimap">
	    <keyword id="org.python.pydev.minimap"  label="minimap horizontal vertical scrollbar ruler birds"/>
	</extension>

<!-- Preference page -->
   <extension point="org.eclipse.ui.preferencePages">
      <page
            name="PyDev"
            class="org.python.pydev.plugin.preferences.PydevRootPrefs"
            id="org.python.pydev.prefs">
      </page>
      <page
            name="Logging"
            category="org.python.pydev.prefs"
            class="org.python.pydev.logging.PyLoggingPreferencesPage"
            id="org.python.pydev.logging.pyLoggingPreferencesPage">
      </page>
      <page
            name="Editor"
            class="org.python.pydev.editor.preferences.PydevEditorPrefs"
            category="org.python.pydev.prefs"
            id="org.python.pydev.prefs.editor">
            <keywordReference id="org.python.pydev.preferences.keywords"/>
      </page>
      <page
            name="Overview Ruler Minimap"
            category="org.python.pydev.prefs.editor"
            class="org.python.pydev.overview_ruler.MinimapOverviewRulerPreferencesPage"
            id="org.python.pydev.overview_ruler.minimapOverviewRulerPreferencesPage">
            <keywordReference id="org.python.pydev.minimap"/>
      </page>
      <page
            name="Vertical Indent Guide"
            category="org.python.pydev.prefs.editor"
            class="org.python.pydev.editor.preferences.PydevVerticalIndentGuidePreferencesPage"
            id="org.python.pydev.editor.preferences.pydevVerticalIndentGuidePreferencesPage">
      </page>
      <page
            name="Typing"
            category="org.python.pydev.prefs.editor"
            class="org.python.pydev.editor.preferences.PydevTypingPrefs"
            id="org.python.pydev.prefs2">
            <keywordReference id="org.python.pydev.typing"/>
      </page>
      <page
            name="Tabs"
            category="org.python.pydev.prefs.editor"
            class="org.python.pydev.editor.preferences.PyTabPreferencesPage"
            id="org.python.pydev.editor.preferences.PyTabPreferencesPage">
            <keywordReference id="org.python.pydev.tabs"/>
      </page>
      <page
            name="Interpreters"
            category="org.python.pydev.prefs"
            class="org.python.pydev.ui.pythonpathconf.InterpreterGeneralPreferencesPage"
            id="org.python.pydev.ui.pythonpathconf.interpreterPreferencesPageGeneral">
      </page>
      <page
            name="Python Interpreter"
            category="org.python.pydev.ui.pythonpathconf.interpreterPreferencesPageGeneral"
            class="org.python.pydev.ui.pythonpathconf.PythonInterpreterPreferencesPage"
            id="org.python.pydev.ui.pythonpathconf.interpreterPreferencesPagePython">
            <keywordReference id="org.python.pydev.interpreter.keywords"/>
      </page>
      <page
            name="Jython Interpreter"
            category="org.python.pydev.ui.pythonpathconf.interpreterPreferencesPageGeneral"
            class="org.python.pydev.ui.pythonpathconf.JythonInterpreterPreferencesPage"
            id="org.python.pydev.ui.pythonpathconf.interpreterPreferencesPageJython">
	        <keywordReference id="org.python.pydev.interpreter.keywords"/>
      </page>
      <page
            name="IronPython Interpreter"
            category="org.python.pydev.ui.pythonpathconf.interpreterPreferencesPageGeneral"
            class="org.python.pydev.ui.pythonpathconf.IronpythonInterpreterPreferencesPage"
            id="org.python.pydev.ui.pythonpathconf.interpreterPreferencesPageIronpython">
	        <keywordReference
	            id="org.python.pydev.interpreter.keywords">
	        </keywordReference>
      </page>
      <page
      		name="PyUnit"
            category="org.python.pydev.prefs"
            class="org.python.pydev.pyunit.preferences.PyUnitPrefsPage2"
            id="org.python.pydev.prefs.pyunitPage"/>
      <page
            name="Code Style"
            category="org.python.pydev.prefs.editor"
            class="org.python.pydev.plugin.preferences.PyCodeStylePreferencesPage"
            id="org.python.pydev.plugin.pyCodeStylePreferencesPage"/>


      <page
            name="Editor caption/icon"
            category="org.python.pydev.prefs.editor"
            class="org.python.pydev.plugin.preferences.PyTitlePreferencesPage"
            id="org.python.pydev.plugin.preferences.PyTitlePreferencesPage"/>

      <page
            name="Code Formatter"
            category="org.python.pydev.plugin.pyCodeStylePreferencesPage"
            class="org.python.pydev.plugin.preferences.PyCodeFormatterPage"
            id="org.python.pydev.plugin.pyCodeFormatterPage">
            <keywordReference id="org.python.pydev.preferences.formatter"/>
      </page>
      <page
      		name="Docstrings"
            category="org.python.pydev.plugin.pyCodeStylePreferencesPage"
            class="org.python.pydev.editor.correctionassist.docstrings.DocstringsPrefPage"
            id="org.python.pydev.editor.correctionassist.docstrings.DocstringsPreferencePage"/>

      <page
      		name="Block Comments"
            category="org.python.pydev.plugin.pyCodeStylePreferencesPage"
            class="org.python.pydev.editor.commentblocks.CommentBlocksPreferences"
            id="org.python.pydev.editor.commentblocks.CommentBlocksPreferences"/>

      <page
      		name="File types"
            category="org.python.pydev.plugin.pyCodeStylePreferencesPage"
            class="org.python.pydev.ui.filetypes.FileTypesPreferencesPage"
            id="org.python.pydev.ui.filetypes.FileTypesPreferencesPage"/>

      <page
      		name="Imports"
            category="org.python.pydev.plugin.pyCodeStylePreferencesPage"
            class="org.python.pydev.ui.importsconf.ImportsPreferencesPage"
            id="org.python.pydev.ui.importsconf.ImportsPreferencesPage"/>

      <page
            name="Code Completion"
            class="org.python.pydev.editor.codecompletion.PyCodeCompletionPreferencesPage"
            category="org.python.pydev.prefs.editor"
            id="org.python.pydev.prefs.PyCodeCompletionPage"/>
      <page
            name="Hover"
            class="org.python.pydev.editor.hover.PyHoverPreferencesPage"
            category="org.python.pydev.prefs.editor"
            id="org.python.pydev.editor.hover.PyHoverPreferencesPage"/>
      <page
            name="Templates"
            class="org.python.pydev.editor.templates.PyTemplatePreferencesPage"
            category="org.python.pydev.prefs.editor"
            id="org.python.pydev.prefs.template"/>
      <page
            class="org.python.pydev.builder.pylint.PyLintPrefPage"
            category="org.python.pydev.prefs"
            name="PyLint"
            id="org.python.pydev.prefs.pylint"/>
      <page
            class="org.python.pydev.builder.todo.PyTodoPrefPage"
            category="org.python.pydev.prefs"
            name="Task Tags"
            id="org.python.pydev.prefs.pytodo"/>
      <page
            name="Builders"
            category="org.python.pydev.prefs"
            class="org.python.pydev.builder.PyDevBuilderPrefPage"
            id="org.python.pydev.builder.pyDevBuilderPrefPage">
      </page>
      <page
            category="org.python.pydev.prefs.editor"
            class="org.python.pydev.editor.codefolding.PyDevCodeFoldingPrefPage"
            id="org.python.pydev.editor.codefolding.PyDevCodeFoldingPrefPage"
            name="Code Folding">
      </page>
      <page
            category="org.python.pydev.prefs.editor"
            class="org.python.pydev.editor.saveactions.PydevSaveActionsPrefPage"
            id="org.python.pydev.editor.saveactions.PydevSaveActionsPrefPage"
            name="Save Actions">
            <keywordReference id="org.python.pydev.preferences.save"/>
      </page>
   </extension>
<!-- Editor menus -->
   <extension point="org.eclipse.ui.editorActions"
   		      name="pydevEditorContribution"
   		      id="org.python.pydev.editorContribution">
      <editorContribution
            targetID="org.python.pydev.editor.PythonEditor"
            id="org.python.pydev.editor.editorContribution">
         <menu
               label="&amp;Source"
               path="edit"
               id="org.python.pydev.editor.actions.sourceMenu">
            <separator name="editGroup"/>
            <separator name="addGroup"/>
            <separator name="whitespaceGroup"/>
            <separator name="evaluateGroup"/>
         </menu>
         <menu
               id="org.python.pydev.refactoring.refactoringMenu"
               label="Refac&amp;toring"
               path="org.python.pydev.editor.actions.sourceMenu">
            <separator name="brmGroup"/>
         </menu>
         <!-- Home now handled in VerifyKey (we don't want any conflicts with other places that define HOME)
         <action
               definitionId="org.python.pydev.editor.actions.firstChar"
               label="Goto first char"
               class="org.python.pydev.editor.actions.FirstCharAction"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/editGroup"
               id="org.python.pydev.editor.actions.firstChar">
         </action>
         -->

         <!-- Backspace now handled in VerifyKey (incremental find integration)
         <action
               definitionId="org.python.pydev.editor.actions.pybackspace"
               label="Python Backspace (considers indentation)"
               class="org.python.pydev.editor.actions.PyBackspace"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/editGroup"
               id="org.python.pydev.editor.actions.pybackspace">
         </action>
         -->
         <action
               definitionId="org.python.pydev.editor.actions.convertSpaceToTab"
               label="Convert space-tabs to tabs"
               class="org.python.pydev.editor.actions.PyConvertSpaceToTab"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/whitespaceGroup"
               id="org.python.pydev.editor.actions.convertSpaceToTab">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.convertTabToSpace"
               label="Convert tabs to space-tabs"
               class="org.python.pydev.editor.actions.PyConvertTabToSpace"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/whitespaceGroup"
               id="org.python.pydev.editor.actions.convertTabToSpace">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.uncomment"
               label="Uncomment"
               class="org.python.pydev.editor.actions.PyUncomment"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/editGroup"
               id="org.python.pydev.editor.actions.uncomment">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.comment"
               label="Comment"
               class="org.python.pydev.editor.actions.PyComment"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/editGroup"
               id="org.python.pydev.editor.actions.comment">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.togglecomment"
               label="Toggle Comment"
               class="org.python.pydev.editor.actions.PyToggleComment"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/editGroup"
               id="org.python.pydev.editor.actions.togglecomment">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.removeBlockComment"
               label="Remove comment block"
               class="org.python.pydev.editor.actions.PyRemoveBlockComment"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.removeBlockComment">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.addBlockComment"
               label="Add comment block"
               class="org.python.pydev.editor.actions.PyAddBlockComment"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.addBlockComment">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.addSingleBlockComment"
               label="Add single comment block"
               class="org.python.pydev.editor.actions.PyAddSingleBlockComment"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.addSingleBlockComment">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.navigation.nextMethod"
               label="Goto next method or class"
               class="org.python.pydev.editor.actions.PyNextMethod"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.navigation.nextMethod">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.navigation.previousMethod"
               label="Goto previous method or class"
               class="org.python.pydev.editor.actions.PyPreviousMethod"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.navigation.previousMethod">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.navigation.pyCollapse"
               label="Collapse code"
               class="org.python.pydev.editor.actions.codefolding.PyCollapse"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.navigation.pyCollapse">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.navigation.pyUnCollapse"
               label="Un Collapse code"
               class="org.python.pydev.editor.actions.codefolding.PyUnCollapse"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.navigation.pyUnCollapse">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.navigation.pyCollapseAll"
               label="Collapse code (All)"
               class="org.python.pydev.editor.actions.codefolding.PyCollapseAll"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.navigation.pyCollapseAll">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.navigation.pyUnCollapseAll"
               label="Un Collapse code (All)"
               class="org.python.pydev.editor.actions.codefolding.PyUnCollapseAll"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.navigation.pyUnCollapseAll">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.pyShowOutline"
               label="Show Quick Outline"
               class="org.python.pydev.editor.actions.PyShowOutline"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.navigation.pyShowOutline">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.pyShowBrowser"
               label="Show Global Tokens Browser"
               class="org.python.pydev.editor.actions.PyShowBrowser"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.navigation.pyShowBrowser">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.pyOrganizeImports"
               label="Organize Imports"
               class="org.python.pydev.editor.actions.PyOrganizeImports"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.navigation.pyOrganizeImports">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.pyFormatStd"
               label="Format Code"
               class="org.python.pydev.editor.actions.PyFormatStd"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.navigation.pyFormatStd">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.pySelectWord"
               label="Select the current word"
               class="org.python.pydev.editor.actions.PySelectWord"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.pySelectWord">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.wrapparagraph"
               label="Wrap paragraph (Ctrl+2,w)"
               class="org.python.pydev.editor.actions.PyWrapParagraph"
               menubarPath="org.python.pydev.editor.actions.sourceMenu/addGroup"
               id="org.python.pydev.editor.actions.wrapparagraph">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.copyqualifiedname"
               label="Copy Context Qualified Name"
               class="org.python.pydev.editor.actions.PyCopyQualifiedName"
               menubarPath="edit/copy"
               id="org.python.pydev.editor.actions.copyqualifiedname"
               icon="icons/cpyqual_menu.gif">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.goToMatchingBracket"
               label="Go to Matching Bracket"
               class="org.python.pydev.editor.actions.PyGoToMatchingBracket"
               id="org.python.pydev.editor.actions.goToMatchingBracket">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.selectEnclosingScope"
               label="Select Enclosing Scope"
               class="org.python.pydev.editor.actions.PyScopeSelection"
               id="org.python.pydev.editor.actions.selectEnclosingScope">
         </action>
         <action
               definitionId="org.python.pydev.editor.actions.deselectEnclosingScope"
               label="Deselect Enclosing Scope"
               class="org.python.pydev.editor.actions.PyScopeDeselection"
               id="org.python.pydev.editor.actions.deselectEnclosingScope">
         </action>
      </editorContribution>
   </extension>


<!-- Editor Context (formerly scope) -->
    <extension point="org.eclipse.ui.contexts">
      <context
            name="PyDev editor scope"
            parentId="org.eclipse.ui.textEditorScope"
            description="PyDev commands"
            id="org.python.pydev.ui.editor.scope">
      </context>
    </extension>
<!-- associates commands with keyboard shortcuts -->
<!-- Commands -->
    <extension point="org.eclipse.ui.commands">

<!--category: Editor Commands-->
      <category
            name="PyDev - Editor"
            description="PyDev editor category"
            id="org.python.pydev.ui.category.source">
      </category>
<!--category: Refactor-->
      <category
            name="PyDev - Refactor"
            description="Python refactor category"
            id="org.python.pydev.ui.category.refactoring">
      </category>

<!-- command: goto first char-
      <command
            description="Goes to the first non space char or first char of the line depending on the cursor position."
            id="org.python.pydev.editor.actions.firstChar"
            categoryId="org.python.pydev.ui.category.source"
            name="First char">
      </command>
-->
<!-- command: backspace considering indentation-->
<!-- Backspace now handled in VerifyKey (incremental find integration)
      <command
            description="Backspace considering indentation for Python."
            id="org.python.pydev.editor.actions.pybackspace"
            categoryId="org.python.pydev.ui.category.source"
            name="Python Backspace (with indentation)">
      </command>
-->
<!-- command: exec line in console-->
      <command
            name="Execute line in console"
            description="Executes the current line in the console."
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.execLineInConsole">
      </command>
<!-- command: next method / class-->
      <command
            name="Next Method or Class"
            description="Navigates to the next method or class definition"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.navigation.nextMethod">
      </command>
<!-- command: previous method / class-->
      <command
            name="Previous Method or Class"
            description="Navigates to the previous method or class definition"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.navigation.previousMethod">
      </command>
<!-- command: space to tab-->
      <command
            name="Convert space-tabs to tabs"
            description="Converts tab-width space groups to tabs from selected region or whole document if nothing selected"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.convertSpaceToTab">
      </command>
<!-- command: tab to space-->
      <command
            name="Convert tabs to space-tabs"
            description="Converts tabs to tab-width space groups from selected region or whole document if nothing selected"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.convertTabToSpace">
      </command>
<!-- command: unblock-->
      <command
            name="Remove Comment Block"
            description="Removes a python comment block"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.removeBlockComment">
      </command>
<!-- command: block-->
      <command
            name="Add Comment Block"
            description="Creates a python comment block"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.addBlockComment">
      </command>
<!-- command: block-->
      <command
            name="Add Single Comment Block"
            description="Creates a comment block from a single line"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.addSingleBlockComment">
      </command>
<!-- command: uncomment-->
      <command
            name="Python Uncomment"
            description="Uncomments a python line (Removes # from the beggining of the line)"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.uncomment">
      </command>
<!-- command: comment-->
      <command
            name="Python Comment"
            description="Comments a python line (Adds # to beggining of the line)"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.comment">
      </command>
<!-- command: toggle comment-->
      <command
            name="Python Toggle Comment"
            description="Toggles comments of python line/s (Adds/Removes # at beggining of the line)"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.togglecomment">
      </command>
<!-- command: Collapse-->
      <command
            name="Python Collapse"
            description="Collapse block of code"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.navigation.pyCollapse">
      </command>
<!-- command: Un Collapse-->
      <command
            name="Python Un Collapse"
            description="Un Collapse block of code"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.navigation.pyUnCollapse">
      </command>
<!-- command: Collapse All-->
      <command
            name="Python Collapse All"
            description="Collapse all blocks of code"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.navigation.pyCollapseAll">
      </command>
<!-- command: Un Collapse-->
      <command
            name="Python Un Collapse All"
            description="Un Collapse all blocks of code"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.navigation.pyUnCollapseAll">
      </command>
<!-- command: Show outline-->
      <command
            name="Python Show Outline"
            description="Show Outline"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.pyShowOutline">
      </command>
<!-- command: Show browser-->
      <command
            name="Python Show Global Tokens (Editor)"
            description="Python Show Global Tokens (Editor)"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.pyShowBrowser">
      </command>
<!-- command: Organize Imports-->
      <command
            name="Python Organize Imports"
            description="Organize Imports"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.pyOrganizeImports">
      </command>
<!-- command: Format code-->
      <command
            name="Python Format Code"
            description="Format Code"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.pyFormatStd">
      </command>
<!-- command: Select Word-->
      <command
            name="Select Word"
            description="Select the whole word"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.pySelectWord">
      </command>
<!-- command: wrap paragraph-->
      <command
            name="Wrap Paragraph (Ctrl+2,w)"
            description="Wraps the current paragraph"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.wrapparagraph">
      </command>
<!-- command: Copy Context Qualified Name-->
      <command
            name="Copy Context Qualified Name"
            description="Copies the Path of the selected context"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.copyqualifiedname">
      </command>
<!-- command: Toggle Force Tabs-->
      <command
            name="Toggle Force tabs"
            description="Forces or not tabs in the current editor"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.toggleforcetabs">
      </command>
  <!-- Offline Command -->
      <command
            name="Offline Action for scripting"
            description="Offline Action for scripting"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.scriptEngine"/>
  <!-- Go to matching bracket -->
      <command
            name="Go to Matching Bracket"
            description="Go to Matching Bracket"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.goToMatchingBracket"/>
  <!-- Select Enclosing Scope -->
      <command
            name="Select Enclosing Scope"
            description="Select Enclosing Scope"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.selectEnclosingScope"/>
  <!-- Deselect Enclosing Scope -->
      <command
            name="Deselect Enclosing Scope"
            description="Deselect Enclosing Scope"
            categoryId="org.python.pydev.ui.category.source"
            id="org.python.pydev.editor.actions.deselectEnclosingScope"/>
   </extension>

   <extension point="org.eclipse.ui.bindings">
      <!--
      Note:
      M1=Ctrl
      M2=Shift
      M3=Alt
      -->
      <!--
      <key
            sequence="HOME"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.firstChar"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      -->
      <!--TODO: guessing at name "BACKSPACE, needs verification -->
      <!-- Backspace now handled in VerifyKey (incremental find integration)
      <key
            sequence="BACKSPACE"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.pybackspace"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      -->
      <key
            sequence="M1+M2+Arrow_Up"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.navigation.previousMethod"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+5"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.removeBlockComment"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+4"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.addBlockComment"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+M2+4"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.addSingleBlockComment"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+\"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.uncomment"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+M2+3"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.uncomment"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+M2+Arrow_Down"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.navigation.nextMethod"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <!-- Note: bound in pyedit_exec_line_in_shell.py -->
      <key
            sequence="F2"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.execLineInConsole"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+/"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.togglecomment"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <!-- Removed: by default Ctrl+3 is the go-to any command/location of Eclipse (user can remap if wanted).
      <key
            sequence="M1+3"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.comment"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      -->
      <key
            sequence="M1+Numpad_Subtract"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.navigation.pyCollapse"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+Numpad_Add"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.navigation.pyUnCollapse"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+Numpad_Divide"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.navigation.pyCollapseAll"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+Numpad_Multiply"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.navigation.pyUnCollapseAll"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+O"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.pyShowOutline"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+M2+T"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.pyShowBrowser"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+M2+O"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.pyOrganizeImports"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+M2+F"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.pyFormatStd"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+2"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.scriptEngine"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M1+M2+P"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.goToMatchingBracket"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M2+M3+Arrow_Up"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.selectEnclosingScope"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
      <key
            sequence="M2+M3+Arrow_Down"
            contextId="org.python.pydev.ui.editor.scope"
            commandId="org.python.pydev.editor.actions.deselectEnclosingScope"
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration">
      </key>
   </extension>




<!-- file type extensions for the team (CVS) -->
   <extension point="org.eclipse.team.core.fileTypes">
      <fileTypes type="text" extension="py"/>
      <fileTypes type="text" extension="pyw"/>
      <fileTypes type="text" extension="pyx"/>
      <fileTypes type="text" extension="pxd"/>
      <fileTypes type="text" extension="pxi"/>
   </extension>
   <extension point="org.eclipse.team.core.ignore">
      <ignore enabled="true" pattern="*.pyc"/>
      <ignore enabled="true" pattern="*.class"/>
      <ignore enabled="true" pattern="*.pyo"/>
      <ignore enabled="true" pattern="__pycache__"/>
   </extension>
<!-- filter out .pyc files in the navigation view -->
   <extension
         point="org.eclipse.ui.ide.resourceFilters">
      <filter selected="True" pattern="*.pyc"/>
      <filter selected="True" pattern="*.class"/>
      <filter selected="True" pattern="*.pyo"/>
      <filter selected="True" pattern="__pycache__"/>
   </extension>
<!-- add quick-fixes (does nothing right now) -->
    <extension
         point="org.eclipse.ui.ide.markerResolution">
      <markerResolutionGenerator
            class="org.python.pydev.editor.correctionassist.PyQuickFix"
            markerType="org.eclipse.core.resources.problemmarker"/>
    </extension>
<!-- Builder for pydev -->
    <extension
         id="PyDevBuilder"
         name="PyDev Builder"
         point="org.eclipse.core.resources.builders">
      <builder>
         <run class="org.python.pydev.builder.PyDevBuilder"/>
      </builder>
    </extension>
<!-- Communicate pylint problems as markers -->
    <extension
        point="org.eclipse.core.resources.markers"
        name="PyLint Problem"
        id="pylintproblemmarker">
       <super type="org.eclipse.core.resources.problemmarker"/>
       <persistent value="true"/>
    </extension>
<!-- Communicate 'invalid' file issues-->
    <extension
        point="org.eclipse.core.resources.markers"
        name="Invalid python file marker"
        id="invalidpythonfilemarker">
       <super type="org.eclipse.core.resources.problemmarker"/>
       <persistent value="false"/>
    </extension>
<!-- Markers for the pydev package explorer -->
    <extension
        point="org.eclipse.core.resources.markers"
        name="PyDev Project Error"
        id="PydevProjectErrorMarkers">
       <super type="org.eclipse.core.resources.problemmarker"/>
       <persistent value="false"/>
    </extension>
<!-- templates -->
    <extension point="org.eclipse.ui.editors.templates">
         <contextType
               class="org.python.pydev.editor.templates.PyContextType"
               id="org.python.pydev.editor.templates.python"
               name="Editor"/>
         <contextType
               class="org.python.pydev.editor.templates.PyContextType"
               id="org.python.pydev.editor.templates.python.modules"
               name="New Module"/>
    </extension>
   <extension-point id="pydev_builder" name="PyDev Builder" schema="schema/pydev_builder.exsd"/>
<!-- extensions -->
<!-- extensions -->
<!-- extensions -->
<!-- extensions -->
<!-- extensions -->
<!-- extensions -->
   <extension-point id="pydev_completion" name="PyDev completion" schema="schema/pydev_completion.exsd"/>
   <extension-point id="pydev_modules_observer" name="PyDev modules observer" schema="schema/pydev_modules_observer.exsd"/>
   <extension-point id="pydev_interpreter_observer" name="PyDev Interpreter Observer" schema="schema/pydev_interpreter_observer.exsd"/>
   <extension-point id="pydev_interpreter_new_custom_entries" name="PyDev Interpreter New Custom Entries" schema="schema/pydev_interpreter_new_custom_entries.exsd"/>
   <extension-point id="pydev_view_created_observer" name="PyDev view created observer" schema="schema/pydev_view_created_observer.exsd"/>
   <extension-point id="pydev_ctrl_1" name="PyDev M11 participant" schema="schema/pydev_ctrl_1.exsd"/>
   <extension-point id="pydev_simpleassist" name="PyDev Simple Assist" schema="schema/pydev_simpleassist.exsd"/>
   <extension-point id="pydev_organize_imports" name="PyDev Organize Imports" schema="schema/pydev_organize_imports.exsd"/>
   <extension-point id="pydev_refactoring" name="PyDev Refactoring" schema="schema/pydev_refactoring.exsd"/>
   <extension-point id="pydev_quick_outline" name="PyDev Quick Outline" schema="schema/pydev_quick_outline.exsd"/>
   <extension-point id="pydev_preferences_provider" name="PyDev Preferences Provider" schema="schema/pydev_preferences_provider.exsd"/>
   <extension-point id="pydev_pyedit_listener" name="PyEdit Listener" schema="schema/pydev_pyedit_listener.exsd"/>
   <extension-point id="pydev_formatter" name="PyDev Formatter" schema="schema/pydev_formatter.exsd"/>
   <extension-point id="pydev_globals_browser" name="PyDev Globals Browser" schema="schema/pydev_globals_browser.exsd"/>
   <extension-point id="pydev_debug_preferences_page" name="PyDev Debug Preferences Page" schema="schema/pydev_debug_preferences_page.exsd"/>
   <extension-point id="pydev_pythonpath_contrib" name="Python Path Contributor" schema="schema/pydev_pythonpath_contrib.exsd"/>
   <extension-point id="pydev_manager_observer" name="PyDev code completion manager observer" schema="schema/pydev_manager_observer.exsd"/>
   <extension-point id="pydev_interpreter_info_builder" name="PyDev interpreter info builder" schema="schema/pydev_interpreter_info_builder.exsd"/>
   <extension-point id="pydev_interpreter_provider" name="PyDev interpreter provider" schema="schema/pydev_interpreter_provider.exsd"/>
   <extension-point id="pydev_python_module_resolver" name="Python module resolver" schema="schema/pydev_python_module_resolver.exsd"/>
   <extension-point id="pydev_hover2" name="PyDev Hover2" schema="schema/pydev_hover2.exsd"/>
   <extension-point id="pydev_combiningHover" name="PyDev Combining Hover" schema="schema/pydev_combiningHover.exsd"/>
<!-- wizards -->
   <extension point="org.eclipse.ui.newWizards">
      <category
            id="org.python.pydev.PythonCategory"
            name="PyDev"/>
      <wizard
            canFinishEarly="false"
            category="org.python.pydev.PythonCategory"
            class="org.python.pydev.ui.wizards.project.PythonProjectWizard"
            descriptionImage="icons/python_logo.png"
            finalPerspective="org.python.pydev.ui.PythonPerspective"
            hasPages="true"
            icon="icons/python_16x16.png"
            id="org.python.pydev.ui.wizards.project.PythonProjectWizard"
            name="PyDev Project"
            preferredPerspectives="org.python.pydev.ui.PythonPerspective"
            project="true"/>

      <!--
      <wizard
            canFinishEarly="false"
            category="org.python.pydev.PythonCategory"
            class="org.python.pydev.ui.wizards.gettingstarted.PythonGettingStartedWizard"
            descriptionImage="icons/python_logo.png"
            finalPerspective="org.python.pydev.ui.PythonPerspective"
            hasPages="true"
            icon="icons/mainfunction.gif"
            id="org.python.pydev.ui.wizards.gettingstarted.PythonGettingStartedWizard"
            name="PyDev Getting Started"
            preferredPerspectives="org.python.pydev.ui.PythonPerspective"
            project="true"/>
      -->
      <wizard
            canFinishEarly="false"
            category="org.python.pydev.PythonCategory"
            class="org.python.pydev.ui.wizards.files.PythonSourceFolderWizard"
            descriptionImage="icons/python_logo.png"
            finalPerspective="org.python.pydev.ui.PythonPerspective"
            hasPages="true"
            icon="icons/packagefolder_obj.gif"
            id="org.python.pydev.ui.wizards.files.PythonSourceFolderWizard"
            name="&amp;Source Folder"
            preferredPerspectives="org.python.pydev.ui.PythonPerspective"
            project="false"/>
      <wizard
            canFinishEarly="false"
            category="org.python.pydev.PythonCategory"
            class="org.python.pydev.ui.wizards.files.PythonExistingSourceFolderWizard"
            descriptionImage="icons/python_logo.png"
            finalPerspective="org.python.pydev.ui.PythonPerspective"
            hasPages="true"
            icon="icons/packagefolder_obj.gif"
            id="org.python.pydev.ui.wizards.files.PythonExistingSourceFolderWizard"
            name="&amp;Link to Existing Source"
            preferredPerspectives="org.python.pydev.ui.PythonPerspective"
            project="false"/>
      <wizard
            canFinishEarly="false"
            category="org.python.pydev.PythonCategory"
            class="org.python.pydev.ui.wizards.files.PythonPackageWizard"
            descriptionImage="icons/python_logo.png"
            finalPerspective="org.python.pydev.ui.PythonPerspective"
            hasPages="true"
            icon="icons/package_obj.gif"
            id="org.python.pydev.ui.wizards.files.PythonPackageWizard"
            name="PyDev P&amp;ackage"
            preferredPerspectives="org.python.pydev.ui.PythonPerspective"
            project="false"/>
      <wizard
            canFinishEarly="false"
            category="org.python.pydev.PythonCategory"
            class="org.python.pydev.ui.wizards.files.PythonModuleWizard"
            descriptionImage="icons/python_logo.png"
            finalPerspective="org.python.pydev.ui.PythonPerspective"
            hasPages="true"
            icon="icons/python_file.gif"
            id="org.python.pydev.ui.wizards.files.PythonModuleWizard"
            name="PyDev &amp;Module"
            preferredPerspectives="org.python.pydev.ui.PythonPerspective"
            project="false"/>
   </extension>
   <extension point="org.eclipse.ui.perspectives">
      <perspective
            class="org.python.pydev.ui.perspective.PythonPerspectiveFactory"
            icon="icons/python_16x16.png"
            id="org.python.pydev.ui.PythonPerspective"
            name="PyDev"/>
   </extension>
   <extension point="org.eclipse.ui.perspectiveExtensions">
      <perspectiveExtension targetID="org.python.pydev.ui.PythonPerspective">
         <showInPart id="org.eclipse.ui.views.ResourceNavigator"/>
         <showInPart id="org.python.pydev.navigator.view"/>
         <showInPart id="org.eclipse.ui.views.ContentOutline"/>
      </perspectiveExtension>
   </extension>



   <extension
         id="org.python.pydev.refactoring.popupContribution"
         point="org.eclipse.ui.popupMenus">
      <viewerContribution
            id="org.python.pydev.popupContribution"
            targetID="#PyEditContext">
         <action
               class="org.python.pydev.editor.actions.PyCopyQualifiedName"
               definitionId="org.python.pydev.editor.actions.copyqualifiedname"
               id="org.python.pydev.editor.actions.copyqualifiedname"
               label="Copy Context Qualified Name"
               menubarPath="copy"
               icon="icons/cpyqual_menu.gif"/>
         <action
               class="org.python.pydev.editor.actions.PyToggleForceTabs"
               definitionId="org.python.pydev.editor.actions.toggleforcetabs"
               id="org.python.pydev.editor.actions.toggleforcetabs"
               label="Toggle force tabs"
               menubarPath="tabs"
               icon="icons/tabs_active.png"/>
      </viewerContribution>
      <viewerContribution
            targetID="#PyEditRulerContext"
            id="org.python.pydev.ruler.context.actions">
         <action
               label="%AddTask.label"
               helpContextId="org.eclipse.ui.AddTask_action_context"
               class="org.eclipse.ui.texteditor.TaskRulerAction"
               tooltip="%AddTask.tooltip"
               menubarPath="additions"
               id="org.eclipse.ui.texteditor.TaskRulerAction">
         </action>
         <action
               label="%AddBookmark.label"
               helpContextId="org.eclipse.ui.bookmark_action_context"
               class="org.eclipse.ui.texteditor.BookmarkRulerAction"
               tooltip="%AddBookmark.tooltip"
               menubarPath="additions"
               id="org.eclipse.ui.texteditor.BookmarkRulerAction">
         </action>
      </viewerContribution>
   </extension>


<!-- ********************** PyDev Package Explorer ********************** -->
<!-- ********************** PyDev Package Explorer ********************** -->
<!-- ********************** PyDev Package Explorer ********************** -->
<!-- ********************** PyDev Package Explorer ********************** -->

<!-- Declare the view part to hold the default implementation -->
<extension point="org.eclipse.ui.views">
   <category
        name="PyDev"
        id="org.python.pydev"/>
    <view
        allowMultiple="false"
        category="org.python.pydev"
        class="org.python.pydev.navigator.ui.PydevPackageExplorer"
        id="org.python.pydev.navigator.view"
        icon="icons/pydev_package_explorer.gif"
        name="PyDev Package Explorer"/>
</extension>


<!-- Declare the python content in the project explorer
-->
<extension point="org.eclipse.ui.navigator.viewer">
    <viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer">
        <includes>
            <contentExtension pattern="org.python.pydev.navigator.pythoncontent"/>
            <contentExtension pattern="org.python.pydev.navigator.filters.*"/>
            <contentExtension pattern="org.python.pydev.navigator.actions.pythonLinkHelper"/>
        </includes>
    </viewerContentBinding>
</extension>

<extension point="org.eclipse.ui.navigator.viewer">
    <viewer viewerId="org.python.pydev.navigator.view">
    	<!-- allowsPlatformContributions="true" allows it to show the cvs stuff
        -->
        <popupMenu allowsPlatformContributions="true" id="org.python.pydev.navigator.view#PopupMenu">
             <insertionPoint name="group.new"/>
             <insertionPoint name="group.open" separator="true"/>
             <insertionPoint name="group.openWith"/>
             <insertionPoint name="group.edit" separator="true"/>
             <insertionPoint name="group.reorganize" />
             <insertionPoint name="group.port" separator="true"/>
             <insertionPoint name="group.build" separator="true"/>
             <insertionPoint name="group.generate" separator="true"/>
             <insertionPoint name="group.search" separator="true"/>
             <insertionPoint name="additions" separator="true"/>
             <insertionPoint name="group.properties" separator="true"/>
        </popupMenu>
    </viewer>
    <viewerContentBinding viewerId="org.python.pydev.navigator.view">
        <includes>
            <contentExtension pattern="org.eclipse.ui.navigator.resourceContent"/>
            <contentExtension pattern="org.eclipse.ui.navigator.resources.filters.*"/>
            <contentExtension pattern="org.python.pydev.navigator.pythoncontent"/>
            <contentExtension pattern="org.python.pydev.navigator.filters.*"/>
        </includes>
    </viewerContentBinding>
    <dragAssistant class="org.eclipse.ui.navigator.resources.ResourceDragAdapterAssistant" viewerId="org.python.pydev.navigator.view"/>
</extension>

  <!-- Error decorations -->
    <extension point="org.eclipse.ui.decorators">
      <decorator
            adaptable="false"
            class="org.python.pydev.navigator.decorator.ProblemsLabelDecorator"
            id="org.python.pydev.navigator.decorator.problemsLabelDecorator"
            label="PyDev elements error decorations"
            lightweight="true"
            location="BOTTOM_LEFT"
            state="true">
         <enablement>
            <objectClass
                  name="org.python.pydev.navigator.elements.IWrappedResource">
            </objectClass>
         </enablement>
      </decorator>
    </extension>
  <!-- Declare a content extension that renders the contents of a properties file -->
  <extension point="org.eclipse.ui.navigator.navigatorContent">

      <navigatorContent
            id="org.python.pydev.navigator.pythoncontent"
            name="PyDev Navigator Content"
            icon="icons/python_16x16.png"
            contentProvider="org.python.pydev.navigator.PythonModelProvider"
            labelProvider="org.python.pydev.navigator.PythonLabelProvider"
            activeByDefault="true"
            priority="higher">
         <triggerPoints>
             <or>
                <instanceof value="org.eclipse.core.resources.IWorkspaceRoot" />
                <instanceof value="org.eclipse.ui.IWorkingSet"/>
                <and>
                   <instanceof value="org.eclipse.core.resources.IProject"/>
                   <test
                         forcePluginActivation="true"
                         property="org.eclipse.core.resources.projectNature"
                         value="org.python.pydev.pythonNature"/>
                </and>
                <instanceof value="org.eclipse.core.resources.IFolder"/>
                <instanceof value="org.eclipse.core.resources.IStorage"/>
                <instanceof value="org.eclipse.core.resources.IFile"/>
                <instanceof value="org.eclipse.core.resources.IResource"/>
                <instanceof value="org.python.pydev.navigator.elements.IWrappedResource"/>
                <instanceof value="org.python.pydev.shared_core.structure.TreeNode"/>
                <instanceof value="org.python.pydev.navigator.elements.PythonNode"/>
                <instanceof value="org.python.pydev.navigator.elements.ProjectConfigError"/>
            </or>
         </triggerPoints>
         <possibleChildren>
            <or>
                <adapt type="org.eclipse.core.resources.IProject" />
                <adapt type="org.eclipse.ui.IWorkingSet" />
                <instanceof value="org.eclipse.core.resources.IWorkspaceRoot" />
                <instanceof value="org.eclipse.core.resources.IFolder" />
                <instanceof value="org.eclipse.core.resources.IStorage"/>
                <instanceof value="org.eclipse.core.resources.IFile" />
                <instanceof value="org.eclipse.core.resources.IResource"/>
                <instanceof value="org.python.pydev.navigator.elements.IWrappedResource"/>
                <instanceof value="org.python.pydev.shared_core.structure.TreeNode"/>
                <instanceof value="org.python.pydev.navigator.elements.PythonNode"/>
            </or>
         </possibleChildren>
         <commonSorter
               class="org.python.pydev.navigator.sorter.PythonModelSorter"
               id="org.python.pydev.navigator.sorter.pythonmodelsorter"/>
         <actionProvider
               class="org.python.pydev.navigator.actions.PythonActionProvider"
               id="org.python.pydev.navigator.actions.pythonActionProvider"
               overrides="org.eclipse.ui.navigator.resources.actions.EditActions"/>
         <actionProvider
               class="org.python.pydev.navigator.actions.PythonRefactorActionProvider"
               id="org.python.pydev.navigator.actions.pythonRefactorActionProvider"
               overrides="org.eclipse.ui.navigator.resources.actions.RefactorActions"/>
         <!-- that's so that we only have the python content shown, and not the resource content -->
		 <override
				policy="InvokeAlwaysRegardlessOfSuppressedExt"
				suppressedExtensionId="org.eclipse.ui.navigator.resourceContent"/>
        <dropAssistant
              class="org.python.pydev.navigator.actions.copied.PyResourceDropAdapterAssistant"
              id="org.python.pydev.navigator.actions.PyResourceDropAdapterAssistant">
           <possibleDropTargets>
              <or>
                 <adapt type="org.eclipse.core.resources.IProject"/>
                 <adapt type="org.eclipse.core.resources.IFolder"/>
                 <adapt type="org.eclipse.core.resources.IFile"/>
              </or>
           </possibleDropTargets>
        </dropAssistant>


      </navigatorContent>
	  <commonWizard menuGroupId="org.python.pydev.ui.wizards" type="new" wizardId="org.python.pydev.ui.wizards.files.PythonPackageWizard">
	     <enablement>
	        <or>
	           <instanceof value="org.python.pydev.navigator.elements.PythonFolder"/>
               <instanceof value="org.python.pydev.navigator.elements.PythonSourceFolder"/>
	           <adapt type="org.eclipse.core.resources.IProject">
	              <test
	                    property="org.eclipse.core.resources.projectNature"
	                    value="org.python.pydev.pythonNature"/>
	           </adapt>
	        </or>
	     </enablement>
	  </commonWizard>
	  <commonWizard menuGroupId="org.python.pydev.ui.wizards" type="new" wizardId="org.python.pydev.ui.wizards.files.PythonModuleWizard">
	     <enablement>
	        <or>
               <instanceof value="org.python.pydev.navigator.elements.PythonFolder"/>
               <instanceof value="org.python.pydev.navigator.elements.PythonSourceFolder"/>
	           <adapt type="org.eclipse.core.resources.IProject">
	              <test
	                    property="org.eclipse.core.resources.projectNature"
	                    value="org.python.pydev.pythonNature"/>
	           </adapt>
	        </or>
	     </enablement>
	  </commonWizard>
	  <commonWizard menuGroupId="org.python.pydev.ui.wizards" type="new" wizardId="org.python.pydev.ui.wizards.files.PythonExistingSourceFolderWizard">
	     <enablement>
	        <or>
	           <adapt type="org.eclipse.core.resources.IProject">
	              <test
	                    property="org.eclipse.core.resources.projectNature"
	                    value="org.python.pydev.pythonNature"/>
	           </adapt>
	        </or>
	     </enablement>
	  </commonWizard>
	  <commonWizard menuGroupId="org.python.pydev.ui.wizards" type="new" wizardId="org.python.pydev.ui.wizards.files.PythonSourceFolderWizard">
	     <enablement>
	        <or>
	           <adapt type="org.eclipse.core.resources.IProject">
	              <test
	                    property="org.eclipse.core.resources.projectNature"
	                    value="org.python.pydev.pythonNature"/>
	           </adapt>
	        </or>
	     </enablement>
	  </commonWizard>

      <commonFilter activeByDefault="false"
	     name="PyDev: non-PyDev Projects"
      	 description="%HideNonPydevProjects.description"
      	 id="org.python.pydev.navigator.filters.hideNonPydevProjects"
      	 class="org.python.pydev.navigator.filters.PydevProjectsFilter">
      </commonFilter>

  	  <commonFilter activeByDefault="true"
	  	  name="PyDev: .pyc files"
	  	  description="PyDev: *.pyc files"
	  	  id="org.python.pydev.navigator.filters.hidePycFiles"
	  	  class="org.python.pydev.navigator.filters.PycFilter">
	  </commonFilter>

  	  <commonFilter activeByDefault="true"
	  	  name="PyDev: .pyo files"
	  	  description="PyDev: *.pyo files"
	  	  id="org.python.pydev.navigator.filters.hidePyoFiles"
	  	  class="org.python.pydev.navigator.filters.PyoFilter">
	  </commonFilter>

  	  <commonFilter activeByDefault="true"
	  	  name="PyDev: *.py~ files"
	  	  description="PyDev: *.py~ files"
	  	  id="org.python.pydev.navigator.filters.hidePyTildaFiles"
	  	  class="org.python.pydev.navigator.filters.PyTildaFilter">
	  </commonFilter>

  	  <commonFilter activeByDefault="true"
	  	  name="PyDev: __pycache__"
	  	  description="PyDev: __pycache__ folders"
	  	  id="org.python.pydev.navigator.filters.hidePycacheFolders"
	  	  class="org.python.pydev.navigator.filters.PyCacheFilter">
	  </commonFilter>

	  <!-- The ones below are copied from org.eclipse.ui.navigator.resources, with changes from 'instanceof' to 'adapt type'

	  It seems that eclipse 3.6 fixed that, so, it's not needed anymore.
      <commonFilter activeByDefault="true"
	      name="PyDev: .* resources"
	      description="PyDev: .*resources"
	      id="org.python.pydev.navigator.filters.startsWithDot"
	  	  class="org.python.pydev.navigator.filters.DotStartFilter">
      </commonFilter>
      -->

      <commonFilter activeByDefault="true"
	      name="PyDev: .class resources"
	      description="PyDev: .class resources"
	      id="org.python.pydev.navigator.filters.endsWithClass"
	  	  class="org.python.pydev.navigator.filters.ClassFilter">
      </commonFilter>


      <commonFilter activeByDefault="false"
	      name="PyDev: closed projects"
	      description="PyDev: closed projects"
	      id="org.python.pydev.navigator.filters.closedProject"
	  	  class="org.python.pydev.navigator.filters.ClosedProjectsFilter">
      </commonFilter>

      <commonFilter activeByDefault="true"
	      name="PyDev: custom specified filters"
	      description="PyDev: custom specified filters"
	      id="org.python.pydev.navigator.filters.customFilters"
	  	  class="org.python.pydev.navigator.filters.CustomFilters">
      </commonFilter>


      <commonFilter activeByDefault="false"
          name="PyDev: Nodes: All"
          description="PyDev: Nodes: (hide all)"
          id="org.python.pydev.navigator.filters.pythonnodefilter"
          class="org.python.pydev.navigator.filters.PythonNodeFilter">
      </commonFilter>

      <commonFilter activeByDefault="true"
          name="PyDev: Nodes: Imports"
          description="PyDev: Nodes: Imports (hide)"
          id="org.python.pydev.navigator.filters.Imports"
          class="org.python.pydev.navigator.filters.ImportsFilter">
      </commonFilter>

      <commonFilter activeByDefault="false"
          name="PyDev: Nodes: Comments"
          description="PyDev: Nodes: Comments (hide)"
          id="org.python.pydev.navigator.filters.Comments"
          class="org.python.pydev.navigator.filters.CommentsFilter">
      </commonFilter>


      <commonFilter activeByDefault="false"
          name="PyDev: Interpreter Info"
          description="PyDev: Interpreter Info (hide)"
          id="org.python.pydev.navigator.filters.interpreterinfofilter"
          class="org.python.pydev.navigator.filters.InterpreterInfoFilter">
      </commonFilter>




    </extension>

    <!-- Bind the content extension to the viewer -->
    <extension point="org.eclipse.ui.navigator.viewer">
        <viewerContentBinding viewerId="org.python.pydev.navigator.view">
            <includes>
                <contentExtension pattern="org.python.pydev.navigator.pythoncontent"/>
                <contentExtension pattern="org.eclipse.ui.navigator.resourceContent"/>
                <contentExtension pattern="org.python.pydev.navigator.actions.pythonLinkHelper"/>
            </includes>
        </viewerContentBinding>
        <viewerActionBinding viewerId="org.python.pydev.navigator.view">
            <includes>
                <actionExtension pattern="org.python.pydev.navigator.actions.*"/>
	            <actionExtension pattern="org.eclipse.ui.navigator.resources.*"/>
            </includes>
        </viewerActionBinding>
    </extension>

    <extension point="org.eclipse.ui.viewActions">
	  <viewContribution
		id="org.python.pydev.navigator.actions.customFilters"
   		targetID="org.python.pydev.navigator.view">
    	<action
           class="org.python.pydev.navigator.actions.PySetupCustomFilters"
           icon="icons/filter.gif"
           id="org.python.pydev.navigator.actions.PySetupCustomFilters"
           label="Setup custom filters"
           menubarPath="additions"
           toolbarPath="additions"
           tooltip="Setup custom filters.">
  		</action>
      </viewContribution>

   </extension>

   <!--
   If not done we get:

   No property tester contributes a property org.eclipse.core.resources.open to
   type class org.python.pydev.navigator.elements.PythonProjectSourceFolder
   -->
   <extension point="org.eclipse.core.expressions.propertyTesters">
      <propertyTester
            namespace="org.eclipse.core.resources"
            properties="open"
            type="org.python.pydev.navigator.elements.PythonProjectSourceFolder"
            class="org.python.pydev.navigator.properties.PyPropertyTester"
            id="org.python.pydev.navigator.elements.PythonProjectSourceFolder">
      </propertyTester>
      <propertyTester
            namespace="org.eclipse.core.resources"
            properties="name"
            type="org.python.pydev.navigator.elements.IWrappedResource"
            class="org.python.pydev.navigator.properties.PyPropertyTester"
            id="org.python.pydev.navigator.elements.PythonNameProperty">
      </propertyTester>
   </extension>

	<!-- 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.navigator.ModelAdapter" adaptableType="org.python.pydev.navigator.elements.IWrappedResource">
			<adapter type="org.eclipse.core.resources.IResource"/>
			<adapter type="org.eclipse.core.resources.IFolder"/>
			<adapter type="org.eclipse.core.resources.IProject"/>
			<adapter type="org.eclipse.core.resources.IContainer"/>
			<adapter type="org.eclipse.core.resources.IFile"/>
			<adapter type="org.eclipse.debug.ui.actions.ILaunchable"/>
			<adapter type="org.eclipse.ui.IContributorResourceAdapter"/>
         </factory>
    </extension>

    <!-- linking the navigator -->
	<extension point="org.eclipse.ui.navigator.linkHelper">
		<linkHelper
			class="org.python.pydev.navigator.actions.PythonLinkHelper"
			id="org.python.pydev.navigator.actions.pythonLinkHelper">
			<selectionEnablement>
				<or>
					<adapt type="org.eclipse.core.resources.IFile"/>
				</or>
			</selectionEnablement>
			<editorInputEnablement>
				<!-- Not using org.eclipse.ui.IFileEditorInput so that we can match the CompareEditorInput -->
				<instanceof value="org.eclipse.ui.IEditorInput"/>
			</editorInputEnablement>
		</linkHelper>
	</extension>

	<!-- hyperlink: added on 3.3. see also: PyEditConfiguration.getHyperlinkDetectorTargets -->
   <extension point="org.eclipse.ui.workbench.texteditor.hyperlinkDetectorTargets">
      <target id="org.python.pydev.editor.PythonEditor" name="PyDev Editor">
          <context type="org.eclipse.ui.texteditor.ITextEditor"/>
      </target>
   </extension>

   <extension point="org.python.pydev.pydev_pyedit_listener">
  		<pyedit_listener_participant class="org.python.pydev.builder.syntaxchecker.ClearSyntaxMarkersPyeditListener"/>
   </extension>

   <extension point="org.python.pydev.pydev_pyedit_listener">
  		<pyedit_listener_participant class="org.python.pydev.plugin.nature.PyNatureReindexer"/>
   </extension>


<extension
     point="org.eclipse.compare.contentViewers">
  <viewer
        extensions="py,pyw,pyx,pxd,pxi"
        class="org.python.pydev.compare.PyContentViewerCreator"
        id="org.python.pydev.compare.PyContentViewerCreator">
  </viewer>
    <contentTypeBinding
        contentTypeId="org.python.pydev.pythonfile"
        contentViewerId="org.python.pydev.compare.PyContentViewerCreator">
    </contentTypeBinding>
</extension>

<extension
	point="org.eclipse.compare.contentMergeViewers">
	<viewer
		extensions="py,pyw,pyx,pxd,pxi"
		class="org.python.pydev.compare.PyContentMergeViewerCreator"
		id="org.python.pydev.compare.PyContentMergeViewerCreator">
	</viewer>
	<contentTypeBinding
		contentTypeId="org.python.pydev.pythonfile"
		contentMergeViewerId="org.python.pydev.compare.PyContentMergeViewerCreator">
	</contentTypeBinding>
</extension>

















<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
<!-- templates -->
   <extension
         point="org.eclipse.ui.editors.templates">


      <template
            autoinsert="false"
            name="super"
            icon="icons/template.gif"
            description="Call super(current_class, self).current_method()"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.super">
<pattern>
super(${current_class}, self).${current_method}(${cursor})
</pattern>
      </template>


      <template
            autoinsert="false"
            name="super_raw"
            icon="icons/template.gif"
            description="Call superclass.current_method(self)"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.super_raw">
<pattern>
${superclass}.${current_method}(self${cursor})
</pattern>
      </template>



      <template
            autoinsert="true"
            name="main"
            icon="icons/template.gif"
            description="Main function pattern."
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.main">
<pattern>
if __name__ == '__main__':
    ${cursor}
</pattern>
      </template>


      <template
            autoinsert="true"
            name="ifmain"
            icon="icons/template.gif"
            description="Main function pattern."
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.main">
<pattern>
if __name__ == '__main__':
    ${cursor}
</pattern>
      </template>
      <template
            autoinsert="true"
            name="pd"
            icon="icons/template.gif"
            description="pdb"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.pdb">
         <pattern>import pdb;pdb.set_trace()</pattern>
      </template>
      <template
            autoinsert="true"
            name="pydevd"
            icon="icons/template.gif"
            description="pydevd.settrace()"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.pydevd">
<pattern>import sys;sys.path.append(r'${pydevd_dir_location}')
import pydevd;pydevd.settrace()</pattern>
      </template>
      <template
            autoinsert="true"
            name="pydevd_patch_django_auto_reload"
            icon="icons/template.gif"
            description="pydevd.patch_django_autoreload()"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.pydevd_patch_django_auto_reload">
<pattern>import sys;sys.path.append(r'${pydevd_dir_location}')
import pydevd;pydevd.patch_django_autoreload(patch_remote_debugger=True, patch_show_console=True)</pattern>
      </template>
      <template
            autoinsert="true"
            name="eq"
            icon="icons/template.gif"
            description="equals and not equals"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.eq">
<pattern>
def __eq__(self, o):
    if isinstance(o, ${current_class}):
        ${pass}${cursor}

    return False

def __ne__(self, o):
	return not self == o
</pattern>

      </template>
      <template
            autoinsert="true"
            contextTypeId="org.python.pydev.editor.templates.python"
            description="Class definition (subclass)"
            icon="icons/template.gif"
            id="org.python.pydev.editor.templates.python.classo"
            name="classs">
         <pattern>class ${class}(${object}):${cursor}</pattern>
      </template>
      <template
            autoinsert="true"
            contextTypeId="org.python.pydev.editor.templates.python"
            description="Class definition (simple)"
            icon="icons/template.gif"
            id="org.python.pydev.editor.templates.python.class"
            name="class">
         <pattern>class ${class}:${cursor}</pattern>
      </template>
      <template
            autoinsert="true"
            contextTypeId="org.python.pydev.editor.templates.python"
            description="Method definition (class)"
            icon="icons/template.gif"
            id="org.python.pydev.editor.templates.python.defc"
            name="defc">
         <pattern>def ${method}(self):${cursor}</pattern>
      </template>
      <template
            autoinsert="true"
            contextTypeId="org.python.pydev.editor.templates.python"
            description="def __init__(self):"
            icon="icons/template.gif"
            id="org.python.pydev.editor.templates.python.ini"
            name="ini">
         <pattern>def __init__(self):${cursor}</pattern>
      </template>
      <template
            autoinsert="true"
            contextTypeId="org.python.pydev.editor.templates.python"
            description="def __init__(self, ${params})"
            icon="icons/template.gif"
            id="org.python.pydev.editor.templates.python.init"
            name="inip">
         <pattern>def __init__(self, ${params}):${cursor}</pattern>
      </template>
      <template
            autoinsert="true"
            contextTypeId="org.python.pydev.editor.templates.python"
            description="Method definition (class - with parameters)"
            icon="icons/template.gif"
            id="org.python.pydev.editor.templates.python.defp"
            name="defp">
         <pattern>def ${method}(self, ${params}):${cursor}</pattern>
      </template>
      <template
            autoinsert="true"
            name="def"
            icon="icons/template.gif"
            description="Method definition (global)"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.def">
         <pattern>def ${method}():${cursor}</pattern>
      </template>
      <template
            autoinsert="true"
            name="print"
            icon="icons/template.gif"
            description="print (considers python 2 or 3)"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.print">
         <pattern>print${space_if_py2}${lparen_if_py3}${cursor}${rparen_if_py3}</pattern>
      </template>
      <template
            autoinsert="true"
            name="printdir"
            icon="icons/template.gif"
            description="print '\n'.join(sorted(dir(value)))"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.printdir">
         <pattern>print${space_if_py2}${lparen_if_py3}'\n'.join(sorted(dir(${cursor})))${rparen_if_py3}</pattern>
      </template>
      <template
            autoinsert="true"
            name="printexc"
            icon="icons/template.gif"
            description="print current traceback"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.printexc">
         <pattern>import traceback;traceback.print_exc()${cursor}</pattern>
      </template>
      <template
            autoinsert="true"
            name="raiseruntimeerror"
            icon="icons/template.gif"
            description="raise RuntimeError('desc')"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.raiseruntimeerror">
         <pattern>raise RuntimeError('${desc}')${cursor}</pattern>
      </template>
      <template
            autoinsert="true"
            name="raise"
            icon="icons/template.gif"
            description="raise"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.raise">
         <pattern>raise ${cursor}</pattern>
      </template>
      <template
            autoinsert="false"
            name="testCase"
            icon="icons/template.gif"
            description="Complete test-case module with pyunit"
            contextTypeId="org.python.pydev.editor.templates.python"
            id="org.python.pydev.editor.templates.python.testCase">
         <pattern>import unittest

class ${TestCase}(unittest.TestCase):

    def setUp(self):
        unittest.TestCase.setUp(self)

    def tearDown(self):
        unittest.TestCase.tearDown(self)

    def test${Met1}(self):
        ${pass}${cursor}

if __name__ == '__main__':
    unittest.main()
</pattern>


      </template>








      <!-- keywords
Done with:
template = '''<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="%s keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.%s"
   name="%s">
   <pattern>%s ${cursor}</pattern>
</template>'''

import keyword
for k in keyword.kwlist:
   print template % (k,k,k,k)

   but removing the ones that were already there (class def print raise)
       -->
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="and keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.and"
   name="and">
   <pattern>and ${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="assert keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.assert"
   name="assert">
   <pattern>assert ${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="break keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.break"
   name="break">
   <pattern>break${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="continue keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.continue"
   name="continue">
   <pattern>continue${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="del keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.del"
   name="del">
   <pattern>del ${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="elif keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.elif"
   name="elif">
   <pattern>elif${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="else keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.else"
   name="else">
   <pattern>else${cursor}</pattern>
</template>
<!-- removed try.. related
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="except keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.except"
   name="except">
   <pattern>except${cursor}:</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="exec keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.exec"
   name="exec">
   <pattern>exec ${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="finally keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.finally"
   name="finally">
   <pattern>finally:${cursor}</pattern>
</template>
-->
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="for keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.for"
   name="for">
   <pattern>for ${cursor}:</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="from keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.from"
   name="from">
   <pattern>from ${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="global keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.global"
   name="global">
   <pattern>global ${cursor}</pattern>
</template>
<!-- removed short ones
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="if keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.if"
   name="if">
   <pattern>if ${cursor}:</pattern>
</template>
-->
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="import keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.import"
   name="import">
   <pattern>import ${cursor}</pattern>
</template>
<!-- removed short ones
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="in keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.in"
   name="in">
   <pattern>in ${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="is keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.is"
   name="is">
   <pattern>is ${cursor}</pattern>
</template>
-->
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="lambda keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.lambda"
   name="lambda">
   <pattern>lambda ${args}:${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="not keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.not"
   name="not">
   <pattern>not ${cursor}</pattern>
</template>
<!-- removed short ones
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="or keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.or"
   name="or">
   <pattern>or ${cursor}</pattern>
</template>
-->
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="pass keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.pass"
   name="pass">
   <pattern>pass${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="return keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.return"
   name="return">
   <pattern>return ${cursor}</pattern>
</template>
<!-- removed the try.. related because ctrl+1 handles it in a block (and better)
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="try keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.try"
   name="try">
   <pattern>try:${cursor}</pattern>
</template>
-->
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="while keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.while"
   name="while">
   <pattern>while ${cursor}:</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="yield keyword"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.yield"
   name="yield">
   <pattern>yield ${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="property creation from inner methods"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.property_inner"
   name="property_inner">
   <pattern>def ${prop}(): #@NoSelf
    doc = """${Docstring}""" #@UnusedVariable

    def fget(self):
        return self._${prop}

    def fset(self, value):
        self._${prop} = value

    def fdel(self):
        del self._${prop}

    return locals()

${prop} = property(**${prop}())${cursor}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="encoding comment"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.encoding.comment"
   name="cod">
   <pattern># encoding: ${word_selection}</pattern>
</template>
<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python"
   description="encoding comment: utf-8"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.encoding.comment.utf8"
   name="codu8">
   <pattern># encoding: utf-8</pattern>
</template>






<!-- Module Templates -->

<template
   autoinsert="false"
   contextTypeId="org.python.pydev.editor.templates.python.modules"
   description="Module: Unittest with setUp and tearDown"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.module.setup_and_teardown"
   name="Module: Unittest with setUp and tearDown">
   <pattern>'''
Created on ${date}

@author: ${user}
'''
import unittest


class Test(unittest.TestCase):


    def setUp(self):
        pass


    def tearDown(self):
        pass


    def test${Name}(self):
        ${pass}${cursor}


if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.test${Name}']
    unittest.main()
</pattern>
</template>





<template
   autoinsert="false"
   contextTypeId="org.python.pydev.editor.templates.python.modules"
   description="Module: Main"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.module.main"
   name="Module: Main">
   <pattern>'''
Created on ${date}

@author: ${user}
'''

if __name__ == '__main__':
    ${pass}${cursor}
</pattern>
</template>








<template
   autoinsert="false"
   contextTypeId="org.python.pydev.editor.templates.python.modules"
   description="Module: Class"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.module.class"
   name="Module: Class">
   <pattern>'''
Created on ${date}

@author: ${user}
'''

class ${MyClass}(${object}):
    '''
    ${classdocs}
    '''


    def __init__(self, ${params}):
        '''
        ${Constructor}
        '''
        ${cursor}
</pattern>
</template>







<template
   autoinsert="false"
   contextTypeId="org.python.pydev.editor.templates.python.modules"
   description="Module: Empty"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.module.empty"
   name="&lt;Empty&gt;">
   <pattern>'''
Created on ${date}

@author: ${user}
'''
${cursor}
</pattern>
</template>






<template
   autoinsert="false"
   contextTypeId="org.python.pydev.editor.templates.python.modules"
   description="Module: Unittest"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.module.unittest"
   name="Module: Unittest">
   <pattern>'''
Created on ${date}

@author: ${user}
'''
import unittest


class Test(unittest.TestCase):


    def test${Name}(self):
        ${pass}${cursor}


if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.test${Name}']
    unittest.main()
</pattern>
</template>







<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python.modules"
   description="Module: Command line tool skeleton using argparse (suitable for Python 2.7+)"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.module.cli.argparse"
   name="Module: CLI (argparse)">
   <pattern>#!/usr/local/bin/python2.7
# encoding: utf-8
'''
${module} -- ${shortdesc}

${module} is a ${description}

It defines ${classes_and_methods}

@author:     ${user_name}

@copyright:  ${year} ${organization_name}. All rights reserved.

@license:    ${license}

@contact:    ${user_email}
@deffield    updated: Updated
'''

import sys
import os

from argparse import ArgumentParser
from argparse import RawDescriptionHelpFormatter

__all__ = []
__version__ = 0.1
__date__ = '${isodate}'
__updated__ = '${isodate}'

DEBUG = 1
TESTRUN = 0
PROFILE = 0

class CLIError(Exception):
    '''Generic exception to raise and log different fatal errors.'''
    def __init__(self, msg):
        super(CLIError).__init__(type(self))
        self.msg = "E: %s" % msg
    def __str__(self):
        return self.msg
    def __unicode__(self):
        return self.msg

def main(argv=None): # IGNORE:C0111
    '''Command line options.'''

    if argv is None:
        argv = sys.argv
    else:
        sys.argv.extend(argv)

    program_name = os.path.basename(sys.argv[0])
    program_version = "v%s" % __version__
    program_build_date = str(__updated__)
    program_version_message = '%%(prog)s %s (%s)' % (program_version, program_build_date)
    program_shortdesc = __import__('__main__').__doc__.split("\n")[1]
    program_license = '''%s

  Created by ${user_name} on %s.
  Copyright ${year} ${organization_name}. All rights reserved.

  Licensed under the Apache License 2.0
  http://www.apache.org/licenses/LICENSE-2.0

  Distributed on an "AS IS" basis without warranties
  or conditions of any kind, either express or implied.

USAGE
''' % (program_shortdesc, str(__date__))

    try:
        # Setup argument parser
        parser = ArgumentParser(description=program_license, formatter_class=RawDescriptionHelpFormatter)
        parser.add_argument("-r", "--recursive", dest="recurse", action="store_true", help="recurse into subfolders [default: %(default)s]")
        parser.add_argument("-v", "--verbose", dest="verbose", action="count", help="set verbosity level [default: %(default)s]")
        parser.add_argument("-i", "--include", dest="include", help="only include paths matching this regex pattern. Note: exclude is given preference over include. [default: %(default)s]", metavar="RE" )
        parser.add_argument("-e", "--exclude", dest="exclude", help="exclude paths matching this regex pattern. [default: %(default)s]", metavar="RE" )
        parser.add_argument('-V', '--version', action='version', version=program_version_message)
        parser.add_argument(dest="paths", help="paths to folder(s) with source file(s) [default: %(default)s]", metavar="path", nargs='+')

        # Process arguments
        args = parser.parse_args()

        paths = args.paths
        verbose = args.verbose
        recurse = args.recurse
        inpat = args.include
        expat = args.exclude

        if verbose &gt; 0:
            print("Verbose mode on")
            if recurse:
                print("Recursive mode on")
            else:
                print("Recursive mode off")

        if inpat and expat and inpat == expat:
            raise CLIError("include and exclude pattern are equal! Nothing will be processed.")

        for inpath in paths:
            ### do something with inpath ###
            print(inpath)
        return 0
    except KeyboardInterrupt:
        ### handle keyboard interrupt ###
        return 0
    except Exception, e:
        if DEBUG or TESTRUN:
            raise(e)
        indent = len(program_name) * " "
        sys.stderr.write(program_name + ": " + repr(e) + "\n")
        sys.stderr.write(indent + "  for help use --help")
        return 2

if __name__ == "__main__":
    if DEBUG:
        sys.argv.append("-h")
        sys.argv.append("-v")
        sys.argv.append("-r")
    if TESTRUN:
        import doctest
        doctest.testmod()
    if PROFILE:
        import cProfile
        import pstats
        profile_filename = '${module}_profile.txt'
        cProfile.run('main()', profile_filename)
        statsfile = open("profile_stats.txt", "wb")
        p = pstats.Stats(profile_filename, stream=statsfile)
        stats = p.strip_dirs().sort_stats('cumulative')
        stats.print_stats()
        statsfile.close()
        sys.exit(0)
    sys.exit(main())
</pattern>
</template>







<template
   autoinsert="true"
   contextTypeId="org.python.pydev.editor.templates.python.modules"
   description="Module: Command line tool skeleton using optparse (suitable for Python &lt; 2.6)"
   icon="icons/template.gif"
   id="org.python.pydev.editor.templates.python.module.cli.optparse"
   name="Module: CLI (optparse)">
   <pattern>#!/usr/bin/env python
# encoding: utf-8
'''
${module} -- ${shortdesc}

${module} is a ${description}

It defines ${classes_and_methods}

@author:     ${user_name}

@copyright:  ${year} ${organization_name}. All rights reserved.

@license:    ${license}

@contact:    ${user_email}
@deffield    updated: Updated
'''

import sys
import os

from optparse import OptionParser

__all__ = []
__version__ = 0.1
__date__ = '${isodate}'
__updated__ = '${isodate}'

DEBUG = 1
TESTRUN = 0
PROFILE = 0

def main(argv=None):
    '''Command line options.'''

    program_name = os.path.basename(sys.argv[0])
    program_version = "v0.1"
    program_build_date = "%s" % __updated__

    program_version_string = '%%prog %s (%s)' % (program_version, program_build_date)
    #program_usage = '''usage: spam two eggs''' # optional - will be autogenerated by optparse
    program_longdesc = '''''' # optional - give further explanation about what the program does
    program_license = "Copyright ${year} ${user_name} (${organization_name})                                            \
                Licensed under the Apache License 2.0\nhttp://www.apache.org/licenses/LICENSE-2.0"

    if argv is None:
        argv = sys.argv[1:]
    try:
        # setup option parser
        parser = OptionParser(version=program_version_string, epilog=program_longdesc, description=program_license)
        parser.add_option("-i", "--in", dest="infile", help="set input path [default: %default]", metavar="FILE")
        parser.add_option("-o", "--out", dest="outfile", help="set output path [default: %default]", metavar="FILE")
        parser.add_option("-v", "--verbose", dest="verbose", action="count", help="set verbosity level [default: %default]")

        # set defaults
        parser.set_defaults(outfile="./out.txt", infile="./in.txt")

        # process options
        (opts, args) = parser.parse_args(argv)

        if opts.verbose &gt; 0:
            print("verbosity level = %d" % opts.verbose)
        if opts.infile:
            print("infile = %s" % opts.infile)
        if opts.outfile:
            print("outfile = %s" % opts.outfile)

        # MAIN BODY #

    except Exception, e:
        indent = len(program_name) * " "
        sys.stderr.write(program_name + ": " + repr(e) + "\n")
        sys.stderr.write(indent + "  for help use --help")
        return 2


if __name__ == "__main__":
    if DEBUG:
        sys.argv.append("-h")
    if TESTRUN:
        import doctest
        doctest.testmod()
    if PROFILE:
        import cProfile
        import pstats
        profile_filename = '${module}_profile.txt'
        cProfile.run('main()', profile_filename)
        statsfile = open("profile_stats.txt", "wb")
        p = pstats.Stats(profile_filename, stream=statsfile)
        stats = p.strip_dirs().sort_stats('cumulative')
        stats.print_stats()
        statsfile.close()
        sys.exit(0)
    sys.exit(main())
</pattern>
</template>








   </extension>
   <extension
         point="org.eclipse.core.runtime.adapters">
      <factory
            adaptableType="org.eclipse.jface.viewers.ISelection"
            class="org.python.pydev.shared_interactive_console.console.codegen.ScriptConsoleCodeGeneratorFactory">
         <adapter
               type="org.python.pydev.shared_interactive_console.console.codegen.IScriptConsoleCodeGenerator">
         </adapter>
      </factory>
   </extension>
   <extension
         point="org.eclipse.core.expressions.definitions">
      <definition
            id="org.python.pydev.editor.PythonEditor.activeEditor">
         <with
               variable="activeEditorId">
            <equals
                  value="org.python.pydev.editor.PythonEditor">
            </equals>
         </with>
      </definition>
   </extension>
   <extension
         point="org.python.pydev.pydev_interpreter_provider">
      <interpreter_provider_participant
            class="org.python.pydev.ui.pythonpathconf.PythonInterpreterProviderFactory">
      </interpreter_provider_participant>
      <interpreter_provider_participant
            class="org.python.pydev.ui.pythonpathconf.JythonInterpreterProviderFactory">
      </interpreter_provider_participant>
      <interpreter_provider_participant
            class="org.python.pydev.ui.pythonpathconf.IronpythonInterpreterProviderFactory">
      </interpreter_provider_participant>
   </extension>
   <extension
         point="org.eclipse.e4.ui.css.swt.theme">
      <stylesheet
            uri="css/dark/e4-pydev-dark_preferencestyle.css">
         <themeid
               refid="org.eclipse.e4.ui.css.theme.e4_dark">
         </themeid>
      </stylesheet>
   </extension>
   <extension
         point="org.python.pydev.pydev_hover2">
      <pyTextHover
            activate="false"
            class="org.python.pydev.editor.hover.PyDocstringTextHover"
            description="Provides hover text for Python docstrings"
            enable="true"
            id="org.python.pydev.editor.hover.pyDocstringTextHover"
            label="PyDev Docstring Hover"
            preempt="false"
            priority="100">
      </pyTextHover>
   </extension>
   <extension
         point="org.python.pydev.pydev_hover2">
      <pyTextHover
            activate="false"
            class="org.python.pydev.editor.hover.PyMarkerTextHover"
            description="Provides hover text for Python markers"
            enable="true"
            id="org.python.pydev.editor.hover.pyMarkerTextHover"
            label="PyDev Marker Hover"
            preempt="false"
            priority="150">
      </pyTextHover>
   </extension>
 </plugin>
