From e6db3b13e0987a739d2130a891a9565d3983b0d7 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Thu, 12 Aug 1993 08:32:46 +0000 Subject: [PATCH] Use new operation, CURRENT-EXPRESSION-CONTEXT, to find out where the expression being rewritten came from. Use this contextual information to restrict the generation of definition messages so that they only occur for expressions evaluated directly in the repl buffer. --- v7/src/6001/nodefs.scm | 51 +++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/v7/src/6001/nodefs.scm b/v7/src/6001/nodefs.scm index 60b3a5a87..0d5435715 100644 --- a/v7/src/6001/nodefs.scm +++ b/v7/src/6001/nodefs.scm @@ -1,8 +1,8 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/6001/nodefs.scm,v 1.6 1992/06/01 22:03:12 cph Exp $ +$Id: nodefs.scm,v 1.7 1993/08/12 08:32:46 cph Exp $ -Copyright (c) 1991-92 Massachusetts Institute of Technology +Copyright (c) 1991-93 Massachusetts Institute of Technology This material was developed by the Scheme project at the Massachusetts Institute of Technology, Department of Electrical Engineering and @@ -41,31 +41,42 @@ MIT in each case. |# (set! hook/repl-eval student/repl-eval) unspecific) -(define (student/repl-eval s-expression environment syntax-table) - (let ((scode (rewrite-scode (syntax s-expression syntax-table)))) +(define (student/repl-eval repl s-expression environment syntax-table) + (let ((scode + (rewrite-scode (syntax s-expression syntax-table) + (and repl + (let ((port (cmdl/port repl))) + (let ((operation + (port/operation + port + 'CURRENT-EXPRESSION-CONTEXT))) + (and operation + (operation port s-expression)))))))) (with-new-history (lambda () (extended-scode-eval scode environment))))) -(define (rewrite-scode expression) +(define (rewrite-scode expression context) (let ((expression (if (open-block? expression) (open-block-components expression unscan-defines) expression))) (check-for-illegal-definitions expression) - (make-sequence - (map (lambda (expression) - (if (definition? expression) - (let ((name (definition-name expression)) - (value (definition-value expression))) - (make-sequence - (list expression - (make-combination - write-definition-value - (cons name - (if (unassigned-reference-trap? value) - '() - (list (make-variable name)))))))) - expression)) - (sequence-actions expression))))) + (if (eq? context 'REPL-BUFFER) + (make-sequence + (map (lambda (expression) + (if (definition? expression) + (let ((name (definition-name expression)) + (value (definition-value expression))) + (make-sequence + (list expression + (make-combination + write-definition-value + (cons name + (if (unassigned-reference-trap? value) + '() + (list (make-variable name)))))))) + expression)) + (sequence-actions expression))) + expression))) (define (write-definition-value name #!optional value) (let ((port (nearest-cmdl/port))) -- 2.25.1