用于Emacs Haskell劣等模式的ghci cabal沙箱标志

时间:2014-11-05 11:25:57

标签: haskell emacs ghci

当我在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",而我需要的包当然不在范围内。 有什么指针吗?谢谢!

1 个答案:

答案 0 :(得分:1)

经过多次战斗,我们终于明白了:relevant Github issue

如果您将haskell-process-type设置为auto,并且路径中包含最新的(> = 1.20.x)cabal-install,则运行C-c C-l将打开一个阴谋集团在emacs中重新编写(即使你没有.cabal文件)并检测你的沙箱。这可以让你扔掉一个沙箱,快速安装一个库,然后在emacs中以交互方式玩弄它。

祝你好运!