当我在emacs工作时,我希望GHCI能够使用本地cabal沙箱。 从bash开始,语法如下:
ghci -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d
我在haskell-program-name
的定义中将标志添加到inf-haskell.el,如下所示:
(defcustom haskell-program-name
(or (cond
((executable-find "hugs") "hugs \"+.\"")
((executable-find "ghci") "ghci -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d"))
"hugs \"+.\"")
"The name of the command to start the inferior Haskell process.
The command can include arguments."
;; Custom only supports the :options keyword for a few types, e.g. not
;; for string.
;; :options '("hugs \"+.\"" "ghci")
:group 'inferior-haskell
:type '(choice string (repeat string)))
但它似乎不起作用,即在重新加载emacs后,使用C-h v haskell-program-name
检查值只是显示它等于"ghci"
,而我需要的包当然不在范围内。
有什么指针吗?谢谢!
答案 0 :(得分:1)
经过多次战斗,我们终于明白了:relevant Github issue
如果您将haskell-process-type
设置为auto
,并且路径中包含最新的(> = 1.20.x)cabal-install
,则运行C-c C-l
将打开一个阴谋集团在emacs中重新编写(即使你没有.cabal文件)并检测你的沙箱。这可以让你扔掉一个沙箱,快速安装一个库,然后在emacs中以交互方式玩弄它。