我正在尝试让emacs haskell-mode与cabal项目一起工作。每当我尝试以交互方式编译或加载文件时,我都会在haskell-process-log
编译(通过(Cc Cc)):
cabal.exe:没有给定目标并且当前目录中没有包。
并且在加载时(通过(Cc Cl)):
cabal.exe:“--ghc-option=-ferror-spans”的无法识别的目标语法
设置:Windows 10、GHC 8.10.2、Cabal 3.2.0.0、emacs 27.1、haskell-mode 20201120.755
我的 emacs 初始化文件有以下内容:
(require 'haskell-interactive-mode)
(require 'haskell-process)
(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
(eval-after-load "haskell-mode"
'(define-key haskell-mode-map (kbd "C-c C-c") 'haskell-compile))
(eval-after-load "haskell-cabal"
'(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-compile))
使用一个简单的 Haskell 项目,通过运行创建cabal init
即带有Main.hs
:
module Main where
main :: IO ()
main = putStrLn "Hello, Haskell!"
和 my-project.cabal
:
cabal-version: >=1.10
-- Initial package description 'my-project.cabal' generated by
-- 'cabal init'. For further documentation, see
-- http://haskell.org/cabal/users-guide/
name: my-project
version: 0.1.0.0
-- synopsis:
-- description:
-- bug-reports:
-- license:
license-file: LICENSE
author: ################
maintainer: ##################
-- copyright:
-- category:
build-type: Simple
extra-source-files: CHANGELOG.md, README.md
executable my-project
main-is: Main.hs
-- other-modules:
-- other-extensions:
build-depends: base >=4.14 && <4.15
hs-source-dirs:
default-language: Haskell2010
如果我尝试通过编译,C-c C-c
我会在haskell-process-log
缓冲区中得到以下内容:
cabal.exe:没有给定目标并且当前目录中没有包。 对项目中的所有包使用目标“全部”,或按名称或位置
指定包或组件。 有关目标选项
的更多详细信息,请参阅“cabal build --help” 。
如果我尝试通过C-c C-l
haskell 进程加载,则会立即死亡,提示我重新启动并且 haskell-process-log 显示:
cabal.exe:“--ghc-option=-ferror-spans”的目标语法无法识别。
在我的初始化文件自定义变量中使用'(haskell-process-log t)
并 '(haskell-process-show-debug-tips t)
设置,这将更改为:
("Starting inferior `cabal repl' process using cabal ..." "my-project" nil "cabal" "repl" " --ghc-option=-ferror-spans")
-> Prelude.putStrLn ""
:set -v1
:set +c
-> :set prompt "\4"
-> :set prompt-cont "λ| "
<- cabal.exe: Unrecognised target syntax for ' --ghc-option=-ferror-spans'.
Event: "exited abnormally with code 1 "
Process reset.
在处理单独的 haskell 文件时,在 emacs 中一切正常,即不在 cabal 项目中。
通过命令行编译和cabal repl
在 cabal 项目中也可以正常工作。
我一直在搜索文档并在谷歌上搜索了整整一天半。任何帮助,将不胜感激。