如何使haskell模式包在Nixos上与Emacs一起工作?

如何使haskell模式包在Nixos上与Emacs一起工作?,emacs,haskell-mode,nixos,nix,Emacs,Haskell Mode,Nixos,Nix,我正在使用configuration.nix以某种方式安装emacs和haskellMode软件包: environment.systemPackages = with pkgs; [ (haskellPackages.ghcWithPackages (self : [ self.cabalInstall self.happy self.alex self.ghcMod ])) emacs emacs24Packages.haskellMo

我正在使用
configuration.nix
以某种方式安装
emacs
haskellMode
软件包:

environment.systemPackages = with pkgs; [
  (haskellPackages.ghcWithPackages (self : [
     self.cabalInstall
     self.happy
     self.alex
     self.ghcMod
  ]))
  emacs
  emacs24Packages.haskellMode
];
我的
.emacs
文件包含:

(require 'haskell-mode)
(add-hook 'haskell-mode-hook 'turn-on-hi2)
Emacs然后开始时没有错误(因此我假设它可以找到
haskell模式
),但当我打开
.hs
文件时,它不会进入haskell次要模式

~/.nix profile/share/emacs/site lisp/haskell-..
文件确实存在于我的配置文件中,如果有必要的话


那么,我如何使它工作呢?

我在尝试使用
haskell缩进
而不是
hi2
时遇到了同样的问题。 无论如何,通过执行
M-x haskell mode RET
得到的输出会提醒您haskell字体锁丢失

通过声明您
(需要'haskell字体锁)
来解决此问题

然后,如果您的
.emacs
文件具有以下内容:

(require 'haskell-mode) (add-hook 'haskell-mode-hook 'turn-on-hi2)
您应该添加所指出的
(需要'hi2)

请注意,
haskell mode
软件包不提供hi2.el


希望这有帮助

你能用
M-x haskell mode RET
手动启用该模式吗?嗨@Chris,当我这样做时,我从Emacs得到了以下错误:
post命令钩子中的错误(全局字体锁定模式检查缓冲区):(无效变量haskell font lock choose关键字)
。知道它是什么意思吗?看起来像是
haskell模式。el
应该提供
haskell字体锁定选择关键字
,但它似乎没有定义,所以
haskell模式
由于某种原因没有加载?看起来确实有一些东西没有正确构建,但不幸的是,我从未使用过NixOS,我不确定environment.systemPackages是如何工作的。我几乎通过
package.el
和MELPA安装了所有东西,现在它已经被广泛使用。也许这会给你更好的结果?是的,MELPA也为我工作,我只是想让它成为我的“声明性配置”的一部分,这是一个很好的Nixos特性。
(require 'haskell-mode)
(require 'haskell-font-lock)
(require 'hi2)
(add-hook 'haskell-mode-hook 'turn-on-hi2)