- Tutorial for mod_python
- Add shortcut for running unit-test

- Context insensitive completions:
  - Organize imports should pass all the not defined vars and show the imports available for them
  - Organize imports should merge imports with the same 'xxx' in from xxx import yyy, bbb, etc 

- Change all calls to Runtime.exec(String) to Runtime.exec(String[])


- hierarchy view: show with f4 / close / open view / f4 (will not work)
- DEBUGGER BUG: if a class is defined within a method, things later in that method are not able to get the correct name for the breakpoint scope (cannot reproduce?)
- Debugger: enable users to configure the mappings for remote debugging in a 'nice' way.
- The filter for the name of tests to ignore when running pyunit should be asked at run-time (with user-option to not show it).
- When opening a python file, it should try to 'adapt' to the current indent style used (and give warnings about wrong stuff).
- Ctrl+2+ XXX should be case-independent.
- Ctrl+* should enable/disable mark occurrences
- Variable highlight doesn't respect local scope (all docstrings are gotten in the file when renaming a local variable)
- Add breakpoint if file is zip
- Mark new project as python 2.5

- Enable users to work with zip files and integrate better with java (jars and ast structure).
	- Simple support (code-completion / modules): OK
	- Go to definition: OK, but needs changing to NameLookup in findDefinition (better API reference -- internal, but we'll be using it in another place, so, it'll have to be supported anyway) 
	- Context insensitive import: OK
	- Debugger
	- .pyd inside zip file (handled but not tested): 
		- ModulesManager: else if(PythonPathHelper.isValidDll(emptyModuleForZip.pathInZip)){
		
- CNF: Go into / up in pydev package explorer: http://richclientplatform.blogspot.com/2007/07/adding-go-into-and-go-up-to-cnf.html
- Option to add line at end of file
- Generate log for reporting errors
- Rename refactoring: check for overriden methods
- Remote debugging: use module name is possible? (not filesystem dependent)
- better warning when user does not have psyco (while debugging)
- PyGlobalsBrowser.getFromWorkspace() should work with jython and python if both are available



- static analysis case:
import os
os.Bar().Foo() <-- error in wrong places!


console:
	- getpass: echo mode
	- persistent history
	- undo/redo for current line
	- make use in debugger
	

docs: http://www.fabioz.com/pydev/manual_adv_remote_debugger.html  (need to be in debug perspective)

- Try to reproduce:
problems:

!MESSAGE Error in occurrences while analyzing modName:petro20.writers.kase._kase_writer initialName:compression line (start at 0):10
!STACK 0
java.lang.RuntimeException: Error in occurrences while analyzing modName:petro20.writers.kase._kase_writer initialName:compression line (start at 0):10
	at com.python.pydev.refactoring.markoccurrences.MarkOccurrencesJob.checkAnnotations(MarkOccurrencesJob.java:229)
	at com.python.pydev.refactoring.markoccurrences.MarkOccurrencesJob.run(MarkOccurrencesJob.java:125)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.ClassCastException: org.python.pydev.parser.jython.ast.Module
	at com.python.pydev.refactoring.wizards.rename.PyRenameParameterProcess.init(PyRenameParameterProcess.java:109)
	at com.python.pydev.refactoring.wizards.rename.PyRenameParameterProcess.<init>(PyRenameParameterProcess.java:70)
	at com.python.pydev.refactoring.wizards.RefactorProcessFactory.getProcess(RefactorProcessFactory.java:64)
	at com.python.pydev.refactoring.wizards.rename.PyRenameEntryPoint.checkInitialConditions(PyRenameEntryPoint.java:193)
	at com.python.pydev.refactoring.markoccurrences.MarkOccurrencesJob.checkAnnotations(MarkOccurrencesJob.java:216)
	... 2 more
	
	
	
	
	
	
	
problem after removing project;

Unable to find the path /kraken20 2.0.13/kraken20/source/python in the project were it's
added as a source folder for pydev (project: kraken20 2.0.13)
Unable to find the path /kraken20 2.0.13/kraken20/source/python in the project were it's
added as a source folder for pydev (project: kraken20 2.0.13)
org.eclipse.core.runtime.CoreException: Unable to find the path /kraken20 2.0.13/kraken20/source/python in the project were it's
added as a source folder for pydev (project: kraken20 2.0.13)
        at org.python.pydev.plugin.PydevPlugin.log(PydevPlugin.java:372)
        at org.python.pydev.plugin.nature.PythonPathNature.getOnlyProjectPythonPathStr(PythonPathNature.java:149)
        at org.python.pydev.plugin.nature.PythonNature.rebuildPath(PythonNature.java:464)
        at org.python.pydev.plugin.nature.PythonNature.rebuildPath(PythonNature.java:457)
        at org.python.pydev.plugin.nature.PythonPathNature.getProjectSourcePath(PythonPathNature.java:237)
        at org.python.pydev.plugin.nature.PythonPathNature.getProjectSourcePathSet(PythonPathNature.java:189)
        at org.python.pydev.navigator.PythonModelProvider.doWrapPossibleSourceFolder(PythonModelProvider.java:432)
        at org.python.pydev.navigator.PythonModelProvider.doWrap(PythonModelProvider.java:380)
        at org.python.pydev.navigator.PythonModelProvider.wrapChildren(PythonModelProvider.java:337)
        at org.python.pydev.navigator.PythonModelProvider.convertToPythonElementsAddOrRemove(PythonModelProvider.java:250)
        at org.python.pydev.navigator.PythonModelProvider.interceptAdd(PythonModelProvider.java:106)
        at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.interceptAdd(SafeDelegateTreeContentProvider.java:224)
        at org.eclipse.ui.internal.navigator.NavigatorPipelineService.pipelineInterceptAdd(NavigatorPipelineService.java:124)
        at org.eclipse.ui.internal.navigator.NavigatorPipelineService.interceptAdd(NavigatorPipelineService.java:81)
        at org.eclipse.ui.navigator.CommonViewer.add(CommonViewer.java:242)
        at org.python.pydev.navigator.PythonBaseModelProvider$2.run(PythonBaseModelProvider.java:844)
        at org.python.pydev.navigator.PythonBaseModelProvider.runUpdates(PythonBaseModelProvider.java:698)
        at org.python.pydev.navigator.PythonBaseModelProvider.access$0(PythonBaseModelProvider.java:694)
        at org.python.pydev.navigator.PythonBaseModelProvider$1.run(PythonBaseModelProvider.java:683)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
        at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:158)
        at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:326)
        at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:934)
        at org.eclipse.ui.internal.wizards.datatransfer.WizardProjectsImportPage.createProjects(WizardProjectsImportPage.java:1091)
        at org.eclipse.ui.wizards.datatransfer.ExternalProjectImportWizard.performFinish(ExternalProjectImportWizard.java:97)
        at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:742)
        at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:373)
        at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:616)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
        at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
        at org.eclipse.jface.window.Window.open(Window.java:796)
        at org.eclipse.ui.actions.ImportResourcesAction.run(ImportResourcesAction.java:159)
        at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:168)
        at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:546)
        at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:490)
        at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:402)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3682)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3293)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
        at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
org.eclipse.core.runtime.CoreException[4]: java.lang.RuntimeException: Unable to find the path /kraken20 2.0.13/kraken20/source/python in the project were it
's