Як налаштувати GHCup + Haskell LSP в Emacs

This post in English!

Haskell має чудовий мовний сервер. Втім довелося розв'язати кілька притаманних Емаксу проблем зі шляхом до колекції бінарників з арсеналу Гаскелевих струментів.

Сподіваюся, цей допис допоможе вам уникнути тої напасті.

Встановлюємо GHCup

Тут усе просто, запускаємо команду з сайту GHCup:

curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

Звісно ж, погодьтеся встановити haskell-language-server, бо воно ж вам і треба, судячи з цієї статті.

Ждемо. Довго.

Додаємо пакети Haskell до init.el

Я користуюся use-package (і вам рекомендую), тому встановлюю Гаскелові пакунки отак:

;;; init.el
(use-package haskell-mode) ; install mode for Haskell files
(use-package lsp-mode) ; you will definitely need LSP support
(use-package lsp-ui) ; that's a nice LSP package as well
;; finally, Haskell LSP setup:
(use-package lsp-haskell
  :hook
  (haskell-mode . lsp)
  (haskell-literate-mode . lsp))

Мій init.el для ширшого контексту.

Показуємо Емаксу, де GHCup поклав бінарники

Два простих рядки:

(setenv "PATH" (concat (getenv "PATH") ":" (expand-file-name "~/.ghcup/bin")))
(setq exec-path (append exec-path '(expand-file-name "~/.ghcup/bin")))

Вставте їх до init.el і вважайте, що впорались.

Щоправда мусив попотіти, поки з'ясував, що тильда (~) без expand-file-name не працює.