[Pydev-cvs] org.python.pydev.refactoring/src/org/python/pydev/refactoring/core RefactoringInfo.jav
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2008-09-27 20:03:25
|
Update of /cvsroot/pydev/org.python.pydev.refactoring/src/org/python/pydev/refactoring/core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21605/src/org/python/pydev/refactoring/core Modified Files: RefactoringInfo.java AbstractPythonRefactoring.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 Index: RefactoringInfo.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev.refactoring/src/org/python/pydev/refactoring/core/RefactoringInfo.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** RefactoringInfo.java 14 Jun 2008 22:14:34 -0000 1.7 --- RefactoringInfo.java 27 Sep 2008 20:00:46 -0000 1.8 *************** *** 31,223 **** public class RefactoringInfo { ! private IFile sourceFile; ! private IDocument doc; ! private ITextSelection userSelection; ! private ITextSelection extendedSelection; ! private ModuleAdapter moduleAdapter; ! private IPythonNature nature; ! private PythonModuleManager moduleManager; ! private AbstractScopeNode<?> scopeAdapter; ! public RefactoringInfo(ITextEditor edit, IPythonNature nature) { ! this(((IFileEditorInput) edit.getEditorInput()).getFile(), edit.getDocumentProvider().getDocument(edit.getEditorInput()), ! (ITextSelection) edit.getSelectionProvider().getSelection(), nature); ! } ! public RefactoringInfo(IFile sourceFile, IDocument doc, ITextSelection selection, IPythonNature nature) { ! this.sourceFile = sourceFile; ! this.doc = doc; ! this.nature = nature; ! initInfo(selection, userSelection); ! } ! private void initInfo(ITextSelection selection, ITextSelection userSelection) { ! if (this.nature != null) { ! this.moduleManager = new PythonModuleManager(nature); ! } ! File realFile = null; ! if (sourceFile != null) { ! realFile = sourceFile.getRawLocation().toFile(); ! } ! try { ! this.moduleAdapter = VisitorFactory.createModuleAdapter(moduleManager, realFile, doc, nature); ! } catch (ParseException e) { ! throw new RuntimeException(e); ! } ! this.extendedSelection = null; ! this.userSelection = moduleAdapter.normalizeSelection(selection); ! } ! public ModuleAdapter getModule() { ! return moduleAdapter; ! } ! public List<IClassDefAdapter> getClasses() { ! return moduleAdapter.getClasses(); ! } ! public IFile getSourceFile() { ! return this.sourceFile; ! } ! public IDocument getDocument() { ! return this.doc; ! } ! public ITextSelection getExtendedSelection() { ! if (this.extendedSelection == null) { ! this.extendedSelection = new TextSelection(this.doc, this.getUserSelection().getOffset(), this.userSelection.getLength()); ! if (getScopeAdapter() != null) { ! this.extendedSelection = moduleAdapter.normalizeSelection(VisitorFactory.createSelectionExtension(getScopeAdapter(), ! this.extendedSelection)); ! } ! } ! return extendedSelection; ! } ! public ITextSelection getUserSelection() { ! return userSelection; ! } ! public ModuleAdapter getParsedExtendedSelection() { ! return getParsedExtendedSelection(getScopeAdapter()); ! } ! public ModuleAdapter getParsedUserSelection() { ! ModuleAdapter parsedAdapter = null; ! String source = normalizeSourceSelection(getScopeAdapter(), this.userSelection); ! if (this.userSelection != null && source.length() > 0) { ! try { ! parsedAdapter = VisitorFactory.createModuleAdapter(moduleManager, null, new Document(source), nature); ! } catch (ParseException e) { ! /* Parse Exception means the current selection is invalid, discard and return null */ ! } ! } ! return parsedAdapter; ! } ! private ModuleAdapter getParsedExtendedSelection(AbstractScopeNode<?> scopeNode) { ! ModuleAdapter parsedAdapter = null; ! String source = normalizeSourceSelection(scopeNode, this.getExtendedSelection()); ! if (this.getExtendedSelection() != null && source.length() > 0) { ! try { ! parsedAdapter = VisitorFactory.createModuleAdapter(moduleManager, null, new Document(source), nature); ! } catch (ParseException e) { ! /* Parse Exception means the current selection is invalid, discard and return null */ ! } ! } ! return parsedAdapter; ! } ! public String normalizeSourceSelection(AbstractScopeNode<?> scopeNode, ITextSelection selection) { ! String selectedText = ""; ! if (selection.getText() != null) { ! selectedText = selection.getText().trim(); ! } ! if (selectedText.length() == 0) { ! return ""; ! } ! try { ! return normalizeBlockIndentation(selection, selectedText); ! } catch (Throwable e) { ! /* TODO: uncommented empty exception catch all */ ! } ! return selectedText; ! } ! private String normalizeBlockIndentation(ITextSelection selection, String selectedText) throws Throwable { ! String[] lines = selectedText.split("\\n"); ! if (lines.length < 2) { ! return selectedText; ! } ! String firstLine = doc.get(doc.getLineOffset(selection.getStartLine()), doc.getLineLength(selection.getStartLine())); String lineDelimiter = TextUtilities.getDefaultLineDelimiter(doc); ! String indentation = ""; ! int bodyIndent = 0; ! while (firstLine.startsWith(" ")) { ! indentation += " "; ! firstLine = firstLine.substring(1); ! bodyIndent += 1; ! } ! if (bodyIndent > 0) { ! FastStringBuffer selectedCode = new FastStringBuffer(); ! for (String line : lines) { ! if (line.startsWith(indentation)) { ! selectedCode.append(line.substring(bodyIndent) + lineDelimiter); ! } else { ! selectedCode.append(line + lineDelimiter); ! } ! } ! selectedText = selectedCode.toString(); ! } ! return selectedText; ! } ! public IClassDefAdapter getScopeClass() { ! return moduleAdapter.getScopeClass(getUserSelection()); ! } ! public IPythonNature getNature() { ! return nature; ! } ! public List<IClassDefAdapter> getScopeClassAndBases() { ! return moduleAdapter.getClassHierarchy(getScopeClass()); ! } ! public AbstractScopeNode<?> getScopeAdapter() { ! if (scopeAdapter == null) { ! scopeAdapter = moduleAdapter.getScopeAdapter(getUserSelection()); ! } ! return scopeAdapter; ! } ! public boolean isSelectionExtensionRequired() { ! return !(this.getUserSelection().getOffset() == this.getExtendedSelection().getOffset() && this.getUserSelection().getLength() == this ! .getExtendedSelection().getLength()); ! } public String getNewLineDelim() { --- 31,223 ---- public class RefactoringInfo { ! private IFile sourceFile; ! private IDocument doc; ! private ITextSelection userSelection; ! private ITextSelection extendedSelection; ! private ModuleAdapter moduleAdapter; ! private IPythonNature nature; ! private PythonModuleManager moduleManager; ! private AbstractScopeNode<?> scopeAdapter; ! public RefactoringInfo(ITextEditor edit, IPythonNature nature) { ! this(((IFileEditorInput) edit.getEditorInput()).getFile(), edit.getDocumentProvider().getDocument(edit.getEditorInput()), ! (ITextSelection) edit.getSelectionProvider().getSelection(), nature); ! } ! public RefactoringInfo(IFile sourceFile, IDocument doc, ITextSelection selection, IPythonNature nature) { ! this.sourceFile = sourceFile; ! this.doc = doc; ! this.nature = nature; ! initInfo(selection, userSelection); ! } ! private void initInfo(ITextSelection selection, ITextSelection userSelection) { ! if (this.nature != null) { ! this.moduleManager = new PythonModuleManager(nature); ! } ! File realFile = null; ! if (sourceFile != null) { ! realFile = sourceFile.getRawLocation().toFile(); ! } ! try { ! this.moduleAdapter = VisitorFactory.createModuleAdapter(moduleManager, realFile, doc, nature); ! } catch (ParseException e) { ! throw new RuntimeException(e); ! } ! this.extendedSelection = null; ! this.userSelection = moduleAdapter.normalizeSelection(selection); ! } ! public ModuleAdapter getModule() { ! return moduleAdapter; ! } ! public List<IClassDefAdapter> getClasses() { ! return moduleAdapter.getClasses(); ! } ! public IFile getSourceFile() { ! return this.sourceFile; ! } ! public IDocument getDocument() { ! return this.doc; ! } ! public ITextSelection getExtendedSelection() { ! if (this.extendedSelection == null) { ! this.extendedSelection = new TextSelection(this.doc, this.getUserSelection().getOffset(), this.userSelection.getLength()); ! if (getScopeAdapter() != null) { ! this.extendedSelection = moduleAdapter.normalizeSelection(VisitorFactory.createSelectionExtension(getScopeAdapter(), ! this.extendedSelection)); ! } ! } ! return extendedSelection; ! } ! public ITextSelection getUserSelection() { ! return userSelection; ! } ! public ModuleAdapter getParsedExtendedSelection() { ! return getParsedExtendedSelection(getScopeAdapter()); ! } ! public ModuleAdapter getParsedUserSelection() { ! ModuleAdapter parsedAdapter = null; ! String source = normalizeSourceSelection(getScopeAdapter(), this.userSelection); ! if (this.userSelection != null && source.length() > 0) { ! try { ! parsedAdapter = VisitorFactory.createModuleAdapter(moduleManager, null, new Document(source), nature); ! } catch (ParseException e) { ! /* Parse Exception means the current selection is invalid, discard and return null */ ! } ! } ! return parsedAdapter; ! } ! private ModuleAdapter getParsedExtendedSelection(AbstractScopeNode<?> scopeNode) { ! ModuleAdapter parsedAdapter = null; ! String source = normalizeSourceSelection(scopeNode, this.getExtendedSelection()); ! if (this.getExtendedSelection() != null && source.length() > 0) { ! try { ! parsedAdapter = VisitorFactory.createModuleAdapter(moduleManager, null, new Document(source), nature); ! } catch (ParseException e) { ! /* Parse Exception means the current selection is invalid, discard and return null */ ! } ! } ! return parsedAdapter; ! } ! public String normalizeSourceSelection(AbstractScopeNode<?> scopeNode, ITextSelection selection) { ! String selectedText = ""; ! if (selection.getText() != null) { ! selectedText = selection.getText().trim(); ! } ! if (selectedText.length() == 0) { ! return ""; ! } ! try { ! return normalizeBlockIndentation(selection, selectedText); ! } catch (Throwable e) { ! /* TODO: uncommented empty exception catch all */ ! } ! return selectedText; ! } ! private String normalizeBlockIndentation(ITextSelection selection, String selectedText) throws Throwable { ! String[] lines = selectedText.split("\\n"); ! if (lines.length < 2) { ! return selectedText; ! } ! String firstLine = doc.get(doc.getLineOffset(selection.getStartLine()), doc.getLineLength(selection.getStartLine())); String lineDelimiter = TextUtilities.getDefaultLineDelimiter(doc); ! String indentation = ""; ! int bodyIndent = 0; ! while (firstLine.startsWith(" ")) { ! indentation += " "; ! firstLine = firstLine.substring(1); ! bodyIndent += 1; ! } ! if (bodyIndent > 0) { ! FastStringBuffer selectedCode = new FastStringBuffer(); ! for (String line : lines) { ! if (line.startsWith(indentation)) { ! selectedCode.append(line.substring(bodyIndent) + lineDelimiter); ! } else { ! selectedCode.append(line + lineDelimiter); ! } ! } ! selectedText = selectedCode.toString(); ! } ! return selectedText; ! } ! public IClassDefAdapter getScopeClass() { ! return moduleAdapter.getScopeClass(getUserSelection()); ! } ! public IPythonNature getNature() { ! return nature; ! } ! public List<IClassDefAdapter> getScopeClassAndBases() { ! return moduleAdapter.getClassHierarchy(getScopeClass()); ! } ! public AbstractScopeNode<?> getScopeAdapter() { ! if (scopeAdapter == null) { ! scopeAdapter = moduleAdapter.getScopeAdapter(getUserSelection()); ! } ! return scopeAdapter; ! } ! public boolean isSelectionExtensionRequired() { ! return !(this.getUserSelection().getOffset() == this.getExtendedSelection().getOffset() && this.getUserSelection().getLength() == this ! .getExtendedSelection().getLength()); ! } public String getNewLineDelim() { Index: AbstractPythonRefactoring.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev.refactoring/src/org/python/pydev/refactoring/core/AbstractPythonRefactoring.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AbstractPythonRefactoring.java 20 Oct 2007 19:31:00 -0000 1.3 --- AbstractPythonRefactoring.java 27 Sep 2008 20:00:46 -0000 1.4 *************** *** 24,59 **** public abstract class AbstractPythonRefactoring extends Refactoring { ! protected RefactoringStatus status; ! protected Collection<IWizardPage> pages; ! protected RefactoringInfo info; ! public AbstractPythonRefactoring(RefactoringInfo info) { ! status = new RefactoringStatus(); ! pages = new ArrayList<IWizardPage>(); ! this.info = info; ! } ! @Override ! public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException { ! return status; ! } ! @Override ! public RefactoringStatus checkInitialConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException { ! return status; ! } ! @Override ! public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException { ! IChangeProcessor changeProcessor = new CompositeChangeProcessor(getName(), getChangeProcessors()); ! ! return changeProcessor.createChange(); ! } ! protected abstract List<IChangeProcessor> getChangeProcessors(); ! public Collection<IWizardPage> getPages() { ! return pages; ! } } --- 24,59 ---- public abstract class AbstractPythonRefactoring extends Refactoring { ! protected RefactoringStatus status; ! protected Collection<IWizardPage> pages; ! protected RefactoringInfo info; ! public AbstractPythonRefactoring(RefactoringInfo info) { ! status = new RefactoringStatus(); ! pages = new ArrayList<IWizardPage>(); ! this.info = info; ! } ! @Override ! public RefactoringStatus checkFinalConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException { ! return status; ! } ! @Override ! public RefactoringStatus checkInitialConditions(IProgressMonitor pm) throws CoreException, OperationCanceledException { ! return status; ! } ! @Override ! public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException { ! IChangeProcessor changeProcessor = new CompositeChangeProcessor(getName(), getChangeProcessors()); ! ! return changeProcessor.createChange(); ! } ! protected abstract List<IChangeProcessor> getChangeProcessors(); ! public Collection<IWizardPage> getPages() { ! return pages; ! } } |