From: Chris Hanson Date: Mon, 16 Nov 1992 22:41:21 +0000 (+0000) Subject: Change MODE-INITIALIZATION (for both major and minor modes) to accept X-Git-Tag: 20090517-FFI~8766 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=177f50dfe3c12bfe4a0619ce607fe48840e1200a;p=mit-scheme.git Change MODE-INITIALIZATION (for both major and minor modes) to accept 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. --- diff --git a/v7/src/edwin/buffer.scm b/v7/src/edwin/buffer.scm index cb73d78ef..c7b75b51e 100644 --- a/v7/src/edwin/buffer.scm +++ b/v7/src/edwin/buffer.scm @@ -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))) @@ -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) diff --git a/v7/src/edwin/bufmnu.scm b/v7/src/edwin/bufmnu.scm index 4698a0551..6ba510692 100644 --- a/v7/src/edwin/bufmnu.scm +++ b/v7/src/edwin/bufmnu.scm @@ -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." diff --git a/v7/src/edwin/c-mode.scm b/v7/src/edwin/c-mode.scm index 0d1ecaba4..891c27bc4 100644 --- a/v7/src/edwin/c-mode.scm +++ b/v7/src/edwin/c-mode.scm @@ -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))) (define-variable c-mode-hook "An event distributor that is invoked when entering C mode." diff --git a/v7/src/edwin/comint.scm b/v7/src/edwin/comint.scm index 98afd27d1..a234f1b6a 100644 --- a/v7/src/edwin/comint.scm +++ b/v7/src/edwin/comint.scm @@ -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." diff --git a/v7/src/edwin/compile.scm b/v7/src/edwin/compile.scm index e6e0065a4..16ea7e6ad 100644 --- a/v7/src/edwin/compile.scm +++ b/v7/src/edwin/compile.scm @@ -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 diff --git a/v7/src/edwin/dired.scm b/v7/src/edwin/dired.scm index 6b0f8fdd5..fd019cabd 100644 --- a/v7/src/edwin/dired.scm +++ b/v7/src/edwin/dired.scm @@ -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." diff --git a/v7/src/edwin/evlcom.scm b/v7/src/edwin/evlcom.scm index 0a8494c2e..f3ddf59a2 100644 --- a/v7/src/edwin/evlcom.scm +++ b/v7/src/edwin/evlcom.scm @@ -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 diff --git a/v7/src/edwin/filcom.scm b/v7/src/edwin/filcom.scm index 22edfb4f3..9b1d93512 100644 --- a/v7/src/edwin/filcom.scm +++ b/v7/src/edwin/filcom.scm @@ -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)))))) (define (find-file-revert buffer) (if (not (verify-visited-file-modification-time? buffer)) diff --git a/v7/src/edwin/fileio.scm b/v7/src/edwin/fileio.scm index 340516359..00973e709 100644 --- a/v7/src/edwin/fileio.scm +++ b/v7/src/edwin/fileio.scm @@ -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)))) diff --git a/v7/src/edwin/info.scm b/v7/src/edwin/info.scm index 7f0f7bf30..8478488c7 100644 --- a/v7/src/edwin/info.scm +++ b/v7/src/edwin/info.scm @@ -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) "")))) ;;;; 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 "^\f\\|" - (ref-variable page-delimiter)))) + (lambda (buffer) + (define-variable-local-value! buffer (ref-variable-object page-delimiter) + (string-append "^\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) "")))) (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))) diff --git a/v7/src/edwin/intmod.scm b/v7/src/edwin/intmod.scm index 5b4d1081e..25d301fd0 100644 --- a/v7/src/edwin/intmod.scm +++ b/v7/src/edwin/intmod.scm @@ -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) - + (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." diff --git a/v7/src/edwin/macros.scm b/v7/src/edwin/macros.scm index f24d7728d..d7c686ded 100644 --- a/v7/src/edwin/macros.scm +++ b/v7/src/edwin/macros.scm @@ -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 ;;; @@ -188,7 +188,8 @@ (symbol-append 'EDWIN-VARIABLE$ name)) (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)))) @@ -200,20 +201,24 @@ `(->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 @@ -221,10 +226,10 @@ ',(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) diff --git a/v7/src/edwin/midas.scm b/v7/src/edwin/midas.scm index 48de454e9..aef6dafa1 100644 --- a/v7/src/edwin/midas.scm +++ b/v7/src/edwin/midas.scm @@ -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 @@ -54,16 +54,30 @@ (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 #\; "< ") diff --git a/v7/src/edwin/pasmod.scm b/v7/src/edwin/pasmod.scm index 035b78852..31d4f13d0 100644 --- a/v7/src/edwin/pasmod.scm +++ b/v7/src/edwin/pasmod.scm @@ -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 @@ -54,17 +54,33 @@ (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 ") diff --git a/v7/src/edwin/rmail.scm b/v7/src/edwin/rmail.scm index c1d438d30..b5b2d15bf 100644 --- a/v7/src/edwin/rmail.scm +++ b/v7/src/edwin/rmail.scm @@ -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)) diff --git a/v7/src/edwin/rmailsum.scm b/v7/src/edwin/rmailsum.scm index ea2729dd0..8f5fb2411 100644 --- a/v7/src/edwin/rmailsum.scm +++ b/v7/src/edwin/rmailsum.scm @@ -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 @@ (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) diff --git a/v7/src/edwin/schmod.scm b/v7/src/edwin/schmod.scm index c60cd41eb..a759eac3b 100644 --- a/v7/src/edwin/schmod.scm +++ b/v7/src/edwin/schmod.scm @@ -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." diff --git a/v7/src/edwin/sendmail.scm b/v7/src/edwin/sendmail.scm index 56463da85..a02ebda75 100644 --- a/v7/src/edwin/sendmail.scm +++ b/v7/src/edwin/sendmail.scm @@ -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." diff --git a/v7/src/edwin/shell.scm b/v7/src/edwin/shell.scm index e7cfc89fc..87d164899 100644 --- a/v7/src/edwin/shell.scm +++ b/v7/src/edwin/shell.scm @@ -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." diff --git a/v7/src/edwin/telnet.scm b/v7/src/edwin/telnet.scm index 059e358e7..09dc58b19 100644 --- a/v7/src/edwin/telnet.scm +++ b/v7/src/edwin/telnet.scm @@ -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) diff --git a/v7/src/edwin/texcom.scm b/v7/src/edwin/texcom.scm index ae43d20eb..d60a9d2d4 100644 --- a/v7/src/edwin/texcom.scm +++ b/v7/src/edwin/texcom.scm @@ -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 ;;; @@ -48,8 +48,10 @@ (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) @@ -77,7 +79,10 @@ (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." diff --git a/v7/src/edwin/tximod.scm b/v7/src/edwin/tximod.scm index f1b889b85..84d774c5f 100644 --- a/v7/src/edwin/tximod.scm +++ b/v7/src/edwin/tximod.scm @@ -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 "^\\|^@[a-zA-Z]*[ \n]\\|" - (ref-variable paragraph-start))) - (local-set-variable! paragraph-separate - (string-append "^\\|^@[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 "^\\|^@[a-zA-Z]*[ \n]\\|" + (ref-variable paragraph-start))) + (define-variable-local-value! buffer + (ref-variable-object paragraph-separate) + (string-append "^\\|^@[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 #\" " ")