I'm developing a larger package which includes several subpackages. My problem is, that I can't introduce the symbols in the subpackages to the autocompletion by loading the main package, but by calling a subpackage.
Let's explain this with an example: I have a main package, called
main which loads the subpackages
sub3. The directory should look like
main ├── Kernel │ └── init.m ├── main.m ├── sub1.m ├── sub2.m └── sub3.m
main loads all three subpackages in its
BeginPackage statement, while the package
sub3. The respective
init.m looks like:
Get["main`sub3`"] Get["main`sub2`"] Get["main`sub1`"] Get["main`main`"]
The big problem I have is, that by calling
I can see all symbols in
main, but not those in the subpackages (though, they are usable).
I can see all symbols in the subpackages without any problems but can't load
main anymore, because then some definitions are redone, which leads to error messages about protected symbols. The most interesting thing is, that the
$ContextPath includes the subpackages in both cases.
Is there a nice possibility to get the symbols of the subpackages into the autocompletion?
Update: By prepending the path of a subpackage to the
$ContextPath, I can load the corresponding symbols of that package into the autocompletion.
$ContextPath = Prepend[$ContextPath, "main`sub1`"]
Unfortunately, this is not very nice and yields duplicates in the
Is there a better, automatic way to achieve this?