如何在emacs上搭建haskell环境?haskell-mode似乎elpa上没有
melpa 才有 haskell-mode,再安装 eglot(或者lsp-mode) + haskell-language-server 就可以了。
haskell 工具链(包括 haskell-language-server)可以用 ghcup 安装,现在支持三大平台了。
(when (>= emacs-major-version 24)
(require 'package)
(setq package-archives '(("gnu" . "http://elpa.emacs-china.org/gnu/")
("melpa" . "http://elpa.emacs-china.org/melpa/")
("org" . "https://elpa.emacs-china.org/org/"))))
;; cl - Common Lisp Extension
(require 'cl-lib)
;; Add Packages
(defvar my/packages '(
;; --- Auto-completion ---
company
;; --- Better Editor ---
smooth-scrolling
hungry-delete
swiper
counsel
smartparens
popwin
;; --- Major Mode ---
js2-mode
markdown-mode))
;; ...
;; 文件末尾
(provide 'init-packages)
上面是我的包管理设置,您看对不对?我输入M-X package-list-packages 实在是没找到haskell相关的任何包,估计是我设置哪里有问题?
应该要在最后加上下面这句,启动 package
(package-initialize)
然后你执行一次 M-x package-refresh-contents
刷新包的列表试试看。
终于搞定了,谢谢!
haskell-language-server似乎melpa里也没有,我安装了haskell-mode和eglot,还需要什么配置吗?
如何调出haskell的交互界面出来?就是那个ghci一样的界面有吗?
这个是 LSP 的后端,不需要在 Emacs 里面装,需要在你的系统里面安装,建议你看下它官方文档。 一般 Linux 发行版的包管理器就可以直接安装。没有的话也可以用 ghcup 来安装,跨平台的。
这个功能需要你在 haskell-mode 里面配置,这是我设置:
(use-package haskell-mode
:ensure t
:hook
(haskell-mode . interactive-haskell-mode)
(haskell-mode . haskell-indentation-mode))
然后,你在 haskell buffer 下 按 C-c, C-l
应该就可以掉出来了。 Happy Hacking!
非常感谢,使用成功了。但是似乎容易restart
这个是什么意思?能截图说明一下吗?
这个问题我也遇到过,估计是你 Haskell 环境安装的问题,不是 haskell-mode 的原因。
可能跟你安装的 ghc 版本以及 cabal-install 的版本或者 stack的版本有关。
你如果安装了 cabal,可以试试在终端下通过 cabal init
来初始化一个项目,然后再打开试试?
我是直接sudo apt install 安装了haskell-platform的。然后在emacs里安装了haskell-mode和eglot,按你说的设置了。现在我直接M-x run-haskell会出错:
GHCi, version 8.4.4: http://www.haskell.org/ghc/ :? for help
ghc: could not execute: x86_64-linux-gnu-gcc
Process haskell exited abnormally with code 1
你可以试试更新 ghc 版本看看,我用 8.10.7 在 Mac 上一切正常。其他系统目前没环境测试。
命令行直接输入ghci是正常的
设置一下 haskell-process-path-ghci 、haskell-process-path-cabal 、haskell-process-path-stack 。并且 (setq haskell-process-type 'ghci) 。应该能解决问题。我也遇到了这个问题。详细解释可以看 haskell-mode 文档。
macOS 仅限于 x64,ARM 架构的支持:
HLS bindists are still experimental.
Stack has only unofficial binaries for this platform.
There are various issues with GHC itself.