Index: uppsrc/ide/ide.h =================================================================== --- uppsrc/ide/ide.h (revision 5143) +++ uppsrc/ide/ide.h (working copy) @@ -469,6 +469,7 @@ virtual void PutVerbose(const char *s); virtual const Workspace& IdeWorkspace() const; + virtual void AddPackage(const String& p); virtual bool IdeIsBuilding() const; virtual String IdeGetOneFile() const; virtual int IdeConsoleExecute(const char *cmdline, Stream *out = NULL, const char *envptr = NULL, bool quiet = false); Index: uppsrc/ide/Assist.cpp =================================================================== --- uppsrc/ide/Assist.cpp (revision 5143) +++ uppsrc/ide/Assist.cpp (working copy) @@ -623,6 +623,15 @@ Assist(); IgnoreMouseUp(); return; + } else { + String pkg = include_path.Left(include_path.GetCount()-1); + Vector nests = SplitDirs(GetVar("UPP")); + for(int i = 0; i < nests.GetCount(); i++){ + if(FileExists(nests[i]+"/"+include_path+GetFileName(pkg)+".upp")){ + AddIdePackage(pkg); + break; + } + } } } else { Index: uppsrc/ide/Core/Core.cpp =================================================================== --- uppsrc/ide/Core/Core.cpp (revision 5143) +++ uppsrc/ide/Core/Core.cpp (working copy) @@ -97,6 +97,12 @@ return x; } +void AddIdePackage(const String& p) +{ + ASSERT(the_ide); + the_ide->AddPackage(p); +} + String IdeContext::GetDefaultMethod() { return LoadFile(ConfigFile("default_method")); Index: uppsrc/ide/Core/Core.h =================================================================== --- uppsrc/ide/Core/Core.h (revision 5143) +++ uppsrc/ide/Core/Core.h (working copy) @@ -41,6 +41,7 @@ virtual void PutVerbose(const char *s) = 0; virtual const Workspace& IdeWorkspace() const = 0; + virtual void AddPackage(const String& p) = 0; virtual bool IdeIsBuilding() const = 0; virtual String IdeGetOneFile() const = 0; virtual int IdeConsoleExecute(const char *cmdline, Stream *out = NULL, const char *envptr = NULL, bool quiet = false) = 0; @@ -91,6 +92,7 @@ void PutVerbose(const char *s); const Workspace& GetIdeWorkspace(); +void AddIdePackage(const String& p); bool IdeIsBuilding(); String IdeGetOneFile(); int IdeConsoleExecute(const char *cmdline, Stream *out = NULL, const char *envptr = NULL, bool quiet = false); Index: uppsrc/ide/ide.cpp =================================================================== --- uppsrc/ide/ide.cpp (revision 5143) +++ uppsrc/ide/ide.cpp (working copy) @@ -752,6 +752,18 @@ return wspc; } +void Ide::AddPackage(const String& p) +{ + const Workspace& wspc = IdeWorkspace(); + for(int i = 0; i < wspc.GetCount(); i++){ + if(wspc[i] == p) + return; + } + OptItem& m = actual.uses.Add(); + m.text = p; + SaveLoadPackage(); +} + int Ide::GetPackageIndex() { const Workspace& wspc = IdeWorkspace();