4.4.2 Object Method Completion and Class Ambiguity

An object method is not uniquely determined without the object’s class. Since the class is almost always omitted in the calling source (as required to obtain the true benefits of object-based programming), IDLWAVE considers all available methods in all classes as possible method name completions. The combined list of keywords of the current method in all known classes which contain that method will be considered for keyword completion. In the *Completions* buffer, the matching classes will be shown next to each item (see option idlwave-completion-show-classes). As a special case, the class of an object called ‘self’ is always taken to be the class of the current routine, when in an IDLWAVE buffer. All inherits classes are considered as well.

You can also call idlwave-complete with a prefix arg: C-u M-TAB. IDLWAVE will then prompt you for the class in order to narrow down the number of possible completions. The variable idlwave-query-class can be configured to make such prompting the default for all methods (not recommended), or selectively for very common methods for which the number of completing keywords would be too large (e.g., Init,SetProperty,GetProperty).

After you have specified the class for a particular statement (e.g., when completing the method), IDLWAVE can remember it for the rest of the editing session. Subsequent completions in the same statement (e.g., keywords) can then reuse this class information. This works by placing a text property on the method invocation operator ‘->’, after which the operator will be shown in a different face (bold by default). The variable idlwave-store-inquired-class can be used to turn it off or on.

User Option: idlwave-completion-show-classes (1)

Non-nil means show up to that many classes in *Completions* buffer when completing object methods and keywords.

User Option: idlwave-completion-fontify-classes (t)

Non-nil means fontify the classes in completions buffer.

User Option: idlwave-query-class (nil)

Association list governing query for object classes during completion.

User Option: idlwave-store-inquired-class (t)

Non-nil means store class of a method call as text property on ‘->’.

User Option: idlwave-class-arrow-face

Face to highlight object operator arrows ‘->’ which carry a saved class text property.