I don't really have anything helpful to add, except that I believe geiser doesn't work the way SLIME or LSP does, where there's some process parsing a project with semantic awareness. Instead it just launches guile (or some other repl) and parses the prompt string. As far as I know it is really just sending text back and forth between a scheme-mode buffer and a runing repl.
The load path has to be set for each project because the guile repl
isn't aware of any project structure that a particular file is a part
of. It is simply going to parse whatever text it's sent within the
context of whatever %load-path it was initialized with. That %load-path
can either be set with the GUILE_LOAD_PATH env variable or by
geiser-guile-load-path which affects how geiser launches guile.
The way I handle this is by making sure that
${HOME}/.config/guix/current/share/guile/site/3.0 is in my
GUILE_LOAD_PATH so that whatever channels I've pulled in the current
profile are included in any guile repl I start. This gets around needing
to have the guix source cloned down somewhere else. When I'm working on
my configuration files, I have a toplevel script which updates the
%load-path:
```
(when (current-filename)
(add-to-load-path
(dirname (current-filename))))
```
So when I load that file into the repl with C-c C-l all the subsequent
use-modules work.
On 2022-11-10 19:44, jgart wrote:
> On Thu, 10 Nov 2022 19:35:27 -0600 jgart <[email protected]> wrote:
>
>> (with-eval-after-load 'geiser-guile
>> (add-to-list 'geiser-guile-load-path "~/guix"))
>
> Also, why does geiser want you to set up the load path manually for every
> project?
>
> I'd like for the experience to be more like a language server/eglot where I
> just enter the guile project and xref just works if the mode is turned on.
>
> Why is this not possible with geiser currently?
>
>
--
Best regards,
Jake Shilling
signature.asc
Description: PGP signature
