[Pydev-cvs] org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited AbstractASTManag
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2006-09-18 00:50:35
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11678/src/org/python/pydev/editor/codecompletion/revisited Modified Files: AbstractASTManager.java Log Message: New relative import working when inside of other modules Index: AbstractASTManager.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/editor/codecompletion/revisited/AbstractASTManager.java,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** AbstractASTManager.java 18 Sep 2006 00:12:09 -0000 1.31 --- AbstractASTManager.java 18 Sep 2006 00:50:32 -0000 1.32 *************** *** 33,40 **** --- 33,43 ---- import org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule; import org.python.pydev.editor.codecompletion.revisited.modules.SourceModule; + import org.python.pydev.editor.codecompletion.revisited.modules.SourceToken; import org.python.pydev.editor.codecompletion.revisited.visitors.Definition; import org.python.pydev.parser.PyParser; import org.python.pydev.parser.jython.SimpleNode; import org.python.pydev.parser.jython.ast.FunctionDef; + import org.python.pydev.parser.jython.ast.ImportFrom; + import org.python.pydev.parser.jython.ast.NameTok; import org.python.pydev.parser.visitors.NodeUtils; *************** *** 868,874 **** protected Tuple<IModule, String> findOnImportedMods(IToken importedModule, String tok, IPythonNature nature, String activationToken, String currentModuleName) { ! ! Tuple<IModule, String> modTok = null; ! IModule mod = null; //check as relative with complete rep --- 871,918 ---- protected Tuple<IModule, String> findOnImportedMods(IToken importedModule, String tok, IPythonNature nature, String activationToken, String currentModuleName) { ! ! ! Tuple<IModule, String> modTok = null; ! IModule mod = null; ! ! //ok, check if it is a token for the new import ! if(importedModule instanceof SourceToken){ ! SourceToken token = (SourceToken) importedModule; ! ! if(token.isImportFrom()){ ! ImportFrom importFrom = (ImportFrom) token.getAst(); ! int level = importFrom.level; ! if(level > 0){ ! //ok, it must be treated as a relative import ! //ok, it is the import added on python 2.5 (from .. import xxx) ! ! String parentPackage = token.getParentPackage(); ! String[] moduleParts = FullRepIterable.dotSplit(parentPackage); ! String relative = null; ! if(moduleParts.length > level){ ! relative = FullRepIterable.joinParts(moduleParts, moduleParts.length-level); ! } ! ! String modName = ((NameTok)importFrom.module).id; ! if(modName.length() > 0){ ! //ok, we have to add the other part too, as we have more than the leading dots ! //from ..bar import ! relative += "."+modName; ! } ! relative += "."+tok; ! ! modTok = findModuleFromPath(relative, nature, false, null); ! mod = modTok.o1; ! if(checkValidity(currentModuleName, mod)){ ! Tuple<IModule, String> ret = fixTok(modTok, tok, activationToken); ! return ret; ! } ! //ok, it is 'forced' as relative import because it has a level, so, it MUST return here ! return null; ! } ! } ! } ! ! //check as relative with complete rep |