From 6809496d9643852dbbe93d5463ff6d7070607d92 Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Tue, 20 Oct 1992 20:03:14 +0000 Subject: [PATCH] Re-arrange some stuff to make the DOS load smaller. --- v7/src/edwin/calias.scm | 37 +++- v7/src/edwin/decls.scm | 5 +- v7/src/edwin/edwin.ldr | 61 ++++-- v7/src/edwin/edwin.pkg | 404 ++++++++++++++++++++++++---------------- v7/src/edwin/make.scm | 4 +- v7/src/edwin/modefs.scm | 35 +--- 6 files changed, 327 insertions(+), 219 deletions(-) diff --git a/v7/src/edwin/calias.scm b/v7/src/edwin/calias.scm index ef756a922..7e3c45810 100644 --- a/v7/src/edwin/calias.scm +++ b/v7/src/edwin/calias.scm @@ -1,6 +1,6 @@ ;;; -*-Scheme-*- ;;; -;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/calias.scm,v 1.13 1992/04/22 20:51:33 mhwu Exp $ +;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/calias.scm,v 1.14 1992/10/20 20:03:03 jinx Exp $ ;;; ;;; Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology ;;; @@ -219,4 +219,37 @@ (not (string-null? xkey))) (string->list xkey)) (else - (error "Not a key or list of keys" xkey)))) \ No newline at end of file + (error "Not a key or list of keys" xkey)))) + +;;;; Special keys (room for system-dependent extension) + +(define-structure (special-key (constructor %make-special-key) + (conc-name special-key/)) + (symbol false read-only true) + (bucky-bits false read-only true)) + +(define (special-key/name special-key) + ;; Notice this system dependence: + (define-integrable (%symbol-name symbol) + (system-pair-car symbol)) + + (string-append (bucky-bits->name (special-key/bucky-bits special-key)) + (%symbol-name (special-key/symbol special-key)))) + +(define (bucky-bits->name bits) + (let ((bucky-bit-map '#("M-" "C-" "S-" "H-" "T-"))) + (let loop ((n (fix:-1+ (vector-length bucky-bit-map))) + (bit (fix:lsh 1 (fix:-1+ (vector-length bucky-bit-map)))) + (name "")) + (cond ((fix:negative? n) name) + ((fix:zero? (fix:and bit bits)) + (loop (fix:-1+ n) (fix:lsh bit -1) name)) + (else + (loop (fix:-1+ n) + (fix:lsh bit -1) + (string-append (vector-ref bucky-bit-map n) name))))))) + +(define hook/make-special-key %make-special-key) + +(define (make-special-key name bits) + (hook/make-special-key name bits)) \ No newline at end of file diff --git a/v7/src/edwin/decls.scm b/v7/src/edwin/decls.scm index 9be0878b7..1104ef1e8 100644 --- a/v7/src/edwin/decls.scm +++ b/v7/src/edwin/decls.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Id: decls.scm,v 1.40 1992/09/23 23:05:59 jinx Exp $ +$Id: decls.scm,v 1.41 1992/10/20 20:02:54 jinx Exp $ Copyright (c) 1989-1992 Massachusetts Institute of Technology @@ -199,7 +199,8 @@ MIT in each case. |# "unix" "wincom" "winout" - "xcom"))) + "xcom" + "xmodef"))) (for-each sf-class '("comwin" "modwin" diff --git a/v7/src/edwin/edwin.ldr b/v7/src/edwin/edwin.ldr index 1e8f52ce1..4e273baa4 100644 --- a/v7/src/edwin/edwin.ldr +++ b/v7/src/edwin/edwin.ldr @@ -1,10 +1,42 @@ -;;; -*-Scheme-*- -;;; $Id: edwin.ldr,v 1.34 1992/09/23 23:06:49 jinx Exp $ +#| -*-Scheme-*- + +$Id: edwin.ldr,v 1.35 1992/10/20 20:02:23 jinx Exp $ + +Copyright (c) 1989-1992 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. |# + ;;; program to load package contents ;;; **** This program (unlike most .ldr files) is not generated by a program. (declare (usual-integrations)) - + (lambda (package/loader key-alist) (let ((to-avoid-list (if (file-exists? "edwin.bad") (fasload "edwin.bad") @@ -17,13 +49,13 @@ false) (begin (package/loader file env) true))) + (define (load-set files env) + (if (null? files) + true + (let ((val (load (car files) env))) + (boolean-and val (load-set (cdr files) env))))) (define (load-set-and-initialize! files env) - (define (load-all files) - (if (null? files) - true - (let ((val (load (car files) env))) - (boolean-and val (load-all (cdr files)))))) - (and (load-all files) + (and (load-set files env) ((access initialize-package! env)))) (define (lookup var) (cond ((assq var key-alist) => cdr) @@ -63,7 +95,8 @@ (load "undo" (->environment '(EDWIN UNDO))) (load "display" (->environment '(EDWIN DISPLAY-TYPE))) (load "screen" (->environment '(EDWIN SCREEN))) - (load "winren" (->environment '(EDWIN))) + (load "winren" environment) + (let ((environment (->environment '(EDWIN WINDOW)))) (load "window" environment) (load "utlwin" environment) @@ -75,12 +108,13 @@ (load "modwin" environment) (load "buffrm" environment) (load "edtfrm" environment)) + (load "calias" environment) (load-set-and-initialize! '("xterm") - (->environment '(EDWIN X-SCREEN))) + (->environment '(EDWIN SCREEN X-SCREEN))) (load-set-and-initialize! '("key") (->environment '(EDWIN KEYS))) - (let ((env (->environment '(EDWIN CONSOLE-SCREEN)))) + (let ((env (->environment '(EDWIN SCREEN CONSOLE-SCREEN)))) (load-set-and-initialize! '("termcap" "tterm") env) (if (eq? (lookup 'os-type) 'dos) (begin @@ -93,7 +127,6 @@ (load "curren" environment) (load "simple" environment) (load "debuge" environment) - (load "calias" environment) (load "modlin" (->environment '(EDWIN MODELINE-STRING))) (load "input" (->environment '(EDWIN KEYBOARD))) (load "prompt" (->environment '(EDWIN PROMPT))) @@ -165,7 +198,7 @@ (load "wincom" environment) (load "scrcom" environment) (load "xcom" (->environment '(EDWIN X-COMMANDS))) - (load "modefs" environment) + (load-set '("modefs" "xmodef") environment) (load "rename" environment) (load "loadef" environment) (load-set-and-initialize! '("bochser" "bochsmod") diff --git a/v7/src/edwin/edwin.pkg b/v7/src/edwin/edwin.pkg index e79d06d5d..3c641e158 100644 --- a/v7/src/edwin/edwin.pkg +++ b/v7/src/edwin/edwin.pkg @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Id: edwin.pkg,v 1.100 1992/09/23 23:06:38 jinx Exp $ +$Id: edwin.pkg,v 1.101 1992/10/20 20:02:13 jinx Exp $ Copyright (c) 1989-1992 Massachusetts Institute of Technology @@ -75,8 +75,6 @@ MIT in each case. |# "basic" ; basic commands "bufcom" ; buffer commands "comhst" ; command history - "comint" ; command interpreter process stuff - "compile" ; compilation subprocess "evlcom" ; evaluation commands "filcom" ; file commands "fill" ; text fill commands @@ -90,9 +88,6 @@ MIT in each case. |# "schmod" ; scheme mode "scrcom" ; screen commands "sercom" ; search commands - "shell" ; shell subprocess commands - "techinfo" ; techinfo commands - "telnet" ; telnet subprocess commands "texcom" ; text commands "wincom" ; window commands @@ -103,10 +98,21 @@ MIT in each case. |# "midas" "pasmod" "tximod" + "notify" ; mode line notifications + "outline" ; outline minor mode + + ;; These are only available under Unix/X + + "comint" ; command interpreter process stuff + "compile" ; compilation subprocess + "shell" ; shell subprocess commands + "techinfo" ; techinfo commands + "telnet" ; telnet subprocess commands + "xmodef" ; x bindings for fundamental mode "manual" ; man page display "print" ; printer output - "notify" ; mode line notifications - "outline") ; outline minor mode + ) + (parent ()) (import (runtime rep) hook/repl-eval) @@ -264,89 +270,13 @@ MIT in each case. |# set-screen-root-window! update-screen! window-screen - with-screen-in-update) - (export (edwin console-screen) - make-screen) - (export (edwin x-screen) - make-screen - set-screen-size! - set-screen-visibility!)) - -(define-package (edwin x-screen) - (files "xterm") - (parent (edwin)) - (export (edwin) - x-screen-auto-raise - xterm-screen/flush! - xterm-screen/grab-focus!) - (export (edwin x-commands) - screen-xterm) - (initialization (initialize-package!))) + with-screen-in-update)) -(define-package (edwin x-commands) - (files "xcom") - (parent (edwin)) - (export (edwin) - x-button1-down - x-button2-down - x-button3-down - x-button4-down - x-button5-down - x-button1-up - x-button2-up - x-button3-up - x-button4-up - x-button5-up - edwin-variable$x-screen-name-format - edwin-variable$x-screen-icon-name-format - edwin-variable$x-screen-icon-name-length) - (export (edwin x-screen) - update-xterm-screen-names!)) - -(define-package (edwin keys) - (files "key") - (parent (edwin)) - (export (edwin x-screen) - x-make-special-key) - (export (edwin) - make-special-key - special-key? - special-key/name - special-key/bucky-bits - stop - f1 - f2 - f3 - f4 - menu - system - user - f5 - f6 - f7 - f8 - f9 - f10 - f11 - f12 - insertline - deleteline - insertchar - deletechar - home - prior - next - up - down - left - right - select - print) - (initialization (initialize-package!))) - -(define-package (edwin console-screen) - (files "termcap" "tterm" "ansi" "bios") - (parent (edwin)) +(define-package (edwin screen console-screen) + (files "termcap" "tterm") + (file-case os-type + ((dos) "ansi" "bios")) + (parent (edwin screen)) (import (runtime primitive-io) channel-type=terminal? terminal-get-state @@ -700,39 +630,29 @@ MIT in each case. |# (files "keymap") (parent (edwin))) -(define-package (edwin debugger) - (files "debug") +(define-package (edwin inferior-repl) + (files "intmod") (parent (edwin)) (export (edwin) - continuation-browser-buffer - debug-scheme-error - edwin-command$browse-continuation - edwin-command$browse-environment - edwin-command$browser-evaluator - edwin-command$browser-next-line - edwin-command$browser-previous-line - edwin-command$browser-quit - edwin-command$browser-select-line - edwin-command$browser-where - edwin-mode$continuation-browser - edwin-mode$environment-browser - edwin-variable$debugger-one-at-a-time? - edwin-variable$debugger-start-on-error? - edwin-variable$debugger-max-subproblems - edwin-variable$debugger-confirm-return? - edwin-variable$debugger-quit-on-restart? - edwin-variable$debugger-quit-on-return? - edwin-variable$environment-browser-package-limit - environment-browser-buffer) - (import (runtime debugger) - debugger-pp - expression-indentation - invalid-expression?) - (import (runtime debugger-utilities) - print-binding - show-environment-name) - (import (runtime error-handler) - hook/invoke-restart)) + buffer/inferior-cmdl + current-repl-buffer + edwin-command$inferior-cmdl-abort-nearest + edwin-command$inferior-cmdl-abort-previous + edwin-command$inferior-cmdl-abort-top-level + edwin-command$inferior-cmdl-breakpoint + edwin-command$inferior-cmdl-self-insert + edwin-command$inferior-repl-eval-defun + edwin-command$inferior-repl-eval-last-sexp + edwin-command$inferior-repl-eval-region + edwin-command$repl + edwin-mode$inferior-cmdl + edwin-mode$inferior-repl + edwin-variable$repl-enable-transcript-buffer + edwin-variable$repl-error-decision + inferior-repl-eval-expression + inferior-repl-eval-region + initialize-inferior-repls! + start-inferior-repl!)) (define-package (edwin dired) (files "dired") @@ -799,9 +719,131 @@ MIT in each case. |# edwin-command$visit-tags-table edwin-variable$tags-table-pathname)) -(define-package (edwin rcs) - (files "rcs") - (parent (edwin))) +(define-package (edwin occurrence) + (files "occur") + (parent (edwin)) + (export (edwin) + edwin-command$count-matches + edwin-command$delete-matching-lines + edwin-command$delete-non-matching-lines + edwin-command$flush-lines + edwin-command$how-many + edwin-command$keep-lines + edwin-command$list-matching-lines + edwin-command$occur + edwin-command$occur-mode-goto-occurrence + edwin-mode$occur + edwin-variable$list-matching-lines-default-context-lines)) + +;;;; The following are the variants used under DOS + +#| +(define-package (edwin debugger) + (files "debug") + (parent (edwin)) + (export (edwin) + continuation-browser-buffer + debug-scheme-error + edwin-command$browse-continuation + edwin-mode$continuation-browser + edwin-variable$debugger-confirm-return? + edwin-variable$debugger-debug-evaluations? + edwin-variable$debugger-expand-reductions? + edwin-variable$debugger-hide-system-code? + edwin-variable$debugger-max-subproblems + edwin-variable$debugger-one-at-a-time? + edwin-variable$debugger-open-markers? + edwin-variable$debugger-quit-on-restart? + edwin-variable$debugger-quit-on-return? + edwin-variable$debugger-show-help-message? + edwin-variable$debugger-split-window? + edwin-variable$debugger-start-on-error? + edwin-variable$debugger-verbose-mode?) + (import (runtime continuation-parser) + stack-frame/reductions) + (import (runtime debugger) + command/condition-restart + command/frame + command/print-environment-procedure + command/print-expression + command/show-all-frames + command/show-current-frame + debugger-pp + dstate/environment-list + dstate/expression + dstate/number-of-reductions + dstate/previous-subproblems + dstate/reduction + dstate/reduction-number + dstate/subproblem + dstate/subproblem-number + dstate/using-history? + improper-list-length + invalid-expression? + make-initial-dstate + print-reduction-expression + print-subproblem-environment + print-subproblem-expression + reduction-environment + reduction-expression + set-current-subproblem! + set-dstate/environment-list! + set-dstate/reduction-number! + show-environment-name + stack-frame/compiled-code? + write-restarts) + (import (runtime error-handler) + hook/invoke-restart)) + +(define-package (edwin process) + (file-case os-type + ((unix) "process") + ((dos) "dosproc")) + (parent (edwin)) + (export (edwin) + buffer-processes ; always present + delete-process ; always present + get-buffer-process ; always present + initialize-processes! ; always present + process-list ; always present + subprocesses-available?)) ; always present +|# + +;;;; The following are the variants used under Unix/X + +(define-package (edwin debugger) + (files "debug") + (parent (edwin)) + (export (edwin) + continuation-browser-buffer + debug-scheme-error + edwin-command$browse-continuation + edwin-command$browse-environment + edwin-command$browser-evaluator + edwin-command$browser-next-line + edwin-command$browser-previous-line + edwin-command$browser-quit + edwin-command$browser-select-line + edwin-command$browser-where + edwin-mode$continuation-browser + edwin-mode$environment-browser + edwin-variable$debugger-one-at-a-time? + edwin-variable$debugger-start-on-error? + edwin-variable$debugger-max-subproblems + edwin-variable$debugger-confirm-return? + edwin-variable$debugger-quit-on-restart? + edwin-variable$debugger-quit-on-return? + edwin-variable$environment-browser-package-limit + environment-browser-buffer) + (import (runtime debugger) + debugger-pp + expression-indentation + invalid-expression?) + (import (runtime debugger-utilities) + print-binding + show-environment-name) + (import (runtime error-handler) + hook/invoke-restart)) (define-package (edwin process) (file-case os-type @@ -857,6 +899,78 @@ MIT in each case. |# subprocesses-available? ; always present run-synchronous-process)) +(define-package (edwin screen x-screen) + (files "xterm") + (parent (edwin screen)) + (export (edwin) + x-screen-auto-raise + xterm-screen/flush! + xterm-screen/grab-focus!) + (export (edwin x-commands) + screen-xterm) + (initialization (initialize-package!))) + +(define-package (edwin x-commands) + (files "xcom") + (parent (edwin)) + (export (edwin) + x-button1-down + x-button2-down + x-button3-down + x-button4-down + x-button5-down + x-button1-up + x-button2-up + x-button3-up + x-button4-up + x-button5-up + edwin-variable$x-screen-name-format + edwin-variable$x-screen-icon-name-format + edwin-variable$x-screen-icon-name-length) + (export (edwin screen x-screen) + update-xterm-screen-names!)) + +(define-package (edwin keys) + (files "key") + (parent (edwin)) + (export (edwin screen x-screen) + x-make-special-key) + (export (edwin) + stop + f1 + f2 + f3 + f4 + menu + system + user + f5 + f6 + f7 + f8 + f9 + f10 + f11 + f12 + insertline + deleteline + insertchar + deletechar + home + prior + next + up + down + left + right + select + print) + (initialization (initialize-package!))) + +(define-package (edwin rcs) + (files "rcs") + (parent (edwin))) + (define-package (edwin sendmail) (files "sendmail") (parent (edwin)) @@ -965,30 +1079,6 @@ MIT in each case. |# edwin-variable$rmail-reply-with-re rmail-spool-directory)) -(define-package (edwin inferior-repl) - (files "intmod") - (parent (edwin)) - (export (edwin) - buffer/inferior-cmdl - current-repl-buffer - edwin-command$inferior-cmdl-abort-nearest - edwin-command$inferior-cmdl-abort-previous - edwin-command$inferior-cmdl-abort-top-level - edwin-command$inferior-cmdl-breakpoint - edwin-command$inferior-cmdl-self-insert - edwin-command$inferior-repl-eval-defun - edwin-command$inferior-repl-eval-last-sexp - edwin-command$inferior-repl-eval-region - edwin-command$repl - edwin-mode$inferior-cmdl - edwin-mode$inferior-repl - edwin-variable$repl-enable-transcript-buffer - edwin-variable$repl-error-decision - inferior-repl-eval-expression - inferior-repl-eval-region - initialize-inferior-repls! - start-inferior-repl!)) - (define-package (edwin bochser) (files "bochser" "bochsmod") @@ -1026,20 +1116,4 @@ MIT in each case. |# edwin-variable$bindings-window-fraction) (import (runtime debugger-utilities) show-environment-bindings) - (initialization (initialize-bochser-mode!))) - -(define-package (edwin occurrence) - (files "occur") - (parent (edwin)) - (export (edwin) - edwin-command$count-matches - edwin-command$delete-matching-lines - edwin-command$delete-non-matching-lines - edwin-command$flush-lines - edwin-command$how-many - edwin-command$keep-lines - edwin-command$list-matching-lines - edwin-command$occur - edwin-command$occur-mode-goto-occurrence - edwin-mode$occur - edwin-variable$list-matching-lines-default-context-lines)) \ No newline at end of file + (initialization (initialize-bochser-mode!))) \ No newline at end of file diff --git a/v7/src/edwin/make.scm b/v7/src/edwin/make.scm index ae6ec7ba0..8f41fa550 100644 --- a/v7/src/edwin/make.scm +++ b/v7/src/edwin/make.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Id: make.scm,v 3.74 1992/09/23 23:03:22 jinx Exp $ +$Id: make.scm,v 3.75 1992/10/20 20:02:43 jinx Exp $ Copyright (c) 1989-1992 Massachusetts Institute of Technology @@ -40,4 +40,4 @@ MIT in each case. |# "edwin" `((os-type . ,(intern (microcode-identification-item 'OS-NAME-STRING)))) 'QUERY) -(add-system! (make-system "Edwin" 3 74 '())) \ No newline at end of file +(add-system! (make-system "Edwin" 3 75 '())) \ No newline at end of file diff --git a/v7/src/edwin/modefs.scm b/v7/src/edwin/modefs.scm index 60c71bf13..ab7c7d3c4 100644 --- a/v7/src/edwin/modefs.scm +++ b/v7/src/edwin/modefs.scm @@ -1,6 +1,6 @@ ;;; -*-Scheme-*- ;;; -;;; $Id: modefs.scm,v 1.140 1992/09/30 17:49:54 cph Exp $ +;;; $Id: modefs.scm,v 1.141 1992/10/20 20:03:14 jinx Exp $ ;;; ;;; Copyright (c) 1985, 1989-92 Massachusetts Institute of Technology ;;; @@ -307,36 +307,3 @@ Like Fundamental mode, but no self-inserting characters.") (define-key 'fundamental '(#\c-x #\{) 'shrink-window-horizontally) (define-key 'fundamental '(#\c-x #\}) 'enlarge-window-horizontally) (define-key 'fundamental '(#\c-x #\rubout) 'backward-kill-sentence) - -(let-syntax ((define-function-key - (macro (mode key command) - (let ((token (if (pair? key) (car key) key))) - `(if (not (lexical-unreferenceable? (the-environment) - ',token)) - (define-key ,mode ,key ,command)))))) - - (define-function-key 'fundamental left 'backward-char) - (define-function-key 'fundamental deletechar 'delete-char) - (define-function-key 'fundamental right 'forward-char) - (define-function-key 'fundamental deleteline 'kill-line) - (define-function-key 'fundamental down 'next-line) - (define-function-key 'fundamental insertline 'open-line) - (define-function-key 'fundamental up 'previous-line) - (define-function-key 'fundamental next 'scroll-up) - (define-function-key 'fundamental home 'home-cursor) - (define-function-key 'fundamental prior 'scroll-down) - (define-function-key 'fundamental (make-special-key 'next 1) - 'scroll-other-window) - (define-function-key 'fundamental (make-special-key 'prior 1) - 'scroll-other-window-down) - -;;; Jokes - - (define-key 'fundamental #\h-space 'hyper-space) - (define-function-key 'fundamental (make-special-key 'malesymbol 4) - 'super-man) - (define-function-key 'fundamental (make-special-key 'menu 4) 'super-menu) - (define-key 'fundamental #\t-$ 'top-dollar) - (define-key 'fundamental #\t-^ 'top-hat) - -) ;; End of let-syntax \ No newline at end of file -- 2.25.1