You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make sure to check the READMEs of each of these packages, which explain how to configure the
562
563
various parts of the Emacs integration.
563
564
In particular, `lsp-haskell` provides customization options for the `haskell-language-server`-specific parts,
564
-
such as the path to the server binary.
565
+
such as the path to the server executable.
565
566
566
567
#### Using haskell-language-server with [doom-emacs](https://github.com/hlissner/doom-emacs/tree/develop/modules/lang/haskell#module-flags)
567
568
@@ -619,6 +620,44 @@ Example with `tasty-discover`:
619
620
```
620
621
This returns an error in HLS if 'tasty-discover' is not in the path: `could not execute: tasty-discover`.
621
622
623
+
## Troubleshooting
624
+
625
+
### Common issues
626
+
627
+
#### Difficulties with Stack and `Paths_` modules
628
+
629
+
These are known to be somewhat buggy at the moment: https://github.com/haskell/haskell-language-server/issues/478.
630
+
631
+
### Troubleshooting the server
632
+
633
+
#### Diagnostic mode
634
+
635
+
The `haskell-language-server` executable can be run in diagnostic mode, where it will just try to load modules from your project, printing all of its output to stdout.
636
+
This makes it much easier to see what's going on and to diagnose build-related problems.
637
+
638
+
To do this, simply run the executable directly from your shell in the project root.
639
+
You can either run it without an argument, in which case it will load random modules, or with a path, in which case it will load modules in that file or directory.
640
+
641
+
#### Examining the log
642
+
643
+
Most clients will launch `haskell-language-server` with `--logfile` to make it write a log file.
644
+
Please consult the documentation for your client to find out where this is (or how to set it).
645
+
646
+
The log will contain all the messages that are sent to the server and its responses.
647
+
This is helpful for low-level debugging: if you expect a certain action to happen, you can look in the log to see if the corresponding messages are
648
+
sent, or if there are any errors.
649
+
650
+
To get a more verbose, also pass `--debug` to the executable.
651
+
652
+
### Troubleshooting the client
653
+
654
+
Many clients provide diagnostic information about a LSP session.
655
+
In particular, look for a way to get the status of the server, the server stderr, or a log of the messages that the client has sent to the server.
656
+
For example, `lsp-mode` provides all of these (see its [troubleshooting page](https://emacs-lsp.github.io/lsp-mode/page/troubleshooting/) for details).
657
+
658
+
The most common client-related problem is the client simply not finding the server executable, so make sure that you have the right `PATH` and you have configured
659
+
it to look for the right executable.
660
+
622
661
## Contributing
623
662
624
663
:heart: The Haskell tooling dream is near, we need your help! :heart:
0 commit comments