1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

Simple value history support.

This commit is contained in:
Keisuke Nishida 2001-03-17 15:32:17 +00:00
parent b3fcac341b
commit 870777d7c7
3 changed files with 64 additions and 7 deletions

View file

@ -1,3 +1,11 @@
2001-03-17 Keisuke Nishida <kxn30@po.cwru.edu>
* boot-9.scm (before-eval-hook, after-eval-hook,
before-print-hook, after-print-hook): New hooks.
(scm-style-repl): Call these hooks.
* history.scm: New file.
2001-03-17 Keisuke Nishida <kxn30@po.cwru.edu>
* time.scm: New file.

View file

@ -2326,6 +2326,10 @@
(define before-read-hook (make-hook))
(define after-read-hook (make-hook))
(define before-eval-hook (make-hook 1))
(define after-eval-hook (make-hook 1))
(define before-print-hook (make-hook 1))
(define after-print-hook (make-hook 1))
;;; The default repl-reader function. We may override this if we've
;;; the readline library.
@ -2402,13 +2406,17 @@
(-eval (lambda (sourc)
(repl-report-start-timing)
(start-stack 'repl-stack
;; If you change this procedure
;; (primitive-eval), please also
;; modify the repl-stack case in
;; save-stack so that stack cutting
;; continues to work.
(primitive-eval sourc))))
(run-hook before-eval-hook sourc)
(let ((val (start-stack 'repl-stack
;; If you change this procedure
;; (primitive-eval), please also
;; modify the repl-stack case in
;; save-stack so that stack cutting
;; continues to work.
(primitive-eval sourc))))
(run-hook after-eval-hook sourc)
val)))
(-print (let ((maybe-print (lambda (result)
(if (or scm-repl-print-unspecified
@ -2419,7 +2427,9 @@
(lambda (result)
(if (not scm-repl-silent)
(begin
(run-hook before-print-hook result)
(maybe-print result)
(run-hook after-print-hook result)
(if scm-repl-verbose
(repl-report))
(force-output))))))

39
ice-9/history.scm Normal file
View file

@ -0,0 +1,39 @@
;;;; Copyright (C) 2000 Free Software Foundation, Inc.
;;;;
;;;; This program is free software; you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
;;;; the Free Software Foundation; either version 2, or (at your option)
;;;; any later version.
;;;;
;;;; This program is distributed in the hope that it will be useful,
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;;; GNU General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU General Public License
;;;; along with this software; see the file COPYING. If not, write to
;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
;;;; Boston, MA 02111-1307 USA
;;;;
;;;; A simple value history support
(define-module (ice-9 history))
(define (use-value-history x)
(module-use! (current-module)
(resolve-module '(value-history))))
(define save-value-history
(let ((count 0)
(history (resolve-module '(value-history))))
(lambda (v)
(if (not (unspecified? v))
(let* ((c (1+ count))
(s (string->symbol (simple-format #f "$~A" c))))
(simple-format #t "~A = " s)
(module-define! history s v)
(set! count c))))))
(add-hook! before-eval-hook use-value-history)
(add-hook! before-print-hook save-value-history)