From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kalle Olavi Niemitalo To: Keisuke Nishida Cc: guile-emacs@sourceware.cygnus.com Subject: Re: New module (emacs io) Date: Mon, 27 Mar 2000 09:08:00 -0000 Message-id: <87k8ioxysi.fsf@PC486.Niemitalo.LAN> References: <87ln3agfsl.fsf@PC486.Niemitalo.LAN> X-SW-Source: 2000-q1/msg00059.html Keisuke Nishida 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.