When in a Haskell file, I use C-c C-l
to run the command inferior-haskell-load-file
which is intended to load the current file into the GHCI interprete
I got the same error message when I tried to use stack with emacs. For me, adding this line to my .emacs/init.el resolved the problem:
(setq haskell-program-name "stack ghci")
inferior-haskell-mode does some parsing based upon the expected ghci prompt. As such, if you change the prompt in a .ghci
file, then it can't detect it.
For more information, see where haskell-ghci.el sets the comint-prompt-regexp
value to determine what a prompt is.
;; GHCi prompt should be of the form `ModuleName> '.
(setq comint-prompt-regexp
"^\\*?[[:upper:]][\\._[:alnum:]]*\\( \\*?[[:upper:]][\\._[:alnum:]]*\\)*> ")
If you want to keep the setting in your .ghci
file, then it may be possible to customise this settings.
I had a similar problem caused by GHCi reporting some kind of error on startup, causing the Emacs haskell mode to wait for the GHCi prompt indefinitely (GHCi didn't show the standard prompt (Prelude>
), but rather just showed >
). You can try running GHCi externally and see if it reports any errors.
Old question, but as I just ran into this today, I wanted to share how to actually customize comint-prompt-regexp
since I had to figure it out.
This customization will recognize λ>
prompts, or actually any single character before >
), but it doesn't break the existing regex. In your .emacs
:
(load-library "inf-haskell")
(defun my-inf-haskell-hook ()
(setq comint-prompt-regexp
(concat comint-prompt-regexp "\\|^.> ")))
(add-to-list 'inferior-haskell-mode-hook 'my-inf-haskell-hook)
You can add more dots to "\\|^.> "
to recognize a longer prompt, but I wanted to keep it fixed-length for simplicity.