Ihor Radchenko <yanta...@posteo.net> writes:

> Hunter Jozwiak <hunter.t....@gmail.com> 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?

Attachment: signature.asc
Description: PGP signature

Reply via email to