From: Chris Hanson Date: Tue, 29 Oct 1991 13:39:59 +0000 (+0000) Subject: Extend VARIABLE-LOCAL-VALUE and REF-VARIABLE to handle a mark or a X-Git-Tag: 20090517-FFI~10111 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=ce001f474580d47104ab5cf224b536da070fb4e2;p=mit-scheme.git Extend VARIABLE-LOCAL-VALUE and REF-VARIABLE to handle a mark or a group in place of a buffer argument. --- diff --git a/v7/src/edwin/buffer.scm b/v7/src/edwin/buffer.scm index 6989aca7b..c77024915 100644 --- a/v7/src/edwin/buffer.scm +++ b/v7/src/edwin/buffer.scm @@ -1,6 +1,6 @@ ;;; -*-Scheme-*- ;;; -;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/buffer.scm,v 1.146 1991/05/04 22:02:03 cph Exp $ +;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/edwin/buffer.scm,v 1.147 1991/10/29 13:39:59 cph Exp $ ;;; ;;; Copyright (c) 1986, 1989-91 Massachusetts Institute of Technology ;;; @@ -270,6 +270,12 @@ The buffer is guaranteed to be deselected at that time." ((car thunks)) (loop (cdr thunks))))) (vector-set! buffer buffer-index:initializations '())) + +(define (->buffer object) + (cond ((buffer? object) object) + ((and (mark? object) (mark-buffer object))) + ((and (group? object) (group-buffer object))) + (else (error "can't coerce to buffer:" object)))) ;;;; Modification Flags @@ -377,12 +383,13 @@ The buffer is guaranteed to be deselected at that time." (%set-variable-value! variable (cdr binding))))))))) (define (variable-local-value buffer variable) - (if (buffer-local-bindings-installed? buffer) - (variable-value variable) - (let ((binding (search-local-bindings buffer variable))) - (if binding - (cdr binding) - (variable-default-value variable))))) + (let ((buffer (->buffer buffer))) + (if (buffer-local-bindings-installed? buffer) + (variable-value variable) + (let ((binding (search-local-bindings buffer variable))) + (if binding + (cdr binding) + (variable-default-value variable)))))) (define (set-variable-local-value! buffer variable value) (if (variable-buffer-local? variable)