簡體   English   中英

在emacs中,stack-ghci無法加載接口文件,但是從命令行執行`stack build`

[英]In emacs stack-ghci cannot load interface files but `stack build` from the command line does

我可以從命令行stack build項目,但是當我在emacs中嘗試Cc Cl時(使用(custom-set-variables '(haskell-process-type 'stack-ghci)) )我得到一個錯誤,即所有包模塊我導入無法找到。

/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
            ]

我能夠使用stack build編譯您的項目(當然,在安裝了一些系統范圍的依賴項,如llvm,cuda,fftw3等之后)並在emacs中使用Cc Cl加載它。

這是最適合我的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刪除幾行,即包含本地dirs /home/amcp011/local/ ,它們不包含在repo中並使用我的系統安裝gcc而不是RHEL6.3的一行RHEL6.3
  • 如果你使用除haskell-mode之外的其他一些emacs包,它們也可能是問題的原因。 我用interoflycheck測試了它沒有任何問題。
  • 嘗試升級到最新的stack upgradehaskell-mode ,這可能會有所幫助。 我在emacs-25.2.2上測試了stack-1.5.1haskell-mode-20170824.1124

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM