[Pydev-cvs] org.python.pydev/src/org/python/pydev/builder/syntaxchecker PySyntaxChecker.java, NONE
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2008-09-28 12:45:55
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/builder/syntaxchecker In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4313/src/org/python/pydev/builder/syntaxchecker Added Files: PySyntaxChecker.java ClearSyntaxMarkersPyeditListener.java Log Message: Synching to latest changes: Pydev <ul> <li><strong>Editor</strong>: Cursor settings no longer overridden</li> <li><strong>Code-completion</strong>: If __all__ is defined with runtime elements (and not only in a single assign statement), it's ignored for code-completion purposes</li> <li><strong>Debugger</strong>: Pythonpath the same in debug and regular modes (sys.path[0] is the same directory as the file run)</li> <li><strong>Debugger</strong>: Persist choices done in the debugger when files from the debugger are not found</li> <li><strong>Interpreter config</strong>: "email" automatically added to the "forced builtins"</li> <li><strong>Parser</strong>: Correctly recognizing absolute import with 3 or more levels</li> <li><strong>Syntax check</strong>: Option to do only on active editor</li> </ul> Also: tabs changed for spaces --- NEW FILE: PySyntaxChecker.java --- package org.python.pydev.builder.syntaxchecker; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.text.IDocument; import org.python.pydev.builder.PyDevBuilderPrefPage; import org.python.pydev.builder.PyDevBuilderVisitor; import org.python.pydev.editor.codecompletion.revisited.modules.SourceModule; import org.python.pydev.parser.PyParser; import org.python.pydev.plugin.DebugSettings; import org.python.pydev.plugin.PydevPlugin; import org.python.pydev.plugin.nature.PythonNature; /** * Whenever a given resource is changed, a syntax check is done, updating errors related to the syntax. * * @author Fabio */ public class PySyntaxChecker extends PyDevBuilderVisitor{ @Override public void visitChangedResource(IResource resource, IDocument document, IProgressMonitor monitor) { PythonNature nature = getPythonNature(resource); if(nature == null){ return; } if(PyDevBuilderPrefPage.getAnalyzeOnlyActiveEditor()){ if(DebugSettings.DEBUG_ANALYSIS_REQUESTS){ System.out.println("PySyntaxChecker: PyDevBuilderPrefPage.getAnalyzeOnlyActiveEditor()"); } return; //not analyzed with this builder... always from parser changes. } try { PyParser.deleteErrorMarkers(resource); } catch (CoreException e) { PydevPlugin.log(e); } if(DebugSettings.DEBUG_ANALYSIS_REQUESTS){ System.out.println("PySyntaxChecker: Checking!"); } SourceModule mod = getSourceModule(resource, document, nature); Throwable parseError = mod.parseError; if(parseError != null){ try { PyParser.createParserErrorMarkers(parseError, resource, document); } catch (Exception e) { PydevPlugin.log(e); } } } @Override public void visitRemovedResource(IResource resource, IDocument document, IProgressMonitor monitor) { // Nothing needs to be done in this case } } --- NEW FILE: ClearSyntaxMarkersPyeditListener.java --- package org.python.pydev.builder.syntaxchecker; import java.util.ListResourceBundle; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.text.IDocument; import org.eclipse.ui.IEditorInput; import org.python.pydev.builder.PyDevBuilderPrefPage; import org.python.pydev.editor.IPyEditListener; import org.python.pydev.editor.IPyEditListener3; import org.python.pydev.editor.PyEdit; import org.python.pydev.parser.PyParser; import org.python.pydev.plugin.DebugSettings; import org.python.pydev.plugin.PydevPlugin; /** * When the editor is disposed, if needed this class will remove the markers from the related * file (if no other editor is still editing the same file). * * @author Fabio */ public class ClearSyntaxMarkersPyeditListener implements IPyEditListener, IPyEditListener3{ public void onCreateActions(ListResourceBundle resources, PyEdit edit, IProgressMonitor monitor) { } public void onDispose(PyEdit edit, IProgressMonitor monitor) { //remove the markers if we want problems only in the active editor. IEditorInput input = edit.getEditorInput(); removeMarkersFromInput(input); } public void onSave(PyEdit edit, IProgressMonitor monitor) { } public void onSetDocument(IDocument document, PyEdit edit, IProgressMonitor monitor) { } public void onInputChanged(PyEdit edit, IEditorInput oldInput, IEditorInput input, IProgressMonitor monitor) { removeMarkersFromInput(oldInput); } /** * This function will remove the markers from the passed input. * @param input the input */ private void removeMarkersFromInput(IEditorInput input) { if(input!= null && PyDevBuilderPrefPage.getAnalyzeOnlyActiveEditor()){ if(DebugSettings.DEBUG_ANALYSIS_REQUESTS){ System.out.println("ClearSyntaxMarkersPyeditListener: removing syntax error markers from editor."); } IFile relatedFile = (IFile) input.getAdapter(IFile.class); if(relatedFile != null && relatedFile.exists()){ //when disposing, remove all markers try { PyParser.deleteErrorMarkers(relatedFile); } catch (CoreException e) { PydevPlugin.log(e); } } } } } |