[Pydev-cvs] org.python.pydev/src_completions/org/python/pydev/editor/codecompletion/revisited Proj
Brought to you by:
fabioz
Update of /cvsroot/pydev/org.python.pydev/src_completions/org/python/pydev/editor/codecompletion/revisited In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1588/src_completions/org/python/pydev/editor/codecompletion/revisited Modified Files: ProjectModulesManager.java AbstractASTManager.java ModulesManager.java SystemModulesManager.java Log Message: Handling __bootstrap__ module (loads compiled module instead of source module). Index: SystemModulesManager.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src_completions/org/python/pydev/editor/codecompletion/revisited/SystemModulesManager.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** SystemModulesManager.java 2 Nov 2007 13:26:29 -0000 1.8 --- SystemModulesManager.java 5 May 2008 01:31:22 -0000 1.9 *************** *** 13,20 **** --- 13,22 ---- import org.python.pydev.core.IInterpreterManager; import org.python.pydev.core.IModule; + import org.python.pydev.core.IModulesManager; import org.python.pydev.core.IPythonNature; import org.python.pydev.core.ISystemModulesManager; import org.python.pydev.core.IToken; import org.python.pydev.core.ModulesKey; + import org.python.pydev.core.Tuple; import org.python.pydev.core.cache.LRUCache; import org.python.pydev.editor.codecompletion.revisited.modules.AbstractModule; *************** *** 182,186 **** } ! if(n instanceof EmptyModule || n instanceof SourceModule){ //it is actually found as a source module, so, we have to 'coerce' it to a compiled module n = new CompiledModule(name, IToken.TYPE_BUILTIN, nature.getAstManager()); doAddSingleModule(new ModulesKey(n.getName(), null), n); --- 184,189 ---- } ! if(n instanceof EmptyModule || n instanceof SourceModule){ ! //it is actually found as a source module, so, we have to 'coerce' it to a compiled module n = new CompiledModule(name, IToken.TYPE_BUILTIN, nature.getAstManager()); doAddSingleModule(new ModulesKey(n.getName(), null), n); *************** *** 194,198 **** n = cache.getObj(keyForCacheAccess, this); ! if(n == null || n instanceof EmptyModule || n instanceof SourceModule){ //still not created or not defined as compiled module (as it should be) n = new CompiledModule(name, IToken.TYPE_BUILTIN, nature.getAstManager()); doAddSingleModule(new ModulesKey(n.getName(), null), n); --- 197,202 ---- n = cache.getObj(keyForCacheAccess, this); ! if(n == null || n instanceof EmptyModule || n instanceof SourceModule){ ! //still not created or not defined as compiled module (as it should be) n = new CompiledModule(name, IToken.TYPE_BUILTIN, nature.getAstManager()); doAddSingleModule(new ModulesKey(n.getName(), null), n); *************** *** 249,252 **** --- 253,264 ---- + public Tuple<IModule, IModulesManager> getModuleAndRelatedModulesManager(String name, IPythonNature nature, + boolean checkSystemManager, boolean dontSearchInit) { + IModule module = this.getModule(name, nature, checkSystemManager, dontSearchInit); + if(module != null){ + return new Tuple<IModule, IModulesManager>(module, this); + } + return null; + } Index: ProjectModulesManager.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src_completions/org/python/pydev/editor/codecompletion/revisited/ProjectModulesManager.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** ProjectModulesManager.java 13 Apr 2008 16:55:23 -0000 1.14 --- ProjectModulesManager.java 5 May 2008 01:31:21 -0000 1.15 *************** *** 35,38 **** --- 35,39 ---- import org.python.pydev.core.ModulesKeyForZip; import org.python.pydev.core.REF; + import org.python.pydev.core.Tuple; import org.python.pydev.editor.codecompletion.revisited.javaintegration.JavaProjectModulesManagerCreator; import org.python.pydev.editor.codecompletion.revisited.javaintegration.ModulesKeyForJava; *************** *** 246,249 **** --- 247,264 ---- */ public IModule getModule(String name, IPythonNature nature, boolean checkSystemManager, boolean dontSearchInit) { + Tuple<IModule, IModulesManager> ret = getModuleAndRelatedModulesManager(name, nature, checkSystemManager, dontSearchInit); + if(ret != null){ + return ret.o1; + } + return null; + } + + + /** + * @return a tuple with the IModule requested and the IModulesManager that contained that module. + */ + public Tuple<IModule, IModulesManager> getModuleAndRelatedModulesManager(String name, IPythonNature nature, + boolean checkSystemManager, boolean dontSearchInit) { + IModule module = null; *************** *** 257,261 **** System.out.println("Trying to get:"+name+" - "+" returned builtin:"+module+" - "+m.getClass()); } ! return module; } } --- 272,276 ---- System.out.println("Trying to get:"+name+" - "+" returned builtin:"+module+" - "+m.getClass()); } ! return new Tuple<IModule, IModulesManager>(module, m); } } *************** *** 279,283 **** System.out.println("Trying to get:"+name+" - "+" returned:"+module+" - "+m.getClass()); } ! return module; } } --- 294,298 ---- System.out.println("Trying to get:"+name+" - "+" returned:"+module+" - "+m.getClass()); } ! return new Tuple<IModule, IModulesManager>(module, m); } } *************** *** 288,291 **** --- 303,309 ---- } + /** + * Only searches the modules contained in the direct modules manager. + */ public IModule getModuleInDirectManager(String name, IPythonNature nature, boolean dontSearchInit) { return super.getModule(name, nature, dontSearchInit); Index: ModulesManager.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src_completions/org/python/pydev/editor/codecompletion/revisited/ModulesManager.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** ModulesManager.java 11 Nov 2007 08:47:49 -0000 1.21 --- ModulesManager.java 5 May 2008 01:31:21 -0000 1.22 *************** *** 516,521 **** --- 516,531 ---- throw new RuntimeException("Should not be an empty module anymore!"); } + if(n instanceof SourceModule){ + SourceModule sourceModule = (SourceModule) n; + //now, here's a catch... it may be a bootstrap module... + if(sourceModule.isBootstrapModule()){ + //if it's a bootstrap module, we must replace it for the related compiled module. + n = new CompiledModule(name, IToken.TYPE_BUILTIN, nature.getAstManager()); + } + } return n; } + + private ModulesKey createModulesKey(String name, File f) { Index: AbstractASTManager.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src_completions/org/python/pydev/editor/codecompletion/revisited/AbstractASTManager.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** AbstractASTManager.java 2 May 2008 13:42:00 -0000 1.14 --- AbstractASTManager.java 5 May 2008 01:31:21 -0000 1.15 *************** *** 689,692 **** --- 689,696 ---- */ protected IToken[] searchOnSameLevelMods(Set<IToken> initial, ICompletionState state) throws CompletionRecursionException { + IToken[] ret = null; + Tuple<IModule, IModulesManager> modUsed = null; + String actTokUsed = null; + for (IToken token : initial) { //ok, maybe it was from the set that is in the same level as this one (this will only happen if we are on an __init__ module) *************** *** 695,699 **** if(state.getActivationToken().startsWith(rep)){ String absoluteImport = token.getAsAbsoluteImport(); ! IModule sameLevelMod = getModule(absoluteImport, state.getNature(), true); if(sameLevelMod == null){ return null; --- 699,709 ---- if(state.getActivationToken().startsWith(rep)){ String absoluteImport = token.getAsAbsoluteImport(); ! modUsed = modulesManager.getModuleAndRelatedModulesManager(absoluteImport, state.getNature(), true, false); ! ! IModule sameLevelMod = null; ! if(modUsed != null){ ! sameLevelMod = modUsed.o1; ! } ! if(sameLevelMod == null){ return null; *************** *** 702,719 **** String qualifier = state.getActivationToken().substring(rep.length()); - ICompletionState copy = state.getCopy(); - copy.setBuiltinsGotten (true); //we don't want builtins... ! if(state.getActivationToken().equals(rep)){ ! copy.setActivationToken (""); ! return getCompletionsForModule(sameLevelMod, copy); ! } else if(qualifier.startsWith(".")){ ! copy.setActivationToken (qualifier.substring(1)); ! return getCompletionsForModule(sameLevelMod, copy); } } } ! return null; } --- 712,732 ---- String qualifier = state.getActivationToken().substring(rep.length()); ! if(state.getActivationToken().equals(rep)){ ! actTokUsed = ""; } else if(qualifier.startsWith(".")){ ! actTokUsed = qualifier.substring(1); } + + if(actTokUsed != null){ + ICompletionState copy = state.getCopyWithActTok(actTokUsed); + copy.setBuiltinsGotten (true); //we don't want builtins... + ret = getCompletionsForModule(sameLevelMod, copy); + break; + } } } ! ! return ret; } *************** *** 721,725 **** * @see ICodeCompletionASTManager#getGlobalCompletions */ ! public List<IToken> getGlobalCompletions(IToken[] globalTokens, IToken[] importedModules, IToken[] wildImportedModules, ICompletionState state, IModule current) { if(PyCodeCompletion.DEBUG_CODE_COMPLETION){ Log.toLogFile(this, "getGlobalCompletions"); --- 734,739 ---- * @see ICodeCompletionASTManager#getGlobalCompletions */ ! public List<IToken> getGlobalCompletions(IToken[] globalTokens, IToken[] importedModules, IToken[] wildImportedModules, ! ICompletionState state, IModule current) { if(PyCodeCompletion.DEBUG_CODE_COMPLETION){ Log.toLogFile(this, "getGlobalCompletions"); *************** *** 990,994 **** * @throws CompletionRecursionException */ ! public Tuple3<IModule, String, IToken> findOnImportedMods( IToken[] importedModules, ICompletionState state, String currentModuleName) throws CompletionRecursionException { FullRepIterable iterable = new FullRepIterable(state.getActivationToken(), true); for(String tok : iterable){ --- 1004,1010 ---- * @throws CompletionRecursionException */ ! public Tuple3<IModule, String, IToken> findOnImportedMods( IToken[] importedModules, ICompletionState state, ! String currentModuleName) throws CompletionRecursionException { ! FullRepIterable iterable = new FullRepIterable(state.getActivationToken(), true); for(String tok : iterable){ |