Emacs在haskell模式下挂起,带有inferior-haskell-load-file调用

时间:2011-11-01 02:10:30

标签: haskell emacs

在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

4 个答案:

答案 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")