【问题标题】:How do I make haskell-mode package work with Emacs on Nixos?如何使 haskell-mode 包在 Nixos 上与 Emacs 一起工作?
【发布时间】:2015-04-03 10:45:35
【问题描述】:

我正在使用configuration.nix 以某种方式同时安装emacshaskellMode 软件包:

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-mode),但是当我打开 .hs 文件时它不会进入 Haskell 次要模式。

~/.nix-profile/share/emacs/site-lisp/haskell-.... 文件确实存在于我的个人资料中,如果重要的话...

那么,我该如何让它发挥作用呢?

【问题讨论】:

  • 你能用M-x haskell-mode RET手动开启模式吗?
  • 嗨@Chris,当我这样做时,我从 Emacs 收到以下错误:Error in post-command-hook (global-font-lock-mode-check-buffers): (void-variable haskell-font-lock-choose-keywords)。知道这意味着什么吗?
  • 貌似haskell-mode.el应该提供haskell-font-lock-choose-keywords,但是好像没有定义,所以haskell-mode不知什么原因没有加载?
  • 看起来确实有些东西没有正确构建,但不幸的是我从未使用过 NixOS,我不确定environment.systemPackages 是如何工作的。我通过package.el 和 MELPA 安装了几乎所有东西,因为它已被广泛使用。也许这会给您带来更好的结果?
  • 是的,MELPA 也为我工作,我只是希望它成为我的“声明性配置”的一部分,这是一个很好的 Nixos 功能。

标签: emacs haskell-mode nixos nix


【解决方案1】:

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

通过声明您 (require 'haskell-font-lock) 来解决此问题。

那么如果你的.emacs 文件有以下内容:

(require 'haskell-mode) (add-hook 'haskell-mode-hook 'turn-on-hi2)

您应该添加(require 'hi2),因为它指向here

(require 'haskell-mode)
(require 'haskell-font-lock)
(require 'hi2)
(add-hook 'haskell-mode-hook 'turn-on-hi2)

请注意,haskell-mode 包不提供 hi2.el。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2014-03-29
    相关资源
    最近更新 更多