TEditInputExtras.mesa
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Michael Plass, October 23, 1987 4:13:25 pm PDT
DIRECTORY ViewerClasses USING [Viewer];
TEditInputExtras: CEDAR DEFINITIONS
~ BEGIN
CommandClosure: TYPE ~ RECORD [name: ATOM, proc: CommandClosureProc, data: REF ANY];
CommandClosureProc: TYPE ~ PROC [data: REF ANY, viewer: ViewerClasses.Viewer ← NIL, param: REFNIL] RETURNS [recordAtom: BOOLTRUE, quit: BOOLFALSE];
A CommandClosure is like a CommandProc, but has a data field (typically immutable) so that the same procedure may implement a number of distinct commands, and an optional param for encapsulating parameters. Refer to impl for details of param handling.
RegisterClosure: PROC [commandClosure: CommandClosure, before: BOOLTRUE];
Registers a command implemented by a CommandClosure
UnRegisterClosure: PROC [name: ATOM, proc: CommandClosureProc, match: PROC [data: REF] RETURNS [BOOL] ← NIL];
Enumerates the registered CommandClosures that have the given name and proc, and unregisters those for which match returns TRUE; match=NIL is equivalent to match={RETURN [TRUE]};
GetCommandNames: PROC RETURNS [LIST OF ATOM];
Returns a list of the names of all registered commands.
END.