11.2.2 The Command-Defining Macro

The define-editor-command macro, automatically generated by the define-application-frame code previously, is used to define a command for the editor application. It is just like define-command , except that you don't need to specify editor-command-table as the command table in which to define the command. define-editor-command will automatically use editor-command-table .

Through the appropriate use of the options to define-editor-command (see define-command for details), you can provide the command via any number of the previously mentioned interaction styles. For example, you could install the command in the editor application's menu, as well as specifying a single keystroke command accelerator character for it.

The following example defines a command whose command name is com-save-file . The com-save-file command will appear in the application's command menu as Save File . (The command-menu name is derived from the command name in the same way as the command-line name.) The single keystroke CONTROL-s is also defined to invoke the command.

  (com-save-file :menu t                                 
                 :keystroke #\c-\s) () ...) 

Here, a command line name of Save File is associated with the com-save-file command. The user can then type Save File to the application's interaction pane to invoke the command.

  (com-save-file :name "Save File") () ...)  

Since the command processor works by establishing an input context of presentation type command and executing the resulting input, any displayed presentation can invoke a command, so long as there is a translator defined that translates from the presentation type of the presentation to the presentation type command . In this way, you can associate a command with a pointer gesture when it is applied to a displayed presentation. (Chapter 8, Presentation Translators in CLIM for details.)


Arguments: name (from-type command-name command-table &key (:gesture ':select ) :tester :documentation :pointer-documentation (:menu t ) :priority (:echo t )) arglist &body body

Summary: Defines a presentation translator that translates a displayed presentation into a command.

CommonLisp Interface Manager 2.0 User's Guide - 30 Jul 2004