;;; -*-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
;;;
alist
local-bindings
local-bindings-installed?
- initializations
auto-save-pathname
auto-saved?
save-length
(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
(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)))
(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)))
(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)))
(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)
;;; -*-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
;;;
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."
;;; -*-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
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."
#| -*-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
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."
;;; -*-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
;;;
(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
;;; -*-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
;;;
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."
;;; -*-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
;;;
(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
;;; -*-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
;;;
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)))))))
;; 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)))
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))
;;; -*-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
;;;
(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))))
;;; -*-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
;;;
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)
(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
"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)
(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)))
(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)))
(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)))
;;; -*-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
;;;
(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)))
\\[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."
(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,
\\[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."
;;; -*-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)
;;; -*-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 #\; "< ")
;;; -*-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 ")
;;; -*-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
;;;
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.
babyl-header-start-regexp
"\\|^[\037]?"
babyl-message-start-regexp
- "\\)"))))
+ "\\)")))
+ unspecific)
(define (parse-file-inboxes buffer)
(let ((start (buffer-start buffer))
;;; -*-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
;;;
\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
(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)
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)
;;; -*-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
;;;
\\[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."
;;; -*-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
;;;
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."
#| -*-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
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."
#| -*-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
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)
;;; -*-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."
;;; -*-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
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 #\" " ")