Various kinds of string-representing operators have an attached name-completion utility invoked with these macros.
basically looks for right-end-extensions of the string, and is usually much faster than full name-completion. It's actually a little more complex than prefix matching: if the string we're trying to complete contains no upper case letters or `_' characters, then matches are considered any strings whose lower-casing and `_'-deletion has the pattern string as prefix. | |
  | |
is like |
|
  | |
If there is a cache associated with the utility for the relevant kind of string-representing term, this will refresh it. |
In every form of name completion, if there is no match, the sample is deleted (but saved on the stack).
If there is one match, it replaces the sample.
If there are a few matches, an option sequence replaces the sample.
If there are lots of matches, a separate window of insertion buttons is created as scratch; they are still presented as an option sequence to facilitate narrowing the list.
If too many match, the user is warned and given an option to list them anyway.
Currently, here are the kinds of name completion implemented.
ML name completion, which searches a cache of global ML names, is invoked on instances of [text].
Object name completion, which searches all object names of the library, is invoked on instances of:
[ob name] and it variants,`[mltok]` , since often tokens are used in ML to refer to lib objects,
and other miscellaneous forms usually referring to objects:
=[obj].[name] ob:[ob name] *[object]* [ob].[name]
Primitive edit cmd name completion is invoked on instances of *[primitive cmd name]*.
Internal defined edit cmd name completion is invoked on instances of [[internal macro name]].
File Name completion, which is limited to