2017-08-14 29 views
6

我可以stack build命令行的一個項目,但是當我嘗試C-c C-l在Emacs(與(custom-set-variables '(haskell-process-type 'stack-ghci)))我得到一個錯誤,所有的包我無法找到導入的模塊。在Emacs堆棧ghci中不能在命令行加載界面文件,但是`棧build`確實

/home/amcp011/bec/amcp011/accelerate/gpe/src/Numeric/GPE/Utils.hs:30:1: error: 
    Failed to load interface for ‘Data.Array.Accelerate’ 
    Locations searched: 
     Data/Array/Accelerate.hs 
     Data/Array/Accelerate.lhs 
     Data/Array/Accelerate.hsig 
     Data/Array/Accelerate.lhsig 
     /home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.hs 
     /home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.lhs 
     /home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.hsig 
     /home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.lhsig 

gpe.cabal

build-depends:  base >= 4.7 && < 5 
        , bytestring 
        , bytestring-conversion 
        , mtl 
        , time 
        , filepath 
        , directory 
        , accelerate 
        , accelerate-io 

stack.yaml

extra-deps: [accelerate-1.0.0.0 
      ,accelerate-io-1.0.0.0 
      ] 
+1

你碰巧有一個公共鏈接到這個項目?這是很難調試沒有一個例子... – Alec

+0

@Alec:https://github.com/amcphail/gpe它沒有完成,我已經上傳回應你的評論。我處於開發階段,它有助於在emacs中加載文件。 – vivian

回答

5

我能夠與stack build編譯項目(當然,安裝一些系統級的依賴性喜歡LLVM,CUDA後, fftw3等),並在emacs中使用C-c C-l加載它。

這裏是最小的Emacs配置爲我工作:

(defun haskell-mode-setup() 
    (setq haskell-process-type 'stack-ghci)) 

(add-hook 'haskell-mode-hook 'interactive-haskell-mode) 
(add-hook 'haskell-mode-hook 'haskell-mode-setup) 

的唯一途徑,我能夠複製您有與inf-haskell-mode這個問題,而不是interactive-haskell-mode,以及簡單地通過設置 (setq haskell-process-type 'ghci)。所以,emacs可能找不到stack

我建議試着讓haskell-mode知道棧的位置,以防它安裝在非常見的位置:(setq haskell-process-path-stack "/path/to/stack")

或者,我已經解決了過去與$PATH環境變量相關的一些問題,這些問題與當前用戶設置的環境變量不同,而是系統範圍內使用的環境變量。只需安裝exec-path-from-shell emacs包並將(exec-path-from-shell-initialize)添加到~/.emacs即可。另外,如果你還沒有完成它,檢查haskell模式日誌可能證明是有用的。將(setq haskell-process-log t)添加到haskell-mode-setup,這將導致帶有日誌的額外緩衝區。

注:

  • 爲了編譯你的包,我不得不從stack.yaml刪除幾行,即那些包括當地迪爾斯/home/amcp011/local/,這不包括在回購,用我的系統中安裝了gcc代替一個來自RHEL6.3
  • 如果您使用除haskell-mode之外的其他一些emacs軟件包,它們也可能是問題的原因。我已經用interoflycheck進行了測試,沒有任何問題。
  • 嘗試升級到最新stack upgradehaskell-mode,也許這將有所幫助。我曾與stack-1.5.1haskell-mode-20170824.1124上測試emacs-25.2.2