I was poking around, learning how sessions are started. Basically, `shell`
creates the comint buffer using `make-comint-in-buffer`. What I find
interesting is that `make-comint-in-buffer` can also create a comint buffer
from a network stream:
(let ((buff "*localhost-process-buffer*"))
(switch-to-buffer
(make-comint-in-buffer
"localhost-process"
buff
"ssh"
nil
(format "%s@localhost" (getenv "USER")))))
So, rather than start a comint and then ssh from there, it's possible to let
Emacs start the subprocess, manage the ssh connection, and just read that.
Emacs makes a buffer from a network stream by calling start-process` using
`shell-file-name`. `org-babel-shell-initialize` closes around
`shell-file-name` with whatever shell language is used. Therefore, we could
provide header arguments to pass parameters and the destination to ssh.
I haven't made a judgment yet about whether any of this is good or bad. I
thought it was interesting and figured I'd share.