Make do with a single connection
commite070d76166d249695f1d2ee0269cc5c91537e0c9
authorJose Antonio Ortega Ruiz <jao@gnu.org>
Fri, 12 Nov 2010 21:55:40 +0000 (12 22:55 +0100)
committerJose Antonio Ortega Ruiz <jao@gnu.org>
Fri, 12 Nov 2010 22:21:02 +0000 (12 23:21 +0100)
treec76f2a0d251f834f3d4cb4f59f472eac5054c631
parentc4287cdbb796507575a71a2bfc589f0f107f436f
Make do with a single connection

Separate connections for the REPL and Geiser commands was kind of
neat, but it had the problem of synchronising the current namespace
for both connections. A quick fix would have been to ask the scheme
for the current namespace for every Geiser command in the REPL, but
that, besides clunky, would add potentially prohibitive overhead for
(real) remote connections.

As it happens, using a single connection turned out to be not that
difficult and relatively clean code-wise. We could even turn back to
not use inferior schemes, and the net result of this refactoring would
be the replacement of comint-redirect (which wasn't able to match the
whole EOT token if it didn't arrive all at once) by transaction queues
(which also makes geiser-connection's implementation cleaner).

But using an inferior scheme has a dog-food value, and allows external
processes to connect to the scheme being used by Geiser without
further ado, which could be useful for debugging (although this is a
lame excuse: nothing prevents you from starting a REPL server from
emacs if you want). We'll see.
elisp/geiser-connection.el
elisp/geiser-guile.el
elisp/geiser-racket.el
elisp/geiser-repl.el
scheme/guile/geiser/evaluation.scm
scheme/racket/geiser/eval.rkt