Subject: Re: bug#35727: Connecting Geiser to Guile listening to a socket: No prompt found! (.guile to blame)

From: Mekeor Melire <[email-masked]>
Date: Mon, 12 Dec 2022 13:32:39 +0000

2019-05-14 06:17 [email-masked]:

> I'm getting a "No prompt found!" error when I try to connect 
> Geiser to a Guile REPL like this:
>
> 1. In a terminal, run "$ guile --listen=/tmp/guile-socket"
> 2. In Emacs, "M-x geiser-connect-local", then "guile", and 
> finally "/tmp/guile-socket"
>
> When the Guile REPL start in Emacs, I get a "No prompt found!" 
> in the echo area, and the prompt in the REPL looks like this:
>
> https://multimedialib.files.wordpress.com/2019/05/emacs-geiser-guile-repl-no-prompt-found-2019-05-13.png
>
> After trying some things out with help from str1ngs on #guix, we 
> found out that the problem is related to the ".guile" file that 
> seems to be generated by the system by default. In my case, 
> ".guile" looks like this:
>
> ##########
> (cond ((false-if-exception (resolve-interface '(ice-9 
> readline)))
>        =>
>        (lambda (module)
>          ;; Enable completion and input history at the REPL.
>          ((module-ref module 'activate-readline))))
>       (else
>        (display "Consider installing the 'guile-readline' 
>        package for
> convenient interactive line editing and input history.\n\n")))
>
>       (unless (getenv "INSIDE_EMACS")
>         (cond ((false-if-exception (resolve-interface '(ice-9 
>         colorized)))
>                =>
>                (lambda (module)
>                  ;; Enable completion and input history at the 
>                  REPL.
>                  ((module-ref module 'activate-colorized))))
>               (else
>                (display "Consider installing the 
>                'guile-colorized' package
> for a colorful Guile experience.\n\n"))))
> ##########
>
> When I remove this file and try to connect again, the "No prompt 
> found!" error disappears, and the prompt looks normal.

Does it work when you start the Guile REPL with an 
environment-variable called INSIDE_EMACS? That way, it worked fine 
for me:

#+begin_src sh
INSIDE_EMACS=true guix repl --listen=tcp:37146
#+end_src

If this works, then I'd suggest that this is not a bug but rather 
you got to know that you need to deliver that environment variable 
to guix/guile. We could then close this ticket.

Personally, I think this is only a bug in Geiser which should be 
able to parse colored prompts.