This is the mail archive of the guile@cygnus.com mailing list for the guile project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Jim Blandy writes:
> What's Guile's failure mode? Does it crash, or just not give you
> command-line editing? The latter would be acceptable; Guile requires
> recent readlines. The former would be a bug.
If you type "readline" at a guile prompt, it just says unbound variable
and doesn't crash. If you invoke guile as part of a script (using -s),
and then do (define-module (blah) :use-module (ice-9 readline)), the
unbound variable error causes guile to exit. I believe the particular
error occurs on line 106, where the code attempts to bind `%readline' to
`readline'.
For thud, I use the following hacky workaround:
(define thud-readline-defined? (defined? 'readline)) ; outside module
(define-module (thud readline-proxy)
:use-module (thud com))
(if thud-readline-defined?
(use-modules (ice-9 readline))
(begin
(say ";;; WARNING (Not using GNU readline, faking it.)")
(define fake-readline-prompt #f)
(define (set-readline-prompt! s) (set! fake-readline-prompt s))
(define (readline)
(display fake-readline-prompt)
(force-output)
(read-delimited "\n"))
(define (add-history ignore) #f)))
(export set-readline-prompt!
readline
add-history)
Then I use do (define-module (blah) :use-module (thud readline-proxy)),
which guarantees me un-exceptional access to the exported variables that
(ice-9 readline) doesn't. I think the proper resolution is to move this
kind of safety check into (ice-9 readline) -- but it's still gross.
thi