Change MODE-INITIALIZATION (for both major and minor modes) to accept
authorChris Hanson <org/chris-hanson/cph>
Mon, 16 Nov 1992 22:41:21 +0000 (22:41 +0000)
committerChris Hanson <org/chris-hanson/cph>
Mon, 16 Nov 1992 22:41:21 +0000 (22:41 +0000)
the buffer as its argument; previously mode initializations had no
arguments.  Rewrite all mode initializations to be lambda expressions
with explicit bindings for the buffer argument.  Eliminate notion of
BUFFER-INITIALIZATIONS -- buffer's mode is now set immediately when
SET-BUFFER-MAJOR-MODE! or SET-BUFFER-MINOR-MODE! is called.

---> NOTE WELL!!! <---

All mode hooks have been changed to take the buffer as an argument --
this is an incompatible change that will affect anyone who uses a mode
hook in their initialization file.

22 files changed:
v7/src/edwin/buffer.scm
v7/src/edwin/bufmnu.scm
v7/src/edwin/c-mode.scm
v7/src/edwin/comint.scm
v7/src/edwin/compile.scm
v7/src/edwin/dired.scm
v7/src/edwin/evlcom.scm
v7/src/edwin/filcom.scm
v7/src/edwin/fileio.scm
v7/src/edwin/info.scm
v7/src/edwin/intmod.scm
v7/src/edwin/macros.scm
v7/src/edwin/midas.scm
v7/src/edwin/pasmod.scm
v7/src/edwin/rmail.scm
v7/src/edwin/rmailsum.scm
v7/src/edwin/schmod.scm
v7/src/edwin/sendmail.scm
v7/src/edwin/shell.scm
v7/src/edwin/telnet.scm
v7/src/edwin/texcom.scm
v7/src/edwin/tximod.scm

index cb73d78efa3038a557795e66558564cf882923d1..c7b75b51e07b03f4f498368af3e95976ab2a26ab 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: buffer.scm,v 1.157 1992/11/12 18:00:12 cph Exp $
+;;;    $Id: buffer.scm,v 1.158 1992/11/16 22:40:50 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
@@ -60,7 +60,6 @@
   alist
   local-bindings
   local-bindings-installed?
-  initializations
   auto-save-pathname
   auto-saved?
   save-length
@@ -102,14 +101,12 @@ The buffer is guaranteed to be deselected at that time."
       (vector-set! buffer buffer-index:alist '())
       (vector-set! buffer buffer-index:local-bindings '())
       (vector-set! buffer buffer-index:local-bindings-installed? false)
-      (vector-set! buffer
-                  buffer-index:initializations
-                  (list (mode-initialization mode)))
       (vector-set! buffer buffer-index:auto-save-pathname false)
       (vector-set! buffer buffer-index:auto-saved? false)
       (vector-set! buffer buffer-index:save-length 0)
       (vector-set! buffer buffer-index:backed-up? false)
       (vector-set! buffer buffer-index:modification-time false)
+      (set-buffer-major-mode! buffer mode)
       (event-distributor/invoke! (ref-variable buffer-creation-hook) buffer)
       buffer)))
 \f
@@ -247,25 +244,6 @@ The buffer is guaranteed to be deselected at that time."
 (define-integrable (reset-buffer-alist! buffer)
   (vector-set! buffer buffer-index:alist '()))
 
-(define (add-buffer-initialization! buffer thunk)
-  (without-interrupts (lambda () (%add-buffer-initialization! buffer thunk))))
-
-(define (%add-buffer-initialization! buffer thunk)
-  (if (current-buffer? buffer)
-      (thunk)
-      (vector-set! buffer
-                  buffer-index:initializations
-                  (append! (buffer-initializations buffer) (list thunk)))))
-
-(define (perform-buffer-initializations! buffer)
-  ;; Assumes that interrupts are disabled and BUFFER is selected.
-  (let loop ((thunks (buffer-initializations buffer)))
-    (if (not (null? thunks))
-       (begin
-         ((car thunks))
-         (loop (cdr thunks)))))
-  (vector-set! buffer buffer-index:initializations '()))
-
 (define (->buffer object)
   (cond ((buffer? object) object)
        ((and (mark? object) (mark-buffer object)))
@@ -439,8 +417,7 @@ The buffer is guaranteed to be deselected at that time."
   (do ((bindings (buffer-local-bindings buffer) (cdr bindings)))
       ((null? bindings))
     (vector-set! (caar bindings) variable-index:value (cdar bindings)))
-  (vector-set! buffer buffer-index:local-bindings-installed? true)
-  (perform-buffer-initializations! buffer))
+  (vector-set! buffer buffer-index:local-bindings-installed? true))
 
 (define (uninstall-buffer-local-bindings! buffer)
   (do ((bindings (buffer-local-bindings buffer) (cdr bindings)))
@@ -492,10 +469,9 @@ The buffer is guaranteed to be deselected at that time."
        (set-cdr! modes '()))
      (set-buffer-comtabs! buffer (mode-comtabs mode))
      (vector-set! buffer buffer-index:alist '())
-     (vector-set! buffer buffer-index:initializations '())
-     (buffer-modeline-event! buffer 'BUFFER-MODES)
-     (%add-buffer-initialization! buffer undo-local-bindings!)
-     (%add-buffer-initialization! buffer (mode-initialization mode)))))
+     (undo-local-bindings!)
+     ((mode-initialization mode) buffer)
+     (buffer-modeline-event! buffer 'BUFFER-MODES))))
 
 (define-integrable (buffer-minor-modes buffer)
   (cdr (buffer-modes buffer)))
@@ -517,7 +493,7 @@ The buffer is guaranteed to be deselected at that time."
             (set-buffer-comtabs! buffer
                                  (cons (minor-mode-comtab mode)
                                        (buffer-comtabs buffer)))
-            (%add-buffer-initialization! buffer (mode-initialization mode))
+            ((mode-initialization mode) buffer)
             (buffer-modeline-event! buffer 'BUFFER-MODES)))))))
 
 (define (disable-buffer-minor-mode! buffer mode)
index 4698a05517173f81aea97a2d7056a848c40f9523..6ba51069218c7de51c542efd7d8343e40d316a10 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: bufmnu.scm,v 1.122 1992/11/13 21:04:12 cph Exp $
+;;;    $Id: bufmnu.scm,v 1.123 1992/11/16 22:40:51 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
@@ -133,8 +133,10 @@ C-d -- mark that buffer to be deleted, and move up.
 x -- delete or save marked buffers.
 u -- remove all kinds of marks from current line.
 Delete -- back up a line and remove marks."
-  (local-set-variable! truncate-lines true)
-  (event-distributor/invoke! (ref-variable buffer-menu-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object truncate-lines)
+      true)
+    (event-distributor/invoke! (ref-variable buffer-menu-mode-hook) buffer)))
 
 (define-variable buffer-menu-mode-hook
   "An event distributor that is invoked when entering Buffer-menu mode."
index 0d1ecaba4655aeea58ac78c32e352ddb8c1de35b..891c27bc47e2159aeea32da161b9ede09fbf2900 100644 (file)
@@ -1,8 +1,8 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/c-mode.scm,v 1.48 1991/10/29 13:44:38 cph Exp $
+;;;    $Id: c-mode.scm,v 1.49 1992/11/16 22:40:53 cph Exp $
 ;;;
-;;;    Copyright (c) 1986, 1989-91 Massachusetts Institute of Technology
+;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
 ;;;    This material was developed by the Scheme project at the
 ;;;    Massachusetts Institute of Technology, Department of
@@ -92,20 +92,39 @@ Settings for K&R and BSD indentation styles are
   c-brace-offset               -5   -8
   c-argdecl-indent              0    8
   c-label-offset               -5   -8"
-  (local-set-variable! syntax-table c-mode:syntax-table)
-  (local-set-variable! syntax-ignore-comments-backwards true)
-  (local-set-variable! paragraph-start
-                      (string-append "^$\\|" (ref-variable page-delimiter)))
-  (local-set-variable! paragraph-separate (ref-variable paragraph-start))
-  (local-set-variable! paragraph-ignore-fill-prefix true)
-  (local-set-variable! indent-line-procedure (ref-command c-indent-command))
-  (local-set-variable! require-final-newline true)
-  (local-set-variable! comment-start "/* ")
-  (local-set-variable! comment-end " */")
-  (local-set-variable! comment-column 32)
-  (local-set-variable! comment-locator-hook c-mode:comment-locate)
-  (local-set-variable! comment-indent-hook c-mode:comment-indent)
-  (event-distributor/invoke! (ref-variable c-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object syntax-table)
+      c-mode:syntax-table)
+    (define-variable-local-value! buffer
+       (ref-variable-object syntax-ignore-comments-backwards)
+      true)
+    (define-variable-local-value! buffer (ref-variable-object paragraph-start)
+      (string-append "^$\\|" (ref-variable page-delimiter)))
+    (define-variable-local-value! buffer
+       (ref-variable-object paragraph-separate)
+      (ref-variable paragraph-start))
+    (define-variable-local-value! buffer
+       (ref-variable-object paragraph-ignore-fill-prefix)
+      true)
+    (define-variable-local-value! buffer
+       (ref-variable-object indent-line-procedure)
+      (ref-command c-indent-command))
+    (define-variable-local-value! buffer
+       (ref-variable-object require-final-newline)
+      true)
+    (define-variable-local-value! buffer (ref-variable-object comment-start)
+      "/* ")
+    (define-variable-local-value! buffer (ref-variable-object comment-end)
+      " */")
+    (define-variable-local-value! buffer (ref-variable-object comment-column)
+      32)
+    (define-variable-local-value! buffer
+       (ref-variable-object comment-locator-hook)
+      c-mode:comment-locate)
+    (define-variable-local-value! buffer
+       (ref-variable-object comment-indent-hook)
+      c-mode:comment-indent)
+    (event-distributor/invoke! (ref-variable c-mode-hook) buffer)))
 \f
 (define-variable c-mode-hook
   "An event distributor that is invoked when entering C mode."
index 98afd27d1580034cb73fc3b4adad7994a628f099..a234f1b6a184ad0926e7b62302656cdf45135803 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: comint.scm,v 1.15 1992/11/13 21:36:15 cph Exp $
+$Id: comint.scm,v 1.16 1992/11/16 22:40:54 cph Exp $
 
 Copyright (c) 1991-1992 Massachusetts Institute of Technology
 
@@ -119,14 +119,20 @@ If you accidentally suspend your process, use \\[comint-continue-subjob]
 to continue it.
 
 Entry to this mode runs the hooks on comint-mode-hook."
-  (local-set-variable! mode-line-process '(": %s"))
-  (local-set-variable! comint-input-ring
-                      (make-ring (ref-variable comint-input-ring-size)))
-  (local-set-variable! comint-last-input-end
-                      (mark-right-inserting-copy
-                       (buffer-end (current-buffer))))
-  (local-set-variable! comint-last-input-match false)
-  (event-distributor/invoke! (ref-variable comint-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer
+       (ref-variable-object mode-line-process)
+      '(": %s"))
+    (define-variable-local-value! buffer
+       (ref-variable-object comint-input-ring)
+      (make-ring (ref-variable comint-input-ring-size)))
+    (define-variable-local-value! buffer
+       (ref-variable-object comint-last-input-end)
+      (mark-right-inserting-copy (buffer-end (current-buffer))))
+    (define-variable-local-value! buffer
+       (ref-variable-object comint-last-input-match)
+      false)
+    (event-distributor/invoke! (ref-variable comint-mode-hook) buffer)))
 
 (define-variable comint-mode-hook
   "An event distributor that is invoked when entering Comint mode."
index e6e0065a479eae6187c48e4447851f05518cd8b7..16ea7e6ad15a8c1ae22d002691e2a3db4c447ba5 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/compile.scm,v 1.1 1992/03/24 23:31:41 cph Exp $
+;;;    $Id: compile.scm,v 1.2 1992/11/16 22:40:55 cph Exp $
 ;;;
 ;;;    Copyright (c) 1992 Massachusetts Institute of Technology
 ;;;
@@ -88,12 +88,9 @@ with output going to the buffer *compilation*."
     (disable-group-undo! (buffer-group buffer))
     (set-buffer-default-directory! buffer directory)
     (set-buffer-major-mode! buffer (ref-mode-object fundamental))
-    (add-buffer-initialization!
-     buffer
-     (lambda ()
-       (define-variable-local-value! buffer
-        (ref-variable-object mode-line-process)
-        '(": %s"))))
+    (define-variable-local-value! buffer
+       (ref-variable-object mode-line-process)
+      '(": %s"))
     (let ((mark (mark-left-inserting-copy (buffer-start buffer))))
       (let ((window (get-buffer-window buffer)))
        (if window
index 6b0f8fdd50b86a1f2d9a37900b9b42198752ebd3..fd019cabd16a47d7bf8d7285522e33426255e995 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: dired.scm,v 1.130 1992/11/16 21:09:32 gjr Exp $
+;;;    $Id: dired.scm,v 1.131 1992/11/16 22:40:56 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-1992 Massachusetts Institute of Technology
 ;;;
@@ -73,8 +73,10 @@ Also:
  M, G, O -- change file's mode, group or owner.
  C -- compress this file.  U -- uncompress this file."
 ;;Type v to view a file in View mode, returning to Dired when done.
-  (local-set-variable! case-fold-search false)
-  (event-distributor/invoke! (ref-variable dired-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object case-fold-search)
+      false)
+    (event-distributor/invoke! (ref-variable dired-mode-hook) buffer)))
 
 (define-variable dired-mode-hook
   "An event distributor that is invoked when entering Dired mode."
index 0a8494c2e9c6e18e3a38b8c45d7a48d93e44513a..f3ddf59a22829c577b4d2198892219f090c4510a 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: evlcom.scm,v 1.39 1992/11/12 18:00:23 cph Exp $
+;;;    $Id: evlcom.scm,v 1.40 1992/11/16 22:40:58 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
@@ -595,13 +595,16 @@ FIT           Error messages appear in typein window if they fit;
              (if (ref-variable transcript-buffer-read-only)
                  (set-buffer-read-only! buffer))
              (if (ref-variable transcript-disable-evaluation)
-                 (add-buffer-initialization! buffer
-                   (lambda ()
-                     (local-set-variable! disable-evaluation-commands true)
-                     (if (eq? (buffer-major-mode buffer)
-                              (ref-mode-object scheme))
-                         (begin
-                           (local-set-variable! evaluate-in-inferior-repl
-                                                false)
-                           (local-set-variable! run-light false))))))
+                 (define-variable-local-value! buffer
+                     (ref-variable-object disable-evaluation-commands)
+                   true)
+                 (if (eq? (buffer-major-mode buffer)
+                          (ref-mode-object scheme))
+                     (begin
+                       (define-variable-local-value! buffer
+                           (ref-variable-object evaluate-in-inferior-repl)
+                         false)
+                       (define-variable-local-value! buffer
+                           (ref-variable-object run-light)
+                         false))))
              buffer)))))
\ No newline at end of file
index 22edfb4f3a0e0481abcc43bbc367a227be61ee42..9b1d935122b6d2f1f0f42655f5d91f3de6d6c993 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: filcom.scm,v 1.171 1992/11/15 21:58:24 cph Exp $
+;;;    $Id: filcom.scm,v 1.172 1992/11/16 22:41:00 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
@@ -206,7 +206,7 @@ invocation."
                                  edwin-syntax-table))))))))))
          (if (and (procedure? database)
                   (procedure-arity-valid? database 0))
-             (add-buffer-initialization! buffer database)
+             (database buffer)
              (message
               "Ill-formed find-file initialization file: "
               (os/pathname->display-string pathname)))))))
@@ -215,9 +215,9 @@ invocation."
   ;; DATABASE -must- be a vector whose elements are all three element
   ;; lists.  The car of each element must be a string, and the
   ;; elements must be sorted on those strings.
-  (lambda ()
+  (lambda (buffer)
     (let ((entry
-          (let ((pathname (buffer-pathname (current-buffer))))
+          (let ((pathname (buffer-pathname buffer)))
             (and pathname
                  (equal? "scm" (pathname-type pathname))
                  (let ((name (pathname-name pathname)))
@@ -228,10 +228,18 @@ invocation."
                                               name)))))))
       (if entry
          (begin
-           (local-set-variable! scheme-environment (cadr entry))
-           (local-set-variable! scheme-syntax-table (caddr entry))
-           (local-set-variable! evaluate-in-inferior-repl false)
-           (local-set-variable! run-light false))))))
+           (define-variable-local-value! buffer
+               (ref-variable-object scheme-environment)
+             (cadr entry))
+           (define-variable-local-value! buffer
+               (ref-variable-object scheme-syntax-table)
+             (caddr entry))
+           (define-variable-local-value! buffer
+               (ref-variable-object evaluate-in-inferior-repl)
+             false)
+           (define-variable-local-value! buffer
+               (ref-variable-object run-light)
+             false))))))
 \f
 (define (find-file-revert buffer)
   (if (not (verify-visited-file-modification-time? buffer))
index 3405163590aad6ea297795b6d196ae20db4b7830..00973e709441dd51e4a3b081bf06701d3e4ca901 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: fileio.scm,v 1.112 1992/11/15 21:58:51 cph Exp $
+;;;    $Id: fileio.scm,v 1.113 1992/11/16 22:41:01 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-1992 Massachusetts Institute of Technology
 ;;;
@@ -339,15 +339,9 @@ after you find a file.  If you explicitly request such a scan with
                               (lambda ()
                                 (if (string-ci=? var "Eval")
                                     (evaluate val)
-                                    (add-buffer-initialization!
-                                     buffer
-                                     (let ((variable (name->variable var))
-                                           (value (evaluate val)))
-                                       (lambda ()
-                                         (define-variable-local-value!
-                                          (current-buffer)
-                                          variable
-                                          value))))))))))
+                                    (define-variable-local-value! buffer
+                                        (name->variable var)
+                                      (evaluate val))))))))
                      (loop m4))))))))
 
       (loop start))))
index 7f0f7bf30b0a5a4d7ee57b96578163d366c922b4..8478488c7ba4066b6fb7358f4127a255082a3747 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: info.scm,v 1.112 1992/11/12 18:00:33 cph Exp $
+;;;    $Id: info.scm,v 1.113 1992/11/16 22:41:03 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
@@ -134,15 +134,29 @@ g Move to node specified by name.
        You may include a filename as well, as (FILENAME)NODENAME.
 s      Search through this Info file for specified regexp,
        and select the node in which the next occurrence is found."
-  (local-set-variable! syntax-table text-mode:syntax-table)
-  (local-set-variable! case-fold-search true)
-  (local-set-variable! info-history (ref-variable info-history))
-  (local-set-variable! info-current-file false)
-  (local-set-variable! info-current-subfile false)
-  (local-set-variable! info-current-node false)
-  (local-set-variable! info-tag-table-start false)
-  (local-set-variable! info-tag-table-end false)
-  (info-set-mode-line!))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object syntax-table)
+      text-mode:syntax-table)
+    (define-variable-local-value! buffer (ref-variable-object case-fold-search)
+      true)
+    (define-variable-local-value! buffer (ref-variable-object info-history)
+      (ref-variable info-history))
+    (define-variable-local-value! buffer
+       (ref-variable-object info-current-file)
+      false)
+    (define-variable-local-value! buffer
+       (ref-variable-object info-current-subfile)
+      false)
+    (define-variable-local-value! buffer
+       (ref-variable-object info-current-node)
+      false)
+    (define-variable-local-value! buffer
+       (ref-variable-object info-tag-table-start)
+      false)
+    (define-variable-local-value! buffer
+       (ref-variable-object info-tag-table-end)
+      false)
+    (info-set-mode-line! buffer)))
 
 (define-key 'info #\space 'scroll-up)
 (define-key 'info #\. 'beginning-of-buffer)
@@ -166,17 +180,6 @@ s  Search through this Info file for specified regexp,
 (define-key 'info #\s 'info-search)
 (define-key 'info #\u 'info-up)
 (define-key 'info #\rubout 'scroll-down)
-
-(define (info-set-mode-line!)
-  (local-set-variable! mode-line-buffer-identification
-                      (string-append
-                       "Info:  ("
-                       (let ((pathname (ref-variable info-current-file)))
-                         (if pathname
-                             (file-namestring pathname)
-                             ""))
-                       ")"
-                       (or (ref-variable info-current-node) ""))))
 \f
 ;;;; Motion
 
@@ -296,9 +299,9 @@ Allowed only if the variable Info Enable Edit is not false."
   "Major mode for editing the contents of an Info node.
 The editing commands are the same as in Text mode,
 except for \\[info-cease-edit] to return to Info."
-  (local-set-variable! page-delimiter
-                      (string-append "^\1f\f\\|"
-                                     (ref-variable page-delimiter))))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object page-delimiter)
+      (string-append "^\1f\f\\|" (ref-variable page-delimiter)))))
 
 (define-key 'info-edit '(#\c-c #\c-c) 'info-cease-edit)
 
@@ -697,7 +700,7 @@ The name may be an abbreviation of the reference name."
          (begin
            (set-variable! info-current-subfile false)
            (set-variable! info-current-node nodename)
-           (info-set-mode-line!))
+           (info-set-mode-line! buffer))
          (select-node
           (let ((end (buffer-end buffer)))
             (let loop ((start (node-search-start nodename)))
@@ -709,6 +712,17 @@ The name may be an abbreviation of the reference name."
                            (string-ci=? nodename name)))
                     node
                     (loop node))))))))))
+
+(define (info-set-mode-line! buffer)
+  (define-variable-local-value! buffer
+      (ref-variable-object mode-line-buffer-identification)
+    (string-append "Info:  ("
+                  (let ((pathname (ref-variable info-current-file)))
+                    (if pathname
+                        (file-namestring pathname)
+                        ""))
+                  ")"
+                  (or (ref-variable info-current-node) ""))))
 \f
 (define (parse-node-name name receiver)
   (let ((name (string-trim name)))
@@ -726,7 +740,7 @@ The name may be an abbreviation of the reference name."
 (define (select-node point)
   (let ((node (node-start point (group-start point))))
     (set-variable! info-current-node (extract-node-name node))
-    (info-set-mode-line!)
+    (info-set-mode-line! (current-buffer))
     ;; **** need to add active node hacking here ****
     (region-clip! (node-region node))
     (set-current-point! point)))
index 5b4d1081e2a173c1573a33fc1e447770025b9c54..25d301fd0583b569b886d839e126b9465988477a 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: intmod.scm,v 1.51 1992/09/29 21:12:19 cph Exp $
+;;;    $Id: intmod.scm,v 1.52 1992/11/16 22:41:05 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
@@ -95,29 +95,25 @@ REPL uses current evaluation environment."
   (if (ref-variable repl-mode-locked)
       (buffer-put! buffer 'MAJOR-MODE-LOCKED true))
   (set-buffer-default-directory! buffer (working-directory-pathname))
-  (add-buffer-initialization!
-   buffer
-   (lambda ()
-     (create-thread
-      editor-thread-root-continuation
-      (lambda ()
-       (let ((thread (current-thread)))
-         (detach-thread thread)
-         (let ((port (make-interface-port buffer thread)))
-           (attach-buffer-interface-port! buffer port)
-           (with-input-from-port port
-             (lambda ()
-               (with-output-to-port port
-                 (lambda ()
-                   (repl/start (make-repl false
-                                          port
-                                          environment
-                                          syntax-table
-                                          false
-                                          `((ERROR-DECISION
-                                             ,error-decision))
-                                          user-initial-prompt)
-                               message))))))))))))
+  (create-thread editor-thread-root-continuation
+                (lambda ()
+                  (let ((thread (current-thread)))
+                    (detach-thread thread)
+                    (let ((port (make-interface-port buffer thread)))
+                      (attach-buffer-interface-port! buffer port)
+                      (with-input-from-port port
+                        (lambda ()
+                          (with-output-to-port port
+                            (lambda ()
+                              (repl/start (make-repl false
+                                                     port
+                                                     environment
+                                                     syntax-table
+                                                     false
+                                                     `((ERROR-DECISION
+                                                        ,error-decision))
+                                                     user-initial-prompt)
+                                          message))))))))))
 
 (define (current-repl-buffer)
   (let ((buffer (current-buffer)))
@@ -291,7 +287,8 @@ The REPL may be controlled by the following commands:
 
 \\[inferior-cmdl-abort-top-level] returns to top level.
 \\[inferior-cmdl-abort-previous] goes up one level."
-  (event-distributor/invoke! (ref-variable inferior-repl-mode-hook)))
+  (lambda (buffer)
+    (event-distributor/invoke! (ref-variable inferior-repl-mode-hook) buffer)))
 
 (define-variable inferior-repl-mode-hook
   "An event distributor that is invoked when entering Inferior REPL mode."
@@ -313,7 +310,7 @@ The REPL may be controlled by the following commands:
 (define-key 'inferior-repl '(#\C-c #\C-s) 'comint-history-search-forward)
 
 (define-key 'inferior-repl '(#\C-c #\C-d) 'inferior-repl-debug)
-
+\f
 (define-major-mode inferior-cmdl scheme "CMDL"
   "Major mode for communicating with an inferior command loop.
 Like Scheme mode except that the evaluation commands are disabled,
@@ -324,7 +321,8 @@ Additionally, these commands abort the command loop:
 
 \\[inferior-cmdl-abort-top-level] returns to the top-level REPL.
 \\[inferior-cmdl-abort-previous] returns to the previous level REPL."
-  (event-distributor/invoke! (ref-variable inferior-cmdl-mode-hook)))
+  (lambda (buffer)
+    (event-distributor/invoke! (ref-variable inferior-cmdl-mode-hook) buffer)))
 
 (define-variable inferior-cmdl-mode-hook
   "An event distributor that is invoked when entering Inferior CMDL mode."
index f24d7728d55489a3a3d3716ac1b9a63e04cff758..d7c686dedc874be213da88d32e6b2027e4f07aa2 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: macros.scm,v 1.56 1992/10/20 20:46:51 jinx Exp $
+;;;    $Id: macros.scm,v 1.57 1992/11/16 22:41:07 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-1992 Massachusetts Institute of Technology
 ;;;
   (symbol-append 'EDWIN-VARIABLE$ name))
 \f
 (syntax-table-define edwin-syntax-table 'DEFINE-MAJOR-MODE
-  (lambda (name super-mode-name display-name description . initialization)
+  (lambda (name super-mode-name display-name description
+               #!optional initialization)
     (let ((name (canonicalize-name name))
          (super-mode-name
           (and super-mode-name (canonicalize-name super-mode-name))))
                         `(->MODE ',super-mode-name)
                         `#F)
                    ',description
-                   (LAMBDA ()
-                     ,@(let ((initialization
-                              (if super-mode-name
-                                  `(((MODE-INITIALIZATION
-                                      ,(mode-name->scheme-name
-                                        super-mode-name)))
-                                    ,@initialization)
-                                  initialization)))
-                         (if (null? initialization)
-                             `(',unspecific)
-                             initialization))))))))
+                   ,(let ((super-initialization
+                           (and super-mode-name
+                                `(MODE-INITIALIZATION
+                                  ,(mode-name->scheme-name super-mode-name))))
+                          (initialization
+                           (and (not (default-object? initialization))
+                                initialization)))
+                      (cond (super-initialization
+                             `(LAMBDA (BUFFER)
+                                (,super-initialization BUFFER)
+                                ,@(if initialization
+                                      `((,initialization BUFFER))
+                                      `())))
+                            (initialization)
+                            (else `(LAMBDA (BUFFER) BUFFER UNSPECIFIC)))))))))
 
 (syntax-table-define edwin-syntax-table 'DEFINE-MINOR-MODE
-  (lambda (name display-name description . initialization)
+  (lambda (name display-name description #!optional initialization)
     (let ((name (canonicalize-name name)))
       `(DEFINE ,(mode-name->scheme-name name)
         (MAKE-MODE ',name
                    ',(or display-name (symbol->string name))
                    #F
                    ',description
-                   (LAMBDA ()
-                     ,@(if (null? initialization)
-                           `(',unspecific)
-                           initialization)))))))
+                   ,(if (and (not (default-object? initialization))
+                             initialization)
+                        initialization
+                        `(LAMBDA (BUFFER) BUFFER UNSPECIFIC)))))))
 
 (syntax-table-define edwin-syntax-table 'REF-MODE-OBJECT
   (lambda (name)
index 48de454e94b00435f5ebc0b03e5bc8a3b2567d3d..aef6dafa14517106763a3f26dbbf62c29fc5ec7e 100644 (file)
@@ -1,8 +1,8 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/midas.scm,v 1.15 1990/10/03 04:55:33 cph Rel $
+;;;    $Id: midas.scm,v 1.16 1992/11/16 22:41:08 cph Exp $
 ;;;
-;;;    Copyright (c) 1986, 1989, 1990 Massachusetts Institute of Technology
+;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
 ;;;    This material was developed by the Scheme project at the
 ;;;    Massachusetts Institute of Technology, Department of
 
 (define-major-mode midas fundamental "Midas"
   "Major mode for editing assembly code."
-  (local-set-variable! syntax-table midas-mode:syntax-table)
-  (local-set-variable! comment-column 40)
-  (local-set-variable! comment-locator-hook lisp-comment-locate)
-  (local-set-variable! comment-indent-hook midas-comment-indentation)
-  (local-set-variable! comment-start ";")
-  (local-set-variable! comment-end "")
-  (local-set-variable! paragraph-start "^$")
-  (local-set-variable! paragraph-separate (ref-variable paragraph-start))
-  (local-set-variable! indent-line-procedure (ref-command insert-tab))
-  (event-distributor/invoke! (ref-variable midas-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object syntax-table)
+      midas-mode:syntax-table)
+    (define-variable-local-value! buffer (ref-variable-object comment-column)
+      40)
+    (define-variable-local-value! buffer
+       (ref-variable-object comment-locator-hook)
+      lisp-comment-locate)
+    (define-variable-local-value! buffer
+       (ref-variable-object comment-indent-hook)
+      midas-comment-indentation)
+    (define-variable-local-value! buffer (ref-variable-object comment-start)
+      ";")
+    (define-variable-local-value! buffer (ref-variable-object comment-end)
+      "")
+    (define-variable-local-value! buffer (ref-variable-object paragraph-start)
+      "^$")
+    (define-variable-local-value! buffer
+       (ref-variable-object paragraph-separate)
+      (ref-variable paragraph-start))
+    (define-variable-local-value! buffer
+       (ref-variable-object indent-line-procedure)
+      (ref-command insert-tab))
+    (event-distributor/invoke! (ref-variable midas-mode-hook))))
 
 (define midas-mode:syntax-table (make-syntax-table))
 (modify-syntax-entry! midas-mode:syntax-table #\; "<   ")
index 035b78852a4901fa948a59e8c0ee97641b84b6b9..31d4f13d0da5cd93f4b90c140640d10c5cb98234 100644 (file)
@@ -1,8 +1,8 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/pasmod.scm,v 1.44 1991/11/04 20:48:36 cph Exp $
+;;;    $Id: pasmod.scm,v 1.45 1992/11/16 22:41:09 cph Exp $
 ;;;
-;;;    Copyright (c) 1986, 1989, 1990 Massachusetts Institute of Technology
+;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
 ;;;    This material was developed by the Scheme project at the
 ;;;    Massachusetts Institute of Technology, Department of
 
 (define-major-mode pascal fundamental "Pascal"
   "Major mode specialized for editing Pascal code."
-  (local-set-variable! syntax-table pascal-mode:syntax-table)
-  (local-set-variable! syntax-ignore-comments-backwards true)
-  (local-set-variable! indent-line-procedure (ref-command pascal-indent-line))
-  (local-set-variable! comment-column 32)
-  (local-set-variable! comment-locator-hook pascal-comment-locate)
-  (local-set-variable! comment-indent-hook pascal-comment-indentation)
-  (local-set-variable! comment-start "(* ")
-  (local-set-variable! comment-end " *)")
-  (local-set-variable! paragraph-start "^$")
-  (local-set-variable! paragraph-separate (ref-variable "Paragraph Start"))
-  (event-distributor/invoke! (ref-variable pascal-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object syntax-table)
+      pascal-mode:syntax-table)
+    (define-variable-local-value! buffer
+       (ref-variable-object syntax-ignore-comments-backwards)
+      true)
+    (define-variable-local-value! buffer
+       (ref-variable-object indent-line-procedure)
+      (ref-command pascal-indent-line))
+    (define-variable-local-value! buffer (ref-variable-object comment-column)
+      32)
+    (define-variable-local-value! buffer
+       (ref-variable-object comment-locator-hook)
+      pascal-comment-locate)
+    (define-variable-local-value! buffer
+       (ref-variable-object comment-indent-hook)
+      pascal-comment-indentation)
+    (define-variable-local-value! buffer (ref-variable-object comment-start)
+      "(* ")
+    (define-variable-local-value! buffer (ref-variable-object comment-end)
+      " *)")
+    (define-variable-local-value! buffer (ref-variable-object paragraph-start)
+      "^$")
+    (define-variable-local-value! buffer
+       (ref-variable-object paragraph-separate)
+      (ref-variable paragraph-start))
+    (event-distributor/invoke! (ref-variable pascal-mode-hook) buffer)))
 
 (define pascal-mode:syntax-table (make-syntax-table))
 (modify-syntax-entry! pascal-mode:syntax-table #\( "()1 ")
index c1d438d30b629d8ebbf9d1cb6383c920b3bd65cf..b5b2d15bf67a2965e5141a7305174d6efb7fec71 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: rmail.scm,v 1.22 1992/11/15 21:59:17 cph Exp $
+;;;    $Id: rmail.scm,v 1.23 1992/11/16 22:41:10 cph Exp $
 ;;;
 ;;;    Copyright (c) 1991-92 Massachusetts Institute of Technology
 ;;;
@@ -163,25 +163,32 @@ C-M-l     Like h only just messages with particular label(s) are summarized.
 C-M-r   Like h only just messages with particular recipient(s) are summarized.
 t      Toggle header, show Rmail header if unformatted or vice versa.
 w      Edit the current message.  C-c C-c to return to Rmail."
-  (guarantee-variables-initialized)
-  (let ((buffer (current-buffer)))
-    (local-set-variable! mode-line-modified "--- ")
-    (local-set-variable! version-control 'NEVER)
-    (local-set-variable! file-precious-flag true)
-    (local-set-variable! require-final-newline false)
-    (local-set-variable! rmail-last-file (ref-variable rmail-last-file))
-    (local-set-variable!
-     rmail-inbox-list
-     (let ((inboxes (parse-file-inboxes buffer)))
-       (if (and (null? inboxes)
-               (pathname=? (buffer-pathname buffer)
-                           (ref-variable rmail-file-name)))
-          (ref-variable rmail-primary-inbox-list)
-          inboxes)))
+  (lambda (buffer)
+    (guarantee-variables-initialized)
+    (define-variable-local-value! buffer
+       (ref-variable-object mode-line-modified)
+      "--- ")
+    (define-variable-local-value! buffer (ref-variable-object version-control)
+      'NEVER)
+    (define-variable-local-value! buffer
+       (ref-variable-object file-precious-flag)
+      true)
+    (define-variable-local-value! buffer
+       (ref-variable-object require-final-newline)
+      false)
+    (define-variable-local-value! buffer (ref-variable-object rmail-last-file)
+      (ref-variable rmail-last-file))
+    (define-variable-local-value! buffer (ref-variable-object rmail-inbox-list)
+      (let ((inboxes (parse-file-inboxes buffer)))
+       (if (and (null? inboxes)
+                (pathname=? (buffer-pathname buffer)
+                            (ref-variable rmail-file-name)))
+           (ref-variable rmail-primary-inbox-list)
+           inboxes)))
     (buffer-put! buffer 'REVERT-BUFFER-METHOD rmail-revert-buffer)
     (memoize-buffer buffer)
-    (set-buffer-read-only! buffer))
-  (event-distributor/invoke! (ref-variable rmail-mode-hook)))
+    (set-buffer-read-only! buffer)
+    (event-distributor/invoke! (ref-variable rmail-mode-hook) buffer)))
 
 (define-major-mode rmail-edit text "RMAIL Edit"
   "Major mode for editing the contents of an RMAIL message.
@@ -217,7 +224,8 @@ together with two commands to return to regular RMAIL:
                           babyl-header-start-regexp
                           "\\|^[\037]?"
                           babyl-message-start-regexp
-                          "\\)"))))
+                          "\\)")))
+  unspecific)
 
 (define (parse-file-inboxes buffer)
   (let ((start (buffer-start buffer))
index ea2729dd0e173a44ab266b84412e1e7828931e6d..8f5fb2411159c698c49378c4cad5483d627c806d 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/rmailsum.scm,v 1.26 1992/11/12 19:37:19 bal Exp $
+;;;    $Id: rmailsum.scm,v 1.27 1992/11/16 22:41:13 cph Exp $
 ;;;
 ;;;    Copyright (c) 1991-92 Massachusetts Institute of Technology
 ;;;
@@ -48,7 +48,7 @@
 \f
 (define-variable rmailsum-rcs-header
   "The RCS header of the rmailsum.scm file."
-  "$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/rmailsum.scm,v 1.26 1992/11/12 19:37:19 bal Exp $"
+  "$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/rmailsum.scm,v 1.27 1992/11/16 22:41:13 cph Exp $"
   string?)
 
 (define-variable-per-buffer rmail-buffer
@@ -176,7 +176,6 @@ RECIPIENTS is a string of names separated by commas."
                              (ref-mode-object rmail-summary))
       (let ((the-rmail-summary-buffer (ref-variable rmail-summary-buffer)))
        (select-buffer-other-window (ref-variable rmail-summary-buffer))
-       (perform-buffer-initializations! (current-buffer))
        (select-buffer-other-window the-rmail-buffer)
        (define-variable-local-value! 
          the-rmail-summary-buffer (ref-variable-object rmail-buffer)
@@ -427,9 +426,9 @@ m       Send a mail message.
 r       Reply to this mail message.
 
 Entering this mode calls value of hook variable rmail-summary-mode-hook."
-  (let ((buffer (current-buffer)))
-    (set-buffer-read-only! buffer))
-  (event-distributor/invoke! (ref-variable rmail-summary-mode-hook)))
+  (lambda (buffer)
+    (set-buffer-read-only! buffer)
+    (event-distributor/invoke! (ref-variable rmail-summary-mode-hook) buffer)))
 
 (define-key 'rmail-summary #\j         'rmail-summary-show-message)
 (define-key 'rmail-summary #\n         'rmail-summary-next-undeleted-message)
index c60cd41ebbc0e48afecb35eeeee5ba0c2c685c48..a759eac3b9d9ff0961a1bdaff553f2b2af7773c8 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/schmod.scm,v 1.26 1992/04/08 17:57:48 cph Exp $
+;;;    $Id: schmod.scm,v 1.27 1992/11/16 22:41:15 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
@@ -64,22 +64,46 @@ The following commands evaluate Scheme expressions:
 \\[eval-defun] evaluates the current definition.
 \\[eval-current-buffer] evaluates the buffer.
 \\[eval-region] evaluates the current region."
-  (local-set-variable! syntax-table scheme-mode:syntax-table)
-  (local-set-variable! syntax-ignore-comments-backwards false)
-  (local-set-variable! lisp-indent-hook standard-lisp-indent-hook)
-  (local-set-variable! lisp-indent-methods scheme-mode:indent-methods)
-  (local-set-variable! comment-column 40)
-  (local-set-variable! comment-locator-hook lisp-comment-locate)
-  (local-set-variable! comment-indent-hook lisp-comment-indentation)
-  (local-set-variable! comment-start ";")
-  (local-set-variable! comment-end "")
-  (let ((separate (string-append "^$\\|" (ref-variable page-delimiter))))
-    (local-set-variable! paragraph-start separate)
-    (local-set-variable! paragraph-separate separate))
-  (local-set-variable! paragraph-ignore-fill-prefix true)
-  (local-set-variable! indent-line-procedure (ref-command lisp-indent-line))
-  (local-set-variable! mode-line-process '(RUN-LIGHT (": " RUN-LIGHT) ""))
-  (event-distributor/invoke! (ref-variable scheme-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object syntax-table)
+      scheme-mode:syntax-table)
+    (define-variable-local-value! buffer
+       (ref-variable-object syntax-ignore-comments-backwards)
+      false)
+    (define-variable-local-value! buffer (ref-variable-object lisp-indent-hook)
+      standard-lisp-indent-hook)
+    (define-variable-local-value! buffer
+       (ref-variable-object lisp-indent-methods)
+      scheme-mode:indent-methods)
+    (define-variable-local-value! buffer (ref-variable-object comment-column)
+      40)
+    (define-variable-local-value! buffer
+       (ref-variable-object comment-locator-hook)
+      lisp-comment-locate)
+    (define-variable-local-value! buffer
+       (ref-variable-object comment-indent-hook)
+      lisp-comment-indentation)
+    (define-variable-local-value! buffer (ref-variable-object comment-start)
+      ";")
+    (define-variable-local-value! buffer (ref-variable-object comment-end)
+      "")
+    (let ((separate (string-append "^$\\|" (ref-variable page-delimiter))))
+      (define-variable-local-value! buffer
+         (ref-variable-object paragraph-start)
+       separate)
+      (define-variable-local-value! buffer
+         (ref-variable-object paragraph-separate))
+      separate)
+    (define-variable-local-value! buffer
+       (ref-variable-object paragraph-ignore-fill-prefix)
+      true)
+    (define-variable-local-value! buffer
+       (ref-variable-object indent-line-procedure)
+      (ref-command lisp-indent-line))
+    (define-variable-local-value! buffer
+       (ref-variable-object mode-line-process)
+      '(RUN-LIGHT (": " RUN-LIGHT) ""))
+    (event-distributor/invoke! (ref-variable scheme-mode-hook) buffer)))
 
 (define-variable scheme-mode-hook
   "An event distributor that is invoked when entering Scheme mode."
index 56463da8520e66b80db80364037d11fea52e3b68..a02ebda756272afd0bbf53b3769e2e365bd6e9be 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Id: sendmail.scm,v 1.15 1992/09/25 01:00:55 cph Exp $
+;;;    $Id: sendmail.scm,v 1.16 1992/11/16 22:41:16 cph Exp $
 ;;;
 ;;;    Copyright (c) 1991-92 Massachusetts Institute of Technology
 ;;;
@@ -242,19 +242,19 @@ C-c C-f  move to a header field (and create it if there isn't):
 C-c C-w  mail-signature (insert ~/.signature at end).
 C-c C-y  mail-yank-original (insert current message, in Rmail).
 C-c C-q  mail-fill-yanked-message (fill what was yanked)."
-  (local-set-variable!
-   paragraph-start
-   (string-append "^"
-                 (re-quote-string (ref-variable mail-header-separator))
-                 "$\\|^[ \t]*[-_][-_][-_]+$\\|"
-                 (ref-variable paragraph-start)))
-  (local-set-variable!
-   paragraph-separate
-   (string-append "^"
-                 (re-quote-string (ref-variable mail-header-separator))
-                 "$\\|^[ \t]*[-_][-_][-_]+$\\|"
-                 (ref-variable paragraph-separate)))
-  (event-distributor/invoke! (ref-variable mail-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object paragraph-start)
+      (string-append "^"
+                    (re-quote-string (ref-variable mail-header-separator))
+                    "$\\|^[ \t]*[-_][-_][-_]+$\\|"
+                    (ref-variable paragraph-start)))
+    (define-variable-local-value! buffer
+       (ref-variable-object paragraph-separate)
+      (string-append "^"
+                    (re-quote-string (ref-variable mail-header-separator))
+                    "$\\|^[ \t]*[-_][-_][-_]+$\\|"
+                    (ref-variable paragraph-separate)))
+    (event-distributor/invoke! (ref-variable mail-mode-hook) buffer)))
 
 (define-variable mail-mode-hook
   "An event distributor that is invoked when entering Mail mode."
index e7cfc89fc2afe617b883dc831ae377a8223f2950..87d164899c15bc82a39a15d06cb010bec370bb9b 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/shell.scm,v 1.9 1992/02/04 04:04:10 cph Exp $
+$Id: shell.scm,v 1.10 1992/11/16 22:41:17 cph Exp $
 
 Copyright (c) 1991-92 Massachusetts Institute of Technology
 
@@ -80,11 +80,18 @@ shell-mode-hook (in that order).
 
 Variables shell-cd-regexp, shell-pushd-regexp and shell-popd-regexp are used
 to match their respective commands."
-  (set-variable! comint-prompt-regexp (ref-variable shell-prompt-pattern))
-  (set-variable! comint-input-sentinel shell-directory-tracker)
-  (local-set-variable! shell-dirstack '())
-  (local-set-variable! shell-dirtrack? true)
-  (event-distributor/invoke! (ref-variable shell-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer
+       (ref-variable-object comint-prompt-regexp)
+      (ref-variable shell-prompt-pattern))
+    (define-variable-local-value! buffer
+       (ref-variable-object comint-input-sentinel)
+      shell-directory-tracker)
+    (define-variable-local-value! buffer (ref-variable-object shell-dirstack)
+      '())
+    (define-variable-local-value! buffer (ref-variable-object shell-dirtrack?)
+      true)
+    (event-distributor/invoke! (ref-variable shell-mode-hook))))
 
 (define-variable shell-mode-hook
   "An event distributor that is invoked when entering Shell mode."
index 059e358e7d1f8c12bb969167449b2c8607211d94..09dc58b19ef27e5bf70e7d935d33a5fda1886ba8 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: telnet.scm,v 1.6 1992/10/26 22:37:03 cph Exp $
+$Id: telnet.scm,v 1.7 1992/11/16 22:41:18 cph Exp $
 
 Copyright (c) 1991-92 Massachusetts Institute of Technology
 
@@ -50,10 +50,12 @@ Return before end of process output copies rest of line to end (skipping
 
 Customization: Entry to this mode runs the hooks on comint-mode-hook
 and telnet-mode-hook, in that order."
-  (set-variable! comint-prompt-regexp
-                (or (ref-variable telnet-prompt-pattern)
-                    (ref-variable shell-prompt-pattern)))
-  (event-distributor/invoke! (ref-variable telnet-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer
+       (ref-variable-object comint-prompt-regexp)
+      (or (ref-variable telnet-prompt-pattern)
+         (ref-variable shell-prompt-pattern)))
+    (event-distributor/invoke! (ref-variable telnet-mode-hook) buffer)))
 
 (define-key 'telnet #\C-m 'telnet-send-input)
 (define-key 'telnet '(#\C-c #\C-c) 'telnet-self-send)
index ae43d20ebcbe0dcb1c8157683ec6d9c79362c2ba..d60a9d2d47cf84bf7b72963e5e66a086a9a17188 100644 (file)
@@ -1,6 +1,6 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/texcom.scm,v 1.35 1992/02/04 03:37:17 cph Exp $
+;;;    $Id: texcom.scm,v 1.36 1992/11/16 22:41:19 cph Exp $
 ;;;
 ;;;    Copyright (c) 1986, 1989-92 Massachusetts Institute of Technology
 ;;;
 \f
 (define-major-mode text fundamental "Text"
   "Major mode for editing english text."
-  (local-set-variable! syntax-table text-mode:syntax-table)
-  (event-distributor/invoke! (ref-variable text-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object syntax-table)
+      text-mode:syntax-table)
+    (event-distributor/invoke! (ref-variable text-mode-hook) buffer)))
 
 (define-key 'text #\m-s 'center-line)
 
 
 (define-major-mode indented-text text "Indented-Text"
   "Like Text mode, but indents each line under previous non-blank line."
-  (local-set-variable! indent-line-procedure (ref-command indent-relative)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer
+       (ref-variable-object indent-line-procedure)
+      (ref-command indent-relative))))
 
 (define-command indented-text-mode
   "Make the current mode be Indented Text mode."
index f1b889b85467b6060bd5633596366acce944ee68..84d774c5f1a48f21ca1909e0478b6795b54d6691 100644 (file)
@@ -1,8 +1,8 @@
 ;;; -*-Scheme-*-
 ;;;
-;;;    $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/tximod.scm,v 1.16 1991/10/03 21:30:47 cph Exp $
+;;;    $Id: tximod.scm,v 1.17 1992/11/16 22:41:21 cph Exp $
 ;;;
-;;;    Copyright (c) 1987-91 Massachusetts Institute of Technology
+;;;    Copyright (c) 1987-92 Massachusetts Institute of Technology
 ;;;
 ;;;    This material was developed by the Scheme project at the
 ;;;    Massachusetts Institute of Technology, Department of
@@ -66,20 +66,26 @@ set up so expression commands skip Texinfo bracket groups.
   In addition, Texinfo mode provides commands that insert various
 frequently used @-sign commands into the buffer.  You can use these
 commands to save keystrokes."
-  (local-set-variable! syntax-table texinfo-mode:syntax-table)
-  (local-set-variable! fill-column 72)
-  (local-set-variable! require-final-newline true)
-  (local-set-variable! indent-tabs-mode false)
-  (local-set-variable!
-   page-delimiter
-   "^@\\(chapter\\|unnumbered \\|appendix \\|majorheading\\|chapheading\\)")
-  (local-set-variable! paragraph-start
-                      (string-append "^\b\\|^@[a-zA-Z]*[ \n]\\|"
-                                     (ref-variable paragraph-start)))
-  (local-set-variable! paragraph-separate
-                      (string-append "^\b\\|^@[a-zA-Z]*[ \n]\\|"
-                                     (ref-variable paragraph-separate)))
-  (event-distributor/invoke! (ref-variable texinfo-mode-hook)))
+  (lambda (buffer)
+    (define-variable-local-value! buffer (ref-variable-object syntax-table)
+      texinfo-mode:syntax-table)
+    (define-variable-local-value! buffer (ref-variable-object fill-column) 72)
+    (define-variable-local-value! buffer
+       (ref-variable-object require-final-newline)
+      true)
+    (define-variable-local-value! buffer
+       (ref-variable-object indent-tabs-mode)
+      false)
+    (define-variable-local-value! buffer (ref-variable-object page-delimiter)
+      "^@\\(chapter\\|unnumbered \\|appendix \\|majorheading\\|chapheading\\)")
+    (define-variable-local-value! buffer (ref-variable-object paragraph-start)
+      (string-append "^\b\\|^@[a-zA-Z]*[ \n]\\|"
+                    (ref-variable paragraph-start)))
+    (define-variable-local-value! buffer
+       (ref-variable-object paragraph-separate)
+      (string-append "^\b\\|^@[a-zA-Z]*[ \n]\\|"
+                    (ref-variable paragraph-separate)))
+    (event-distributor/invoke! (ref-variable texinfo-mode-hook) buffer)))
 
 (define texinfo-mode:syntax-table (make-syntax-table))
 (modify-syntax-entry! texinfo-mode:syntax-table #\" " ")