Bug 1286379 - Issues with pydev editor and outline
Summary: Issues with pydev editor and outline
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: eclipse-pydev
Version: 23
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Alexander Kurtakov
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-11-28 19:24 UTC by Christian Stadelmann
Modified: 2016-05-25 08:03 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-05-25 08:03:25 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Christian Stadelmann 2015-11-28 19:24:00 UTC
Description of problem:
The pydev eclipse plugin has many issues. This includes:

Outline does not link with editor after switching perspective:
Steps to reproduce:
1. open a python file in pydev perspective
2. check that outline and editor are linked and test. Should work fine
3. Switch to another perspective (e.g. Debug or C/C++)
4. test again. Now editor and outline are not linked any more.

Sometimes outline isn't even populated, although I cannot give exact steps to reproduce.

Editor and Outline use different style than C/C++, Java, etc. Seems like pydev is creating its own components (discouraged) instead of reusing existing ones.

Refactor is not sensitive to content and role in python files. It will always try to search for all elements with same name in all files in current project. Java and C/C++ editors are way better providing some semantic logic around refactoring.

Version-Release number of selected component (if applicable):
eclipse-pydev-4.4.0-2.fc23.x86_64

Comment 1 Alexander Kurtakov 2015-12-11 07:41:43 UTC
Christian, 
Would you be so kind to try with eclipse pydev installed from it's update site? I'm interested in the outline issues being reproducible with upstream pydev. Regarding the styles used - yes pydev use it's own components in many places and there is little we can do about it. 
Please report this upstream, the more people requesting standardizaton, the higher chances for it.

Comment 2 Christian Stadelmann 2015-12-11 12:57:59 UTC
Sorry, I am unable to find an upstream bug tracker. Both http://www.pydev.org/ and https://github.com/fabioz/Pydev don't provide one.
Upstream eclipse-pydev is a complete mess, doesn't even let eclipse start when using -clean once. Any ideas?

Comment 3 Mat Booth 2016-05-03 12:08:49 UTC
I cannot seem reproduce this on Rawhide (PyDev 4.5.5 and Eclipse Neon)

I.e. clicking on items in the outline view always moves the cursor in the editor to the element I clicked on, no matter which perspective I switch to.

Any chance you can test with PyDev 4.5.5 in the Fedora 24 Beta and see if the issue is fixed for you there?

Comment 4 Christian Stadelmann 2016-05-03 18:36:26 UTC
The fact that outline and editor unlink after some usage of eclipse-pydev is gone with pydev 4.5.5 and eclipse 4.5.2-10.

Still, pydev is barely usable:

When starting a pydev perspective, I get this backtrace:

eclipse.buildId=4.5.2.v20160416-0700
java.version=1.8.0_91
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE
Command-line arguments:  -os linux -ws gtk -arch x86_64

org.python.pydev.shared_core
Fehler
Tue May 03 20:28:36 CEST 2016
Expected to find 'from' token as the current temporary token (begin col/line can be wrong)!

java.lang.RuntimeException: Expected to find 'from' token as the current temporary token (begin col/line can be wrong)!
	at org.python.pydev.core.log.Log.log(Log.java:54)
	at org.python.pydev.parser.grammarcommon.AbstractTreeBuilder.makeImportFrom25Onwards(AbstractTreeBuilder.java:713)
	at org.python.pydev.parser.grammar27.TreeBuilder27.onCloseNode(TreeBuilder27.java:418)
	at org.python.pydev.parser.grammarcommon.AbstractTreeBuilder.closeNode(AbstractTreeBuilder.java:625)
	at org.python.pydev.parser.grammarcommon.JJTPythonGrammarState.closeNodeScope(JJTPythonGrammarState.java:212)
	at org.python.pydev.parser.grammar27.PythonGrammar27.ImportFrom(PythonGrammar27.java:2777)
	at org.python.pydev.parser.grammar27.PythonGrammar27.import_stmt(PythonGrammar27.java:2590)
	at org.python.pydev.parser.grammar27.PythonGrammar27.small_stmt(PythonGrammar27.java:949)
	at org.python.pydev.parser.grammar27.PythonGrammar27.simple_stmt(PythonGrammar27.java:868)
	at org.python.pydev.parser.grammar27.PythonGrammar27.stmt(PythonGrammar27.java:843)
	at org.python.pydev.parser.grammar27.PythonGrammar27.file_input(PythonGrammar27.java:209)
	at org.python.pydev.parser.grammar27.PythonGrammar27.file_input(PythonGrammar27.java:1)
	at org.python.pydev.parser.PyParser.reparseDocument(PyParser.java:542)
	at org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule.createModuleFromDoc(AbstractModule.java:307)
	at org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule.createModule(AbstractModule.java:286)
	at org.python.pydev.editor.codecompletion.revisited.ModulesManager.getModule(ModulesManager.java:942)
	at org.python.pydev.editor.codecompletion.revisited.ModulesManager.getModule(ModulesManager.java:787)
	at org.python.pydev.editor.codecompletion.revisited.ProjectModulesManager.getModuleInDirectManager(ProjectModulesManager.java:243)
	at org.python.pydev.editor.codecompletion.revisited.ProjectModulesManager.getModuleAndRelatedModulesManager(ProjectModulesManager.java:215)
	at org.python.pydev.editor.codecompletion.revisited.ProjectModulesManager.getModule(ProjectModulesManager.java:180)
	at org.python.pydev.editor.codecompletion.revisited.ProjectModulesManager.getModule(ProjectModulesManager.java:164)
	at org.python.pydev.editor.codecompletion.revisited.AbstractASTManager.getModule(AbstractASTManager.java:476)
	at org.python.pydev.editor.codecompletion.revisited.AbstractASTManager.findModuleFromPath(AbstractASTManager.java:2150)
	at org.python.pydev.editor.codecompletion.revisited.AbstractASTManager.findOnImportedMods(AbstractASTManager.java:2024)
	at org.python.pydev.editor.codecompletion.revisited.AbstractASTManager.findOnImportedMods(AbstractASTManager.java:1919)
	at com.python.pydev.analysis.visitors.ImportChecker.visitImportToken(ImportChecker.java:186)
	at com.python.pydev.analysis.visitors.ImportChecker.visitImportToken(ImportChecker.java:167)
	at com.python.pydev.analysis.visitors.Scope.addImportTokens(Scope.java:173)
	at com.python.pydev.analysis.scopeanalysis.AbstractScopeAnalyzerVisitor.visitImportFrom(AbstractScopeAnalyzerVisitor.java:581)
	at org.python.pydev.parser.jython.ast.ImportFrom.accept(ImportFrom.java:105)
	at com.python.pydev.analysis.scopeanalysis.AbstractScopeAnalyzerVisitor.visitFunctionDef(AbstractScopeAnalyzerVisitor.java:427)
	at org.python.pydev.parser.jython.ast.FunctionDef.accept(FunctionDef.java:137)
	at com.python.pydev.analysis.scopeanalysis.AbstractScopeAnalyzerVisitor.visitClassDef(AbstractScopeAnalyzerVisitor.java:262)
	at org.python.pydev.parser.jython.ast.ClassDef.accept(ClassDef.java:172)
	at org.python.pydev.parser.jython.ast.Module.traverse(Module.java:93)
	at com.python.pydev.analysis.scopeanalysis.AbstractScopeAnalyzerVisitor.traverse(AbstractScopeAnalyzerVisitor.java:193)
	at com.python.pydev.analysis.visitors.OccurrencesVisitor.traverse(OccurrencesVisitor.java:263)
	at org.python.pydev.parser.jython.ast.VisitorBase.visitModule(VisitorBase.java:11)
	at org.python.pydev.parser.jython.ast.Module.accept(Module.java:85)
	at com.python.pydev.analysis.OccurrencesAnalyzer.analyzeDocument(OccurrencesAnalyzer.java:56)
	at com.python.pydev.analysis.builder.AnalysisBuilderRunnable.doAnalysis(AnalysisBuilderRunnable.java:251)
	at com.python.pydev.analysis.builder.AbstractAnalysisBuilderRunnable.run(AbstractAnalysisBuilderRunnable.java:162)
	at org.python.pydev.core.concurrency.RunnableAsJobsPoolThread$1.run(RunnableAsJobsPoolThread.java:140)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)




When closing many python files using Ctrl+W, I get many error messages. This is the only backtrace reported:

eclipse.buildId=4.5.2.v20160416-0700
java.version=1.8.0_91
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=de_DE
Command-line arguments:  -os linux -ws gtk -arch x86_64

org.python.pydev.shared_core
Informationen
Tue May 03 20:29:01 CEST 2016
It seems it's already disposed...

java.lang.RuntimeException: It seems it's already disposed...
	at org.python.pydev.shared_core.log.Log.logInfo(Log.java:52)
	at org.python.pydev.shared_ui.outline.BaseModel.setRoot(BaseModel.java:189)
	at org.python.pydev.shared_ui.outline.BaseModel$1$1.run(BaseModel.java:68)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3912)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3551)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:694)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:606)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1488)



editor scrolling still is utterly slow with many visual artifacts. Refactoring looks like it was fixed.

Comment 5 Christian Stadelmann 2016-05-24 20:00:30 UTC
Ok, pydev slownes is probably due to missing graphics acceleration on gnome+wayland thus pydev is not to blame.
The other tracebacks are gone with pydev 5.0.0-1.fc24 when running a python3 project.
If you want to, you may close this issue now.

Comment 6 Alexander Kurtakov 2016-05-25 08:03:25 UTC
Marking as closed as per previous comment.


Note You need to log in before you can comment on or make changes to this bug.