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 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