在Haskell文件中,我使用C-c C-l
运行命令inferior-haskell-load-file
,该命令旨在将当前文件加载到GHCI解释器中,但Emacs只会挂起,直到我点击C-g
。任何人都知道如何让这个工作?
2011-08-14关于五香粉的GNU Emacs 23.3.1(x86_64-pc-linux-gnu,GTK +版本2.24.5),由Debian修改
使用haskell-mode version v2.7.0
答案 0 :(得分:11)
inferior-haskell-mode根据预期的ghci提示进行一些解析。因此,如果您更改.ghci
文件中的提示,则无法检测到它。
有关详情,请参阅haskell-ghci.el设置comint-prompt-regexp
值的位置,以确定提示 的内容。
;; GHCi prompt should be of the form `ModuleName> '.
(setq comint-prompt-regexp
"^\\*?[[:upper:]][\\._[:alnum:]]*\\( \\*?[[:upper:]][\\._[:alnum:]]*\\)*> ")
如果您想保留.ghci
文件中的设置,则可以自定义此设置。
答案 1 :(得分:3)
老问题,但正如我今天遇到的那样,我想分享如何实际定制comint-prompt-regexp
,因为我必须弄明白。
此自定义将识别λ>
提示,或实际上>
之前的任何单个字符,但它不会破坏现有的正则表达式。在.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)
您可以向"\\|^.> "
添加更多点以识别更长的提示,但为了简单起见,我希望将其保持固定长度。
答案 2 :(得分:0)
我遇到类似的问题,GHCi在启动时报告某种错误,导致Emacs haskell模式无限期地等待GHCi提示(GHCi没有显示标准提示(Prelude>
),而是刚刚显示>
)。您可以尝试在外部运行GHCi,看看它是否报告任何错误。
答案 3 :(得分:0)
当我尝试将堆栈与emacs一起使用时,我收到了相同的错误消息。对我来说,将这一行添加到我的.emacs / init.el解决了这个问题:
(setq haskell-program-name "stack ghci")