- sum does not work. SMath tries evaluation first and fails (error message)
- int(4) does not work. SMath tries numeric integration, which is a disaster if units are involved. Int should not be handled by SMath.
This is because the plugins loading routines has changed. Seems that takeover was working because a lucky combination in the plug-ins loading order; when Andrey changed it the first time, SS-2311 appeared, because int/diff/sum algorithm of SpecialFunctions plugin where fully replaced by the ones by Maxima (since Maxima replaces these functions only when activated, in the other cases functions were not-existing).
Andrey changed it again in SS 0.98.6080, making impossible to override functions from SpecialFunctions plugin. He said that he might reintroduce this possibility, but only if it allows the use of this feature in a realiable way (in other words, should be possible for any plugin or for no one; since is not clear what should be the rule that SS should follows to choose when to use an algorithm from a plugin instead of another, as for now he has enforced the 2nd choiche - no overrides)
Here we have 2 possible ways:
- open a feature request, trying to found a reliable way to drive what algorithm to choose when a function is defined in more than a plugin;
- change the names of the functions used in maxima (e.g. MaximaInt(4) or whatever);
OK, I understand. This also means that probably diff() is never really handed over to Maxima, but this is not evident, because native diff is quite good with simple expressions.
Alternative functions
The most important issue is to get Maxima int(4) to work. This would save a whole Handbook section on transforming integrals to dimensionless variables.
In order to be independent of Andrey's design decisions, we should follow the second option and just provide capitalized functions (Diff, Sum, Int(4)) .
Probably it would be a good idea to have visibly distinct yet nice operator forms for these functions, including cross product and diff,
Function redirection
In parallel it would be good to have the opportunity to override native functions. This override must be controlled by canvas commands, not by per sheet or per SMath instance settings, Otherwise testing would become a nightmare,
Something like provider(function, [plugin]). If called, it redirects the function to a particular module. If called without second argument, the function is reset to native.
If called without any argument or empty argument), a complete reset would be done.
This solves the problems of
- decision for SMath which version to use
- visibility of that decision to the user.
MaximaTakeover() was a prototype for this option.
- same problem with cross product
This is a problem of preprocessing, I guess. I'll look if I can provide a workaround.
- Problems with file access (image files, display of images in image region works only once for a given file name.
I see the file is created but not loaded in the image region plugin; if I change the name another file is created and it is loaded (I guess is a bug in that plugin),
Good that you could reproduce that. I wasn't sure of clean test environment.
- Unterscore translations seem to be inconsistent but that does not harm.
Probably fixed (see attachment).
I'll try that, thank you.
There are some other issues with Maxima, which I am not happy with.
- one Maxima session per SMath instance instead of one per open document.
- Plugin being not self-contained. It should carry it's own Maxima installation in the plugin dir. Then it could be installed as any other plugin. One could considerably shrink the Maxima size by leaving out the GUI and the docs