2011-11-01 29 views
12

當一個Haskell文件,我用C-c C-l運行其目的是將當前文件加載到GHCI解釋程序的命令inferior-haskell-load-file但Emacs的只是掛起,直到我點擊C-g。任何人都知道我可以如何讓這個工作?Emacs的掛在哈斯克爾模式與劣勢,哈斯克爾加載文件調用

GNU Emacs的23.3.1(x86_64的-PC-Linux的GNU,GTK +版2.24.5)的2011-08-14上五香粉,Debian是

改性使用的Haskell模式版本V2.7.0

+1

你有一個自定義的'.ghci'文件?這可能會干擾,特別是如果您更改提示...否則,如果使用「emacs -Q」啓動並顯式加載默認值,您是否遇到問題? – ivanm

+0

@ivanm就是這樣!請添加它作爲答案。 –

回答

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文件,則有可能自定義此設置。

+0

偉大的提示。非常感謝。你爲我節省了很多頭痛。 –

+0

我們很多人在.ghci:':set prompt「λ>」'中都有。在模式中默認包含λ會很好。 – gawi

+0

爲了接受「λ>」,我試圖修改正則表達式運氣不佳。這必須是一些非正則表達式的問題... – gawi

0

我有一個類似的問題,由於GHCi在啓動時報告了某種錯誤,導致Emacs haskell模式無限期地等待GHCi提示(GHCi未顯示標準提示(Prelude>),而只顯示>)。您可以嘗試從外部運行GHCi並查看是否報告了任何錯誤。

+0

看起來不像報告任何錯誤。什麼樣的錯誤,你具體指的是什麼? –

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) 

您可以添加更多的點來"\\|^.> "承認一個較長的提示,但我想繼續保持固定長度的簡單性。

0

當我試圖與emacs一起使用堆棧時,我收到了相同的錯誤消息。對於我來說,加入這行來我的.emacs/init.el解決了這個問題:

(setq haskell-program-name "stack ghci")