pcs/edwin/allcoms3.scm

347 lines
11 KiB
Scheme
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;;
;;; 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)))