pcs/edwin/allcoms3.scm

347 lines
11 KiB
Scheme
Raw Permalink Normal View History

2023-05-20 05:57:04 -04:00
;;;
;;; Copyright (c) 1985 Massachusetts Institute of Technology
;;;
;;; This material was developed by the Scheme project at the
;;; Massachusetts Institute of Technology, Department of
;;; Electrical Engineering and Computer Science. Permission to
;;; copy this software, to redistribute it, and to use it for any
;;; purpose is granted, subject to the following restrictions and
;;; understandings.
;;;
;;; 1. Any copy made of this software must include this copyright
;;; notice in full.
;;;
;;; 2. Users of this software agree to make their best efforts (a)
;;; to return to the MIT Scheme project any improvements or
;;; extensions that they make, so that these may be included in
;;; future releases; and (b) to inform MIT of noteworthy uses of
;;; this software.
;;;
;;; 3. All materials developed as a consequence of the use of
;;; this software shall duly acknowledge such use, in accordance
;;; with the usual standards of acknowledging credit in academic
;;; research.
;;;
;;; 4. MIT has made no warrantee or representation that the
;;; operation of this software will be error-free, and MIT is
;;; under no obligation to provide any services, by way of
;;; maintenance, update, or otherwise.
;;;
;;; 5. In conjunction with products arising from the use of this
;;; material, there shall be no use of the name of the
;;; Massachusetts Institute of Technology nor of any adaptation
;;; thereof in any advertising, promotional, or sales literature
;;; without prior written consent from MIT in each case.
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; Modified by Texas Instruments Inc 8/15/85
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;Lisp commands
(define *current-mode-scheme?* #!true)
(define ^r-lisp-insert-paren-command '()) ;3.02
(define paren-mark '()) ;3.02
(define (cached-paren-mark) paren-mark) ;3.02
(define (cache-paren-mark mark) (set! paren-mark mark)) ;3.02
(define-initial-command-key ("^R Lisp Insert Paren" (argument 1))
"Insert close paren, showing matching parens"
( ;;;;(
(define-initial-key #\) procedure)
(set! ^r-lisp-insert-paren-command procedure) ;3.02
)
(insert-chars (current-command-char) argument (current-point))
(if *current-mode-scheme?*
(if (not (char-ready? buffer-screen))
(let ((mark (if (cached-paren-mark) ;3.02
(backward-sexp:top (cached-paren-mark) ;3.02
(group-start (current-point))
1)
(backward-one-list (current-point)
(group-start (current-point))))))
(if mark
(let ((string (line-string (mark-line mark))))
(cache-paren-mark mark) ;3.02
(set-temp-message-status)
(set-screen-cursor! typein-screen 0 0)
(%substring-display string (mark-position mark)
(string-length string) 0 typein-screen)
(if (window-mark-visible? (current-window) mark)
(let ((old-point (current-point)))
(set-current-point! mark)
(with-reverse-attributes)
(set-current-point! old-point))))
(beep))))))
;;;(define %%temp (lambda () (with-reverse-attributes)))
;;;
;;;
(define-initial-command-key ("^R Forward Sexp" (argument 1))
"Move forward one sexp"
(
(define-initial-key (list meta-char (integer->char 6)) procedure) ;;; M C-F
)
(move-thing forward-sexp argument))
(define-initial-command-key ("^R Backward Sexp" (argument 1))
"Move backward one sexp"
(
(define-initial-key (list meta-char (integer->char 2)) procedure) ;;; M C-B
)
(move-thing backward-sexp argument))
(define-initial-command-key ("^R Mark Sexp" (argument 1))
"Set mark one or more sexp from point."
(
(define-initial-key (list meta-char alt-char (integer->char 3)) procedure)
;;; C-M-@
)
(mark-thing forward-sexp argument))
(define-initial-command-key ("^R Kill Sexp" (argument 1))
"Kill one or more sexp forward"
(
(define-initial-key (list meta-char (integer->char 11)) procedure) ;;; M C-K
)
(kill-thing forward-sexp argument))
;;;(define-initial-command-key ("^R Backward Kill sexp" (argument 1))
;;; "Kill one or more words backwards"
;;;(
;;; (define-initial-key (list ctrl-z-char #\backspace) procedure) ;;; C-Z backsp
;;;)
;;; (kill-thing backward-sexp argument))
(define-initial-command-key ("^R Forward List"(argument 1))
"Move forward over one list"
(
(define-initial-key (list meta-char (integer->char 14)) procedure) ;; M C-N
)
(move-thing forward-list argument))
(define-initial-command-key ("^R Backward List"(argument 1))
"Move backward over one list"
(
(define-initial-key (list meta-char (integer->char 16)) procedure) ;; M C-P
)
(move-thing backward-list argument))
(define-initial-command-key ("^R Forward Down List" (argument 1))
"Move down one level of list structure, forward."
(
(define-initial-key (list meta-char (integer->char 4)) procedure) ;;M C-D
)
(move-thing forward-down-list argument))
;;; (define-initial-command-key ("^R Backward Down List" (argument 1))
;;; "Move down one level of list structure, backward."
;;;(#!false)
;;; (move-thing backward-down-list argument))
;;;(define-initial-command-key ("^R Forward Up List" (argument 1))
;;; "Move up one level of list structure, forward."
;;;( ;;;(
;;; (define-initial-key (list ctrl-z-char #\) ) procedure) ;;; ( C-Z )
;;;)
;;; (move-thing forward-up-list argument))
(define-initial-command-key ("^R Backward Up List" (argument 1))
"Move up one level of list structure, backward."
(
(define-initial-key (list meta-char (integer->char 21)) procedure)
)
(move-thing backward-up-list argument))
;;; New commands added
;;; Some additional commands
;;; File commands
(define-initial-command-key ("^R Set File Read Only" argument)
" Make file read-only, or not."
(
(define-initial-key (list ctrl-x-char (integer->char 17)) procedure);;C-XC-Q
)
(setup-current-buffer-read-only! argument))
(define-initial-command-key ("^R Buffer Not Modified" argument)
"Pretend that buffer has not been Modified."
(
(define-initial-key (list meta-char #\~) procedure) ;; M-~
)
(buffer-not-modified! (current-buffer)))
;;; Line Commands
(define-initial-command-key ("^R Open Line" (argument 1))
"Insert a newline at point. Cursor remains at its position."
(
(define-initial-key (integer->char 15) procedure) ;;;; C-O
)
(let ((m* (mark-right-inserting (current-point))))
(insert-newlines argument )
(set-current-point! m*)))
(define-initial-command-key ("^R Set Goal Column" argument)
"Set (or flush) a permanent goal for vertical motion"
(
(define-initial-key (list ctrl-x-char (integer->char 14)) procedure)
) ;;; C-X C-N
(set! goal-column
(and (not argument)
(mark-column (current-point)))))
(define-initial-command-key ("^R Tab" (argument 1))
"Insert a tab character"
(
(define-initial-key #\tab procedure)
(define-initial-key (integer->char 9) procedure)
(define-initial-key (list meta-char #\tab) procedure)
)
(if *current-mode-scheme?*
(lisp-indent-line (current-point))
(insert-chars #\tab argument (current-point))))
(define-initial-command-key ("^R Indent Sexp" (argument 1))
"Indent a sexp"
(
(define-initial-key (list meta-char (integer->char 17)) procedure) ;;M C-Q
)
(if *current-mode-scheme?*
(lisp-indent-sexp (current-point))))
(define-initial-command-key ("^R Change Mode" argument)
" Change mode to Scheme"
(
(define-initial-key (list ctrl-x-char (integer->char 13)) procedure);;C-X C-M
)
(set! *current-mode-scheme?* (if *current-mode-scheme?* #!false #!true))
(window-modeline-event! '() 'mode-changed))
(define-initial-command-key ("^R Delete Horizontal Space" argument)
" delete all spaces and tab characters around point."
(
(define-initial-key (list meta-char #\\) procedure) ;;; M-\
)
(delete-horizontal-space))
(define-initial-command-key ("^R Just One Space" argument)
" Delete all spaces and tabs around point, leaving one Space."
(
(define-initial-key (list meta-char #\space) procedure) ;;; M-space
)
(delete-horizontal-space)
(insert-chars #\space 1 (current-point)))
(define lisp-indent 2)
(define-initial-command-key ("^R Indent New Line" argument)
"Insert new line then indent the second line"
(
(define-initial-key (integer->char 10) procedure) ;;; C-J
)
(insert-newlines 1)
(if *current-mode-scheme?*
(lisp-indent-line (current-point))
(insert-chars #\tab 1 (current-point))))
;;; compile command
(define-initial-command-key ("^R Compile Region" argument)
" Compile the region"
(
(define-initial-key (list meta-char (integer->char 26)) procedure);;M C-Z
)
(if *current-mode-scheme?*
(%compile-region
(make-region (current-point) (current-mark)))
(^r-bad-command argument)))
(define-initial-command-key ("^R Compile Buffer" argument)
" Compile the buffer"
(
(define-initial-key (list meta-char #\o) procedure) ;;; M-O
(define-initial-key (list alt-char (integer->char 24)) procedure) ;;;alt O
)
(if *current-mode-scheme?*
(%compile-region
(buffer-region (current-buffer)))
(^r-bad-command argument)))
(define-initial-command-key ("^R Compile Sexp" (argument 1))
" Compile the sexp"
(
(define-initial-key (list meta-char (integer->char 24)) procedure);;;M C-X
)
(if *current-mode-scheme?*
(begin
(mark-thing forward-sexp argument)
(%compile-region (current-region)))
(^r-bad-command argument)))
(define (%compile-region region)
(region->file region "edwin.tmp")
(restore-console-contents)
(make-pcs-status-visible)
(reset-typein-window)
(gc)
(load "edwin.tmp")
((fluid editor-continuation) 'OK))
(define-initial-command-key ("^R Toggle windows" argument)
" Display edwin window in upper half and scheme in the lower half"
(
(define-initial-key (list ctrl-x-char #\!) procedure) ;;; C-X !
)
(if *split-screen-mode?*
(begin
(set! *split-screen-mode?* #!false)
(move-editor-to-full)
(move-pcs-to-full)
(make-pcs-status-invisible)
(window-y-size-changed (current-window))
(update-display! (current-window))
(reset-modeline-window)
(reset-typein-window))
(begin
(set! *split-screen-mode?* #!true)
(move-editor-to-upper-half)
(move-pcs-window-lower)
(window-y-size-changed (current-window))
(update-display! (current-window))
(reset-modeline-window)
(reset-typein-window)
(restore-console-contents)
(make-pcs-status-visible)
(gc))))
(define edwin-reset-windows
(lambda ()
(save-console-contents)
(make-pcs-status-visible)
(move-pcs-to-full)
(%clear-window blank-screen)
(restore-console-contents)
(gc)))