1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % Command-Input.SL - NMODE Command Input Routines
- %
- % Author: Alan Snyder
- % Hewlett-Packard/CRC
- % Date: 27 October 1982
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- (CompileTime (load extended-char fast-int))
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % Command Prefix Character Functions:
- %
- % A command prefix character function must be tagged with the property
- % 'COMMAND-PREFIX. It should also define the property 'COMMAND-PREFIX-NAME
- % to be a string that will be used to print the command name of commands
- % that include a prefix character that is mapped to that function. (The
- % function DEFINE-COMMAND-PREFIX is used to set these properties.) The
- % function itself should return a command (see dispatch.sl for a description).
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- (de define-command-prefix (function-name name-string)
- (put function-name 'command-prefix T)
- (put function-name 'command-prefix-name name-string)
- )
- (de prefix-name (ch)
- % Return the string to be used in printing a command with this prefix char.
- (let ((func (dispatch-table-lookup ch)))
- (or (and func (get func 'command-prefix-name))
- (string-concat (x-char-name ch) " ")
- )))
- % Here we define some prefix command functions:
- (define-command-prefix 'c-x-prefix "C-X ")
- (define-command-prefix 'Esc-prefix "Esc-")
- (define-command-prefix 'Lisp-prefix "Lisp-")
- (define-command-prefix 'm-x-prefix "M-X ")
- (de c-x-prefix ()
- (nmode-append-separated-prompt "C-X ")
- (let ((ch (input-terminal-character)))
- (nmode-complete-prompt (x-char-name ch))
- (list (x-char C-X) ch)
- ))
- (de Esc-prefix ()
- (nmode-append-separated-prompt "Esc-")
- (let ((ch (input-extended-character)))
- (nmode-complete-prompt (x-char-name ch))
- (list (x-char ESC) ch)
- ))
- (de Lisp-prefix ()
- (nmode-append-separated-prompt "Lisp-")
- (let ((ch (input-terminal-character)))
- (nmode-complete-prompt (x-char-name ch))
- (list (x-char C-!]) ch)
- ))
- (de m-x-prefix ()
- (list (x-char M-X) (prompt-for-extended-command "Extended Command:")))
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % Command Input Functions:
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- (de input-base-character ()
- (X-Base (input-terminal-character))
- )
- (de input-command ()
- % Return either a single (extended) character or a list containing a valid
- % prefix character plus its argument (character or string).
- (let* ((ch (input-extended-character))
- (func (dispatch-table-lookup ch))
- )
- (if (and func (get func 'command-prefix))
- (apply func ())
- ch
- )))
|