【问题标题】:"Autoloading failed to define function haskell-interactive-bring" issue with running Haskell on Emacs在 Emacs 上运行 Haskell 时出现“Autoloading failed to define function haskell-interactive-bring”问题
【发布时间】:2015-08-23 22:36:46
【问题描述】:

haskell repl in emacs 之后,我可以安装软件包。我使用 MELPA stable 作为存储库 ('("melpa-stable" . "http://stable.melpa.org/packages/") t))

  • ghc
  • haskell 模式
  • 飞检
  • flycheck-haskell

我还使用cabal 安装了二进制文件。

  • cabal 安装 ghc-mod (5.3.0.0)
  • cabal 安装快乐 (1.19.5)

Cabal 版本 1.22.6.0,GNU Emacs 版本 24.5.1 在 Mac OS X 10.10.4 上。

问题是当我尝试使用 C-` 运行 ghci 时,我收到了错误消息。

command-execute: Autoloading failed to define function haskell-interactive-bring

使用C-c C-l,我收到此错误消息。

command-execute: Autoloading failed to define function haskell-process-load-or-reload

可能出了什么问题?

这是init.el中的Haskell相关代码。

;; Haskell

; http://www.mew.org/~kazu/proj/ghc-mod/en/preparation.html
(autoload 'ghc-init "ghc" nil t)
(autoload 'ghc-debug "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))
;;(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation).

; https://github.com/serras/emacs-haskell-tutorial/blob/master/tutorial.md 
; https://stackoverflow.com/questions/26603649/haskell-repl-in-emacs
(let ((my-cabal-path (expand-file-name "~/Library/Haskell/bin")))
  (setenv "PATH" (concat my-cabal-path ":" (getenv "PATH")))
  (add-to-list 'exec-path my-cabal-path))
(custom-set-variables '(haskell-tags-on-save t))

(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)

(eval-after-load 'haskell-mode '(progn
  (define-key haskell-mode-map (kbd "C-c C-l") 'haskell-process-load-or-reload)
  (define-key haskell-mode-map (kbd "C-`") 'haskell-interactive-bring)
  (define-key haskell-mode-map (kbd "C-c C-n C-t") 'haskell-process-do-type)
  (define-key haskell-mode-map (kbd "C-c C-n C-i") 'haskell-process-do-info)
  (define-key haskell-mode-map (kbd "C-c C-n C-c") 'haskell-process-cabal-build)
  (define-key haskell-mode-map (kbd "C-c C-n c") 'haskell-process-cabal)))
(eval-after-load 'haskell-cabal '(progn
  (define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring)
  (define-key haskell-cabal-mode-map (kbd "C-c C-k") 'haskell-interactive-ode-clear)
  (define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build)
  (define-key haskell-cabal-mode-map (kbd "C-c c") 'haskell-process-cabal)))

(custom-set-variables
 '(haskell-interactive-mode-hide-multi-line-errors nil)
 '(haskell-process-log t)
 '(haskell-process-type (quote cabal-repl)))

添加

在 Emacs 中,自动完成显示“haskell-interactive-bring”功能可用。

但是,autoloading 失败了。

【问题讨论】:

  • ghci 二进制文件是否位于 PATH~/Library/Haskell/bin 中?如果which ghci 显示它在其他地方,请尝试将其添加到路径中。
  • 检查生成的自动加载文件,看看它与您预期的不符,特别是加载定义haskell-interactive-bring的文件。错误消息告诉您定义它的文件未加载。还要检查函数名称中的拼写错误。 ;-)
  • @nickie: ghci 在 /usr/bin 中,我在init.el 中添加了带有(add-to-list 'exec-path "/usr/bin") 的路径以防万一。不过结果是一样的。
  • @Drew:您能否详细说明生成的自动加载文件的位置?文件名是正确的,因为在安装文件中对 C-` 视而不见。不过我更正了标题。
  • 我不是package.el 的专家,但我想你可能会找到一个文件YOUR-PACKAGE-autoloads.el,它是在你安装包YOUR-PACKAGE 时生成的。无论如何,一个起点是找出在哪个文件中定义了haskell-interactive-bring

标签: haskell emacs


【解决方案1】:

问题是我有“haskell.el”,它存储了所有与 haskell 相关的配置设置。这导致了一些冲突,导致ELPA/haskell... 包中的“haskell.el”无法正确加载。

当我将“haskell.el”重命名为“haskell_config.el”时,一切似乎都运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-14
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2012-01-07
    • 1970-01-01
    相关资源
    最近更新 更多