This is the mail archive of the
guile-emacs@sourceware.cygnus.com
mailing list for the Guile project.
Re: New module (emacs io)
- To: Keisuke Nishida <kxn30 at po dot cwru dot edu>
- Subject: Re: New module (emacs io)
- From: Kalle Olavi Niemitalo <tosi at stekt dot oulu dot fi>
- Date: 27 Mar 2000 17:39:25 +0300
- Cc: guile-emacs at sourceware dot cygnus dot com
- References: <87ln3agfsl.fsf@PC486.Niemitalo.LAN> <m3g0tdblek.fsf@kei.cwru.edu>
Keisuke Nishida <kxn30@po.cwru.edu> writes:
> I think it is not necessary but this module should be optional;
> the user should be able to choose whether or not to use it.
Do you mean the default output port should be `emacs-port' in
modules which use (emacs io), and stdout in others? I don't know
how that could be done.
In the current Guile Emacs, the (emacs io) module is loaded when
it is first used, and at that moment the default ports change in
all modules. This is quite bad. I see two ways around it:
a) Always load (emacs io), and do that as early as possible.
Then there won't be a sudden change later.
b) Do not change ports when loading (emacs io). Anything that
wants to read or write through Emacs, must do something like:
(use-modules (emacs io))
(with-output-to-port emacs-port
(lambda ()
(display "This goes to Emacs.")
(newline)))
Which alternative do you prefer?
> (I sometimes used display to the terminal for debugging...)
You could do that even if (emacs io) were always loaded:
(use-modules (emacs io))
(with-output-to-port terminal-output-port
(lambda ()
(let ((esc (string #\esc)))
(display (string-append esc "[32m"
"This goes straight to the terminal."
esc "[m")))))
> We will turn this to the default some time later on.
I think it would be easier to do that now.