The goal of this blog post is to install an advanced Haskell mode, called LSP mode
, for Emacs
.

0. In this tutorial, you will need to go to the official website of NixOS
and that of MELPA
(Milkypostman’s Emacs Lisp Package Archive). Make sure that both websites are the real official ones. Any instructions from an imposter website can get your machine infected with malware.
1. Assuming your computer OS is Ubuntu 20.04 or above, go to the NixOS official website. Follow the instructions to install the Nix package manager
(not the NixOS) onto your OS. Choose the “single-user installation” method.

2. On the NixOS official website, click the magnifying glass at the top right corner to reach the package search engine.
3. Search “haskell language server” and then copy its installation command.
nix-env -iA nixpkgs.haskell-language-server
4. Run the command in the bash terminal to install the Haskell Language Server
.
.
5. Search “stack” on the package search engine.
6. Run its installation command
nix-env -iA nixpkgs.stack
to install the Haskell Tool Stack
.

7. Search “ghc” on the package search engine.
8. Run its installation command
nix-env -iA nixpkgs.ghc
to install the Glasgow Haskell Compiler
.
.
9. Reboot your computer.
This step is needed for triggering the OS to recognize the Nix package manager setup.
.
10. Go to MELPA
package manager’s official website. Follow the instructions to install “Melpa”, not “Melpa Stable”.
11. Open the Emacs
editor. Click "Options"
and then "Manage Emacs Packages"
.
Install the following packages. For each of them, make sure that you have chosen the source archive as “melpa“. Versions from other sources would not work.
|
|
|
|
|
company |
Modular text completion framework |
|
|
|
flycheck |
On-the-fly syntax checking |
|
|
|
lsp-haskell |
Haskell support for lsp-mode |
|
|
|
lsp-mode |
LSP mode |
|
|
|
lsp-ui |
UI modules for lsp-mode |
|
|
|

12. Open Emacs’ initialization file, which has the filename
.emacs
Its location should be
~/.emacs
13. Add the following code to the file.
;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'company)
(require 'flycheck)
(require 'lsp-ui)
;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'lsp)
(add-hook 'haskell-mode-hook #'lsp)
(add-hook 'haskell-literate-mode-hook #'lsp)
(save-place-mode 1)
;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun haskell-and-go-back ()
(interactive)
(haskell-process-load-file)
(windmove-up))
(global-set-key
(kbd "C-n")
'haskell-and-go-back)
;;;;;;;;;;;;;;;;;;;;;;;;;;
14. Close the Emacs
program.
.
15. Create a dummy Haskell source code file named “test.hs”.
16. Use Emacs
to open it.
17. You should see this message:

18. Select one of the first 3 answers. Then you can start to do the Haskell source code editing.
19. To compile your code, hold the Ctrl
key and press n
.
Ctrl+n
— Me@2022-08-18 05:22:02 PM
.
.
2022.08.20 Saturday (c) All rights reserved by ACHK
You must be logged in to post a comment.