GNU bug report logs -
#13077
guile: add repl-option for customized print
Previous Next
Reported by: Daniel Hartwig <mandyke <at> gmail.com>
Date: Tue, 4 Dec 2012 03:50:02 UTC
Severity: wishlist
Tags: patch
Done: ludo <at> gnu.org (Ludovic Courtès)
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Hi Daniel!
I believe this patch simplified my work, and 'colorized' module has been
finished, I'm testing and debugging.
I'll post it when it's all done.
Thanks!
On Tue, 2012-12-04 at 11:46 +0800, Daniel Hartwig wrote:
> Package: guile
> Severity: wishlist
> Tags: patch
> X-Debbugs-CC: nalaginrut <nalaginrut <at> gmail.com>
>
> Dear maintainer
>
> The attached patch adds a new repl-option to set a custom print
> procedure.
>
> --
> scheme@(guile-user)> (use-modules (srfi srfi-1))
> scheme@(guile-user)> (iota 20)
> $1 = (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19)
> scheme@(guile-user)> (define (repl-print* repl val)
> (if (not (eq? val *unspecified*))
> (begin
> (run-hook before-print-hook val)
> (format #t "~20 <at> y" val)
> (newline))))
> scheme@(guile-user)> (use-modules (system repl common))
> scheme@(guile-user)> (repl-option-set! (car (fluid-ref *repl-stack*)) 'print repl-print*)
> scheme@(guile-user)> (iota 20)
> $2 = (0 1 2 3 4 5 6 7 …)
> differences between files attachment
> (0001-repl-add-repl-option-for-customized-print.patch)
> From b0cadcb69a12a4ed2a205f4854af41bf926da20b Mon Sep 17 00:00:00 2001
> From: Daniel Hartwig <mandyke <at> gmail.com>
> Date: Tue, 4 Dec 2012 11:41:35 +0800
> Subject: [PATCH] repl: add repl-option for customized print
>
> * module/system/repl/common.scm (repl-default-options)
> (repl-print): Add option to use customized print procedure.
> * doc/ref/scheme-using.texi (REPL Commands): Update.
> ---
> doc/ref/scheme-using.texi | 4 ++++
> module/system/repl/common.scm | 26 +++++++++++++++++---------
> 2 files changed, 21 insertions(+), 9 deletions(-)
>
> diff --git a/doc/ref/scheme-using.texi b/doc/ref/scheme-using.texi
> index 7eb84de..4f9e6db 100644
> --- a/doc/ref/scheme-using.texi
> +++ b/doc/ref/scheme-using.texi
> @@ -445,6 +445,10 @@ choice is available. Off by default (indicating compilation).
> @item prompt
> A customized REPL prompt. @code{#f} by default, indicating the default
> prompt.
> +@item print
> +A procedure of two arguments used to print the result of evaluating each
> +expression. The arguments are the current REPL and the value to print.
> +By default, @code{#f}, to use the default procedure.
> @item value-history
> Whether value history is on or not. @xref{Value History}.
> @item on-error
> diff --git a/module/system/repl/common.scm b/module/system/repl/common.scm
> index 346ba99..fd41b09 100644
> --- a/module/system/repl/common.scm
> +++ b/module/system/repl/common.scm
> @@ -119,6 +119,11 @@ See <http://www.gnu.org/licenses/lgpl.html>, for more details.")
> ((thunk? prompt) (lambda (repl) (prompt)))
> ((procedure? prompt) prompt)
> (else (error "Invalid prompt" prompt)))))
> + (print #f ,(lambda (print)
> + (cond
> + ((not print) #f)
> + ((procedure? print) print)
> + (else (error "Invalid print procedure" print)))))
> (value-history
> ,(value-history-enabled?)
> ,(lambda (x)
> @@ -206,15 +211,18 @@ See <http://www.gnu.org/licenses/lgpl.html>, for more details.")
> (% (thunk))))
>
> (define (repl-print repl val)
> - (if (not (eq? val *unspecified*))
> - (begin
> - (run-hook before-print-hook val)
> - ;; The result of an evaluation is representable in scheme, and
> - ;; should be printed with the generic printer, `write'. The
> - ;; language-printer is something else: it prints expressions of
> - ;; a given language, not the result of evaluation.
> - (write val)
> - (newline))))
> + (cond
> + ((repl-option-ref repl 'print)
> + => (lambda (print) (print repl val)))
> + ((not (eq? val *unspecified*))
> + (begin
> + (run-hook before-print-hook val)
> + ;; The result of an evaluation is representable in scheme, and
> + ;; should be printed with the generic printer, `write'. The
> + ;; language-printer is something else: it prints expressions of
> + ;; a given language, not the result of evaluation.
> + (write val)
> + (newline)))))
>
> (define (repl-option-ref repl key)
> (cadr (or (assq key (repl-options repl))
This bug report was last modified 12 years and 225 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.