#7915: Improve TAB-completion in Macaulay2
----------------------------------+-----------------------------------------
Reporter: novoselt | Owner: was
Type: defect | Status: needs_review
Priority: major | Milestone:
Component: interfaces | Keywords: Macaulay2, interface,
TAB-completion
Author: Andrey Novoseltsev | Upstream: N/A
Reviewer: | Merged:
Work_issues: |
----------------------------------+-----------------------------------------
Description changed by novoselt:
Old description:
> There are the following problems with the current TAB-completion in
> Macaulay2:
> * it is slow and there is a special function which creates the list of
> commands and stores it in file for future use;
> * this function prints a message which is not visible in the notebook
> and it looks like the notebook stopped responding;
> * new objects defined by user or introduced by loaded packages do not
> appear in this static list;
> * TAB-completion for Macaulay2 objects shows the same list of more than
> 1000 names as for Macaulay2 sessions, most of the stuff in this list
> cannot be applied to the given object.
>
> The attached patch changes trait_names functions so that
> * functions for building command lists execute reasonably fast for
> interaction (0.2-0.6 second on my machine);
> * both lists for an interpreter session and for objects in it are
> computed dynamically on each call and take into account loaded and
> created names;
> * only methods which can take an object as the first argument are shown
> for objects;
> * execution time for "sage -t --optional macaulay2.py" dropped from 3
> minutes (which was really annoying me for the last 5 days) to 30 seconds.
>
> New problem (doesn't need much attention, I think):
> * shortcuts like "gens" for "generators" are not displayed in both lists
> because of the way they are defined in Macaulay2, this is likely to be
> fixed in the next release (of Macaulay2).
>
> Remaining problem (to be addressed later):
> * Macaulay2 convention is to put "the important argument" last, so a
> useful function "f" will not be displayed in TAB-completion for "x" if it
> should be called like "f(7, x)" in Macaulay2. Since the default call
> corresponding to Sage command "x.f(7)" is "f(x, 7)", this is actually
> correct and "f" should not be listed. However, it may be useful to have
> an option to translate all calls of the form "x.f(...)" in Sage to
> "f(..., x)" in Macaulay2.
>
> Patches from #7897 are a prerequisite for this one.
New description:
There are the following problems with the current TAB-completion in
Macaulay2:
* it is slow and there is a special function which creates the list of
commands and stores it in file for future use;
* this function prints a message which is not visible in the notebook and
it looks like the notebook stopped responding;
* new objects defined by user or introduced by loaded packages do not
appear in this static list;
* TAB-completion for Macaulay2 objects shows the same list of more than
1000 names as for Macaulay2 sessions, most of the stuff in this list
cannot be applied to the given object.
The attached patch changes trait_names functions so that
* functions for building command lists execute reasonably fast for
interaction (0.2-0.6 second on my machine);
* both lists for an interpreter session and for objects in it are
computed dynamically on each call and take into account loaded and created
names;
* only methods which can take an object as the first argument are shown
for objects;
* execution time for "sage -t --optional macaulay2.py" dropped from 3
minutes (which was really annoying me for the last 5 days) to 30 seconds.
New problem (doesn't need much attention, I think):
* shortcuts like "gens" for "generators" are not displayed in both lists
because of the way they are defined in Macaulay2, this is likely to be
fixed in the next release (of Macaulay2).
Remaining problem (to be addressed later):
* Macaulay2 convention is to put "the important argument" last, so a
useful function "f" will not be displayed in TAB-completion for "x" if it
should be called like "f(7, x)" in Macaulay2. Since the default call
corresponding to Sage command "x.f(7)" is "f(x, 7)", this is actually
correct and "f" should not be listed. However, it may be useful to have an
option to translate all calls of the form "x.f(...)" in Sage to "f(...,
x)" in Macaulay2.
Patches from #7897 are a prerequisite for this one.
Patch from #5467 is independent, but relevant and trivial, so please try
to review it too if you are interested in this one.
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7915#comment:3>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.