#| -*-Scheme-*-
-$Id: edwin.ldr,v 1.35 1992/10/20 20:02:23 jinx Exp $
+$Id: edwin.ldr,v 1.36 1992/10/20 21:47:52 jinx Exp $
Copyright (c) 1989-1992 Massachusetts Institute of Technology
(lambda (package/loader key-alist)
(let ((to-avoid-list (if (file-exists? "edwin.bad")
(fasload "edwin.bad")
- '())))
- (define (load file env)
- (if (string-member? file to-avoid-list)
- (begin (newline)
- (write-string "* skipping ")
- (write-string file)
- 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)
- (and (load-set files env)
- ((access initialize-package! env))))
- (define (lookup var)
- (cond ((assq var key-alist) => cdr)
- (else false)))
- (define (load-case var alist env)
- (for-each (lambda (key/file)
- (and (eq? (lookup var) (car key/file))
- (load (cdr key/file) env)))
- alist))
- (define string-member? (member-procedure string=?))
- (define (boolean-and a b) (and a b))
-
- (let ((environment (->environment '(EDWIN))))
- (load "utils" environment)
- (load "nvector" environment)
- (load "ring" environment)
- (load "strtab" environment)
- (load "strpad" environment)
- (load "macros" (->environment '(EDWIN MACROS)))
- (load "class" environment)
- (load "clscon" (->environment '(EDWIN CLASS-CONSTRUCTOR)))
- (load "clsmac" (->environment '(EDWIN CLASS-MACROS)))
- (load "xform"
- (->environment '(EDWIN CLASS-MACROS TRANSFORM-INSTANCE-VARIABLES)))
- (load "paths" environment)
- (load "struct" environment)
- (load "grpops" (->environment '(EDWIN GROUP-OPERATIONS)))
- (load "regops" environment)
- (load "motion" environment)
- (load "search" environment)
- (load "image" environment)
- (load "comman" environment)
- (load "comtab" (->environment '(EDWIN COMTAB)))
- (load "modes" environment)
- (load "buffer" environment)
- (load "bufset" environment)
- (load "undo" (->environment '(EDWIN UNDO)))
- (load "display" (->environment '(EDWIN DISPLAY-TYPE)))
- (load "screen" (->environment '(EDWIN SCREEN)))
- (load "winren" environment)
-
- (let ((environment (->environment '(EDWIN WINDOW))))
- (load "window" environment)
- (load "utlwin" environment)
- (load "bufwin" environment)
- (load "bufwfs" environment)
- (load "bufwiu" environment)
- (load "bufwmc" environment)
- (load "comwin" (->environment '(EDWIN WINDOW COMBINATION)))
- (load "modwin" environment)
- (load "buffrm" environment)
- (load "edtfrm" environment))
- (load "calias" environment)
- (load-set-and-initialize! '("xterm")
- (->environment '(EDWIN SCREEN X-SCREEN)))
- (load-set-and-initialize! '("key")
- (->environment '(EDWIN KEYS)))
-
- (let ((env (->environment '(EDWIN SCREEN CONSOLE-SCREEN))))
- (load-set-and-initialize! '("termcap" "tterm") env)
- (if (eq? (lookup 'os-type) 'dos)
- (begin
- (load "ansi" env)
- (if (load "bios" env)
- ((access bios-initialize-package! env))))))
-
- (load "edtstr" environment)
- (load "editor" environment)
- (load "curren" environment)
- (load "simple" environment)
- (load "debuge" environment)
- (load "modlin" (->environment '(EDWIN MODELINE-STRING)))
- (load "input" (->environment '(EDWIN KEYBOARD)))
- (load "prompt" (->environment '(EDWIN PROMPT)))
- (load "comred" (->environment '(EDWIN COMMAND-READER)))
- (load "bufinp" (->environment '(EDWIN BUFFER-INPUT-PORT)))
- (load "bufout" (->environment '(EDWIN BUFFER-OUTPUT-PORT)))
- (load "winout" (->environment '(EDWIN WINDOW-OUTPUT-PORT)))
- (load "things" environment)
- (load "tparse" environment)
- (load "syntax" environment)
- (load "regexp" (->environment '(EDWIN REGULAR-EXPRESSION)))
- (load "rgxcmp" (->environment '(EDWIN REGULAR-EXPRESSION-COMPILER)))
- (load "linden" (->environment '(EDWIN LISP-INDENTATION)))
-
- (load-case 'os-type '((unix . "unix") (dos . "dos")) environment)
-
- (load "fileio" environment)
-
- (if (eq? (lookup 'os-type) 'unix)
- (load-option 'SUBPROCESS))
- (load-case 'os-type '((unix . "process") (dos . "dosproc"))
- (->environment '(EDWIN PROCESS)))
-
- (load "argred" (->environment '(EDWIN COMMAND-ARGUMENT)))
- (load "autold" environment)
- (load "autosv" environment)
- (load "basic" environment)
- (load "bufcom" environment)
- (load "bufmnu" (->environment '(EDWIN BUFFER-MENU)))
- (load "c-mode" environment)
- (load "cinden" (->environment '(EDWIN C-INDENTATION)))
- (load "comhst" environment)
- (load "comint" environment)
- (load "compile" environment)
- (load "debug" (->environment '(EDWIN DEBUGGER)))
-
- (let ((env (->environment '(EDWIN DIRED))))
- (load "dired" env)
+ '()))
+ (bad-environment-tag '*BAD-ENVIRONMENT*))
+ (let ((->environment
+ (lambda (spec)
+ (if (name->package spec)
+ (->environment spec)
+ (cons bad-environment-tag spec)))))
+ (define (load file env)
+ (cond ((string-member? file to-avoid-list)
+ (newline)
+ (write-string "* skipping ")
+ (write-string file)
+ false)
+ ((and (pair? env)
+ (eq? (car env) bad-environment-tag))
+ (error "Attempting to load into non-existent package"
+ file (cdr env)))
+ (else (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)
+ (and (load-set files env)
+ ((access initialize-package! env))))
+ (define (lookup var)
+ (cond ((assq var key-alist) => cdr)
+ (else false)))
+ (define (load-case var alist env)
+ (for-each (lambda (key/file)
+ (and (eq? (lookup var) (car key/file))
+ (load (cdr key/file) env)))
+ alist))
+ (define string-member? (member-procedure string=?))
+ (define (boolean-and a b) (and a b))
+
+ (let ((environment (->environment '(EDWIN))))
+ (load "utils" environment)
+ (load "nvector" environment)
+ (load "ring" environment)
+ (load "strtab" environment)
+ (load "strpad" environment)
+ (load "macros" (->environment '(EDWIN MACROS)))
+ (load "class" environment)
+ (load "clscon" (->environment '(EDWIN CLASS-CONSTRUCTOR)))
+ (load "clsmac" (->environment '(EDWIN CLASS-MACROS)))
+ (load "xform"
+ (->environment '(EDWIN CLASS-MACROS TRANSFORM-INSTANCE-VARIABLES)))
+ (load "paths" environment)
+ (load "struct" environment)
+ (load "grpops" (->environment '(EDWIN GROUP-OPERATIONS)))
+ (load "regops" environment)
+ (load "motion" environment)
+ (load "search" environment)
+ (load "image" environment)
+ (load "comman" environment)
+ (load "comtab" (->environment '(EDWIN COMTAB)))
+ (load "modes" environment)
+ (load "buffer" environment)
+ (load "bufset" environment)
+ (load "undo" (->environment '(EDWIN UNDO)))
+ (load "display" (->environment '(EDWIN DISPLAY-TYPE)))
+ (load "screen" (->environment '(EDWIN SCREEN)))
+ (load "winren" environment)
+
+ (let ((environment (->environment '(EDWIN WINDOW))))
+ (load "window" environment)
+ (load "utlwin" environment)
+ (load "bufwin" environment)
+ (load "bufwfs" environment)
+ (load "bufwiu" environment)
+ (load "bufwmc" environment)
+ (load "comwin" (->environment '(EDWIN WINDOW COMBINATION)))
+ (load "modwin" environment)
+ (load "buffrm" environment)
+ (load "edtfrm" environment))
+ (load "calias" environment)
+ (load-set-and-initialize! '("xterm")
+ (->environment '(EDWIN SCREEN X-SCREEN)))
+ (load-set-and-initialize! '("key")
+ (->environment '(EDWIN KEYS)))
+
+ (let ((env (->environment '(EDWIN SCREEN CONSOLE-SCREEN))))
+ (load-set-and-initialize! '("termcap" "tterm") env)
+ (if (eq? (lookup 'os-type) 'dos)
+ (begin
+ (load "ansi" env)
+ (if (load "bios" env)
+ ((access bios-initialize-package! env))))))
+
+ (load "edtstr" environment)
+ (load "editor" environment)
+ (load "curren" environment)
+ (load "simple" environment)
+ (load "debuge" environment)
+ (load "modlin" (->environment '(EDWIN MODELINE-STRING)))
+ (load "input" (->environment '(EDWIN KEYBOARD)))
+ (load "prompt" (->environment '(EDWIN PROMPT)))
+ (load "comred" (->environment '(EDWIN COMMAND-READER)))
+ (load "bufinp" (->environment '(EDWIN BUFFER-INPUT-PORT)))
+ (load "bufout" (->environment '(EDWIN BUFFER-OUTPUT-PORT)))
+ (load "winout" (->environment '(EDWIN WINDOW-OUTPUT-PORT)))
+ (load "things" environment)
+ (load "tparse" environment)
+ (load "syntax" environment)
+ (load "regexp" (->environment '(EDWIN REGULAR-EXPRESSION)))
+ (load "rgxcmp" (->environment '(EDWIN REGULAR-EXPRESSION-COMPILER)))
+ (load "linden" (->environment '(EDWIN LISP-INDENTATION)))
+
+ (load-case 'os-type '((unix . "unix") (dos . "dos")) environment)
+
+ (load "fileio" environment)
+
(if (eq? (lookup 'os-type) 'unix)
- (load "dirunx" env)))
-
- (load "evlcom" environment)
- (load "filcom" environment)
- (load "fill" environment)
- (load "hlpcom" environment)
- (load "info" (->environment '(EDWIN INFO)))
- (load "intmod" (->environment '(EDWIN INFERIOR-REPL)))
- (load "keymap" (->environment '(EDWIN COMMAND-SUMMARY)))
- (load "kilcom" environment)
- (load "kmacro" environment)
- (load "lincom" environment)
- (load "lspcom" environment)
- (load "malias" (->environment '(EDWIN MAIL-ALIAS)))
- (load "motcom" environment)
- (load "occur" (->environment '(EDWIN OCCURRENCE)))
- (load "rcs" (->environment '(EDWIN RCS)))
- (load "reccom" (->environment '(EDWIN RECTANGLE)))
- (load "regcom" (->environment '(EDWIN REGISTER-COMMAND)))
- (load "replaz" environment)
- (load "rmail" (->environment '(EDWIN RMAIL)))
- (load "rmailsrt" (->environment '(EDWIN RMAIL)))
- (load "schmod" environment)
- (load "sendmail" (->environment '(EDWIN SENDMAIL)))
- (load "sercom" environment)
- (load "iserch" (->environment '(EDWIN INCREMENTAL-SEARCH)))
- (load "shell" environment)
- (load "tagutl" (->environment '(EDWIN TAGS)))
- (load "texcom" environment)
- (load "wincom" environment)
- (load "scrcom" environment)
- (load "xcom" (->environment '(EDWIN X-COMMANDS)))
- (load-set '("modefs" "xmodef") environment)
- (load "rename" environment)
- (load "loadef" environment)
- (load-set-and-initialize! '("bochser" "bochsmod")
- (->environment '(EDWIN BOCHSER)))
- (load "notify" environment)
- (load "outline" environment))))
\ No newline at end of file
+ (load-option 'SUBPROCESS))
+ (load-case 'os-type '((unix . "process") (dos . "dosproc"))
+ (->environment '(EDWIN PROCESS)))
+
+ (load "argred" (->environment '(EDWIN COMMAND-ARGUMENT)))
+ (load "autold" environment)
+ (load "autosv" environment)
+ (load "basic" environment)
+ (load "bufcom" environment)
+ (load "bufmnu" (->environment '(EDWIN BUFFER-MENU)))
+ (load "c-mode" environment)
+ (load "cinden" (->environment '(EDWIN C-INDENTATION)))
+ (load "comhst" environment)
+ (load "comint" environment)
+ (load "compile" environment)
+ (load "debug" (->environment '(EDWIN DEBUGGER)))
+
+ (let ((env (->environment '(EDWIN DIRED))))
+ (load "dired" env)
+ (if (eq? (lookup 'os-type) 'unix)
+ (load "dirunx" env)))
+
+ (load "evlcom" environment)
+ (load "filcom" environment)
+ (load "fill" environment)
+ (load "hlpcom" environment)
+ (load "info" (->environment '(EDWIN INFO)))
+ (load "intmod" (->environment '(EDWIN INFERIOR-REPL)))
+ (load "keymap" (->environment '(EDWIN COMMAND-SUMMARY)))
+ (load "kilcom" environment)
+ (load "kmacro" environment)
+ (load "lincom" environment)
+ (load "lspcom" environment)
+ (load "malias" (->environment '(EDWIN MAIL-ALIAS)))
+ (load "motcom" environment)
+ (load "occur" (->environment '(EDWIN OCCURRENCE)))
+ (load "rcs" (->environment '(EDWIN RCS)))
+ (load "reccom" (->environment '(EDWIN RECTANGLE)))
+ (load "regcom" (->environment '(EDWIN REGISTER-COMMAND)))
+ (load "replaz" environment)
+ (load "rmail" (->environment '(EDWIN RMAIL)))
+ (load "rmailsrt" (->environment '(EDWIN RMAIL)))
+ (load "schmod" environment)
+ (load "sendmail" (->environment '(EDWIN SENDMAIL)))
+ (load "sercom" environment)
+ (load "iserch" (->environment '(EDWIN INCREMENTAL-SEARCH)))
+ (load "shell" environment)
+ (load "tagutl" (->environment '(EDWIN TAGS)))
+ (load "texcom" environment)
+ (load "wincom" environment)
+ (load "scrcom" environment)
+ (load "xcom" (->environment '(EDWIN X-COMMANDS)))
+ (load-set '("modefs" "xmodef") environment)
+ (load "rename" environment)
+ (load "loadef" environment)
+ (load-set-and-initialize! '("bochser" "bochsmod")
+ (->environment '(EDWIN BOCHSER)))
+ (load "notify" environment)
+ (load "outline" environment)))))
\ No newline at end of file