Ihor Radchenko writes: > Hunter Jozwiak writes: > >> Here is a patch that provides this functionality. > > Thank you! > >> Subject: [PATCH] org-mode: allow ob-scheme to accept a remote connection. >> >> * lisp/org/ob-scheme.el (org-babel-scheme-get-repl): introduce two >> optional variables host and port. If there are not given, just run > ^^^^^^^^^ arguments > >> * lisp/org/ob-scheme (org-babel-scheme-execute-with-geiser, >> org-babel-execute:scheme): take these optional arguments into >> account. > > ... and add two new optional arguments. > >> @@ -231,6 +235,8 @@ org-babel-execute:scheme >> geiser-scheme-implementation >> geiser-default-implementation >> (car geiser-active-implementations))) >> + (host (cdr (assq :host params))) >> + (port (cdr (assq :port params))) > > Please declare these new scheme-specific header argument in > `org-babel-header-args:scheme'. > See `org-babel-header-args:C' for an example. > This is necessary for header argument completion to work. > Okay. Is there a way to tighten these inputs further? I have them set to :any for the moment, but I wonder if there is a way to leverage the values for `geiser-repl-default-host` and `geiser-repl-default-port`. > Also, please document the new header argument in the ob-scheme > documentation at > https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-scheme.html > (you can submit a patch against > https://git.sr.ht/~bzg/worg/tree/master/item/org-contrib/babel/languages/ob-doc-scheme.org ) > Sure thing; I can do that after I finish this message. >> - (and (not (string= session "none")) session)))) ; session >> + (and (not (string= session "none")) session) host port))) ; session > > This does not look right. Your change will disable session support > completely when host and port are not provided. Is there a way to test this and pinpoint the problem? I'm not familiar with using :sessions. Here is what I tested so far: #+begin_example #+begin_src scheme :scheme guile :host localhost :port 37146 :session *image* (use-modules (gnu) (guix) (guix gexp)) #+end_src #+begin_src scheme :host localhost :port 37146 :session *image* (use-service-modules sound) (use-package-modules linux) #+end_src #+begin_src scheme :scheme guile :session *other* (use-srfis '(26)) #+end_src #+end_example This particular test gave me two REPLS. In the =*image*= REPL, I have access to the packages and services I would need to build part of the current project I am working on. The other REPL gives me access to the `cut` and `cute` macros, and there isn't any plution between the two. Is there something else I'm missing here?