123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % Commands.SL - Miscellaneous NMODE commands
- %
- % Author: Alan Snyder
- % Hewlett-Packard/CRC
- % Date: 24 August 1982
- % Revised: 3 December 1982
- %
- % 3-Dec-82 Alan Snyder
- % Changed Insert-Self-Command to handle control- and meta- characters.
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- (CompileTime (load objects extended-char fast-int))
- % External variables used:
- (fluid '(nmode-current-buffer nmode-command-argument nmode-current-window
- nmode-command-argument-given nmode-current-command
- nmode-terminal nmode-allow-refresh-breakout
- Text-Mode
- ))
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- (de insert-self-command ()
- (if (FixP nmode-current-command)
- (let ((ch (x-base nmode-current-command)))
- (if (x-control? nmode-current-command)
- (let ((nch (char-upcase ch)))
- (if (and (>= nch #/@) (<= nch #/_))
- (setf ch (^ nch #/@))
- )))
- (for (from i 1 nmode-command-argument)
- (do (insert-character ch)))
- )
- % otherwise
- (Ding)
- ))
- (de insert-next-character-command ()
- (nmode-append-separated-prompt "C-Q")
- (let ((ch (x-base (input-direct-terminal-character))))
- (nmode-complete-prompt (string-concat " " (x-char-name ch)))
- (for (from i 1 nmode-command-argument)
- (do (insert-character ch)))))
- (de return-command ()
- % Insert an EOL, unless we are at the end of thee current line and the
- % next line is empty. Repeat as directed.
- (for (from i 1 nmode-command-argument)
- (do (cond ((and (at-line-end?) (not (at-buffer-end?)))
- (move-to-next-line)
- (cond ((not (current-line-empty?))
- (insert-eol)
- (move-to-previous-line)
- )))
- (t (insert-eol))))))
- (de select-buffer-command ()
- (buffer-select (prompt-for-selectable-buffer)))
- (de prompt-for-selectable-buffer ()
- (let ((default-b (=> nmode-current-buffer previous-buffer)))
- (if (and default-b (not (buffer-is-selectable? default-b)))
- (setf default-b NIL))
- (prompt-for-buffer "Select Buffer: " default-b)))
- (de kill-buffer-command ()
- (let ((b (prompt-for-existing-buffer "Kill buffer: " nmode-current-buffer)))
- (if (or (not (=> b modified?))
- (YesP "Kill unsaved buffer?"))
- (buffer-kill-and-detach b))))
- (de insert-buffer-command ()
- (let ((b (prompt-for-existing-buffer "Insert Buffer:" nmode-current-buffer)))
- (insert-buffer-into-buffer b nmode-current-buffer)
- ))
- (de select-previous-buffer-command ()
- (let ((old-buffer nmode-current-buffer))
- (buffer-select-previous nmode-current-buffer)
- (if (eq old-buffer nmode-current-buffer) (Ding)) % nothing visible happened
- ))
- (de visit-in-other-window-command ()
- (nmode-2-windows)
- (selectq (char-upcase (input-base-character))
- (#/B (let ((b (prompt-for-selectable-buffer)))
- (window-select-buffer (nmode-other-window) b)))
- (#/F (find-file-in-window
- (nmode-other-window)
- (prompt-for-file-name "Find file: " NIL)
- ))
- (t (Ding))
- ))
- (de nmode-refresh-command ()
- (if nmode-command-argument-given
- (let* ((arg nmode-command-argument)
- (w nmode-current-window)
- (height (=> w height))
- (line (current-line-pos))
- )
- (if (>= arg 0)
- (=> w set-buffer-top (- line arg))
- (=> w set-buffer-top (- (- line height) arg)))
- (nmode-refresh)
- )
- % Otherwise
- (=> nmode-current-window readjust-window)
- (nmode-full-refresh)
- ))
- (de open-line-command ()
- (for (from i 1 nmode-command-argument)
- (do (insert-eol)
- (move-backward)
- )))
- (de Ding ()
- (=> nmode-terminal ring-bell))
- (de buffer-not-modified-command ()
- (=> nmode-current-buffer set-modified? NIL)
- )
- (de set-mark-command ()
- (cond (nmode-command-argument-given
- (buffer-set-position (current-mark))
- (previous-mark)
- )
- (t
- (set-mark-from-point)
- )))
- (de mark-beginning-command ()
- (let ((old-pos (buffer-get-position)))
- (move-to-buffer-start)
- (set-mark-from-point)
- (buffer-set-position old-pos)
- ))
- (de mark-end-command ()
- (let ((old-pos (buffer-get-position)))
- (move-to-buffer-end)
- (set-mark-from-point)
- (buffer-set-position old-pos)
- ))
- (de transpose-characters-command ()
- (cond ((or (at-line-start?) (< (current-line-length) 2))
- (Ding)
- )
- (t
- (if (at-line-end?) % We are at the end of a non-empty line.
- (move-backward)
- )
- % We are in the middle of a line.
- (let ((ch (previous-character)))
- (delete-previous-character)
- (move-forward)
- (insert-character ch)
- )
- )))
- (de mark-word-command ()
- (let ((old-pos (buffer-get-position)))
- (move-forward-word-command)
- (set-mark-from-point)
- (buffer-set-position old-pos)
- ))
- (de mark-form-command ()
- (let ((old-pos (buffer-get-position)))
- (move-forward-form-command)
- (set-mark-from-point)
- (buffer-set-position old-pos)
- ))
- (de mark-whole-buffer-command ()
- (move-to-buffer-end)
- (set-mark-from-point)
- (move-to-buffer-start)
- )
- (de nmode-abort-command ()
- (throw 'abort NIL)
- )
- (de start-scripting-command ()
- (let ((b (prompt-for-buffer "Script Input to Buffer:" NIL)))
- (nmode-script-terminal-input b)
- ))
- (de stop-scripting-command ()
- (nmode-script-terminal-input nil)
- )
- (de execute-buffer-command ()
- (let ((b (prompt-for-buffer "Execute from Buffer:" NIL)))
- (setf nmode-allow-refresh-breakout nmode-command-argument-given)
- (nmode-execute-buffer b)
- ))
- (de execute-file-command ()
- (nmode-execute-file (prompt-for-file-name "Execute File:" NIL)))
- (de nmode-execute-file (fn)
- (let ((b (buffer-create-unselectable "FOO" Text-Mode)))
- (read-file-into-buffer b fn)
- (setf nmode-allow-refresh-breakout nmode-command-argument-given)
- (nmode-execute-buffer b)
- ))
- (de apropos-command ()
- (let ((s (prompt-for-string
- "Show commands whose names contain the string:"
- NIL
- )))
- (nmode-begin-typeout)
- (print-matching-dispatch s)
- (printf "-----")
- (nmode-end-typeout)
- ))
|