Як налаштувати GHCup + Haskell LSP в Emacs
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
не працює.