One of my friends is getting into deep emacs! They were talking about
learning elisp since it underlies everything else you do on emacs. My
commentary was that you would study elisp if you intended to write or
customise your own modes, and you would use eshell as your shell all
the time as well. I assumed that had been a discouraging blandishment,
but lo they reappeared in com talking about how eshell was a bit weird
for com since anything you type appears twice. I had to get into this.

$ emacsclient -c -a ""

C-x C-f /ssh:[email protected]:~/

M-x eshell

It begins! The point of eshell is that you are not directly writing in
a shell. So it's exactly not like sshing in and writing in korn shell,
to the extent a tramp shell (M-x shell) would be like that, which it
also isn't. Instead you are evaluating elisp. Strings that are printed
or returned are sent to the tramped shell (which is ksh in my
case). The shell is powerful enough for com out of the box. so

/ssh:[email protected]:/sdf/arpa/ns/s/screwtape/gopher/screwtape
$ "date" Sat Nov 12 23:33:49 2022
/ssh:[email protected]:/sdf/arpa/ns/s/screwtape/gopher/screwtape $

but also

$ (prog1 "" (dotimes (s 3) (print "date"))) M-x eval-print-last-sexp
C-g


"date"

"date"

"date"

""

Sun Nov 13 00:01:18 2022
Sun Nov 13 00:01:18 2022
Sun Nov 13 00:01:18 2022


I'm not sure of the deeper meaning of C-g there. And I would have to
bind my own key for eval-print-last-sexp (sexp in this case is an
elisp s expression) I do (prog1 "" .. ) so that the actual return is
an empty string (= pressing enter twice in the shell but not doing
anything else).

This had been on my mind regarding how to drive com remotely. A
fortnight ago I had more or less settled on this:

$ rlwrap ssh [email protected] 'ecl'
> (ext:system "tmux new-session -s COM -d")
> (ext:run-program "tmux" `("capture-pane" "-t0" "-p") :output t)
> (ext:run-program "tmux" `("send-keys" "'date'" "C-m"))

etc but with macros and functions

So that I'm inside a lisp repl on (arpa) SDF, driving a headless COM
chat also on SDF. I guess there is no reason to use non-portable ecl
extensions, so maybe that should be changed to (require 'asdf) 's
#'uiop:run-program for syncronous shellery.

Our elisp approach one brings all of emacs (tramp, dired, eshell) to
bear, while approach two uses just ssh (from here) + ecl (there) +
tmux (there) or some such permutation for a common lisp repl. For slow
connections the ecl repl environment is faster than tramping, since
tramp-mode makes a number of connections for its whimsical tramped
(e)shell which becomes quite slow, though what happens on your
workstation is very fast somewhat analogously to rlwrap.