- Visual Studio Code Haskell Plugin
- Haskell Ide Visual Studio Code
- Haskell Code
- Visual Studio Code Haskell Extension
- Haskell Source Code
This extension adds language support for Haskell, powered by the Haskell Language Server.
Features
Haskell and Visual Studio Code errors. Ask Question Asked 3 months ago. Active 3 months ago. Viewed 145 times -1. I started learning the Haskel programming language and decided to use Visual Studio Code. I installed everything properly haskell and stack and a few haskell extensions in VS. When I create a project and import Lib.hs into Main.hs. Hello everyone, In this video we see how to install Haskell in windows and run in visual studio code.Haskell is a general purpose language that can be used. Visual Studio Code, Emacs+haskell-mode, and Emacs are probably your best bets out of the 10 options considered. This page is powered by a knowledgeable community that.
Warning and error diagnostics from GHC
Type information and documentation on hover
Jump to definition
Document symbols
Highlight references in document
Code completion
Formatting via Brittany, Floskell, Ormolu or Stylish Haskell
Multi-root workspace support
Code evaluation (Haskell Language Server)
Requirements
- Visual Studio Code. Pretty lightweight and straightforward. Do wish ghc-mod was working with latest ghc though. I haven't tried the provided install script). I think it's an especially great tool for new Haskell programmers, and hope that it can get an official release to make it more accessible to the Haskell curious.
- Glasgow Haskell Compiler; GHC; Wiki; Visual Studio Code; Last edited by Sven Tennie Jan 16, 2021. Page history New page Visual Studio Code Haskell If all dependencies to build GHC (with Hadrian) are installed, the Haskell plugin works out of the box.
- For standalone
.hs
/.lhs
files, ghc must be installed and on the PATH. The easiest way to install it is with ghcup or Chocolatey on Windows. - For Cabal based projects, both ghc and cabal-install must be installed and on the PATH. It can also be installed with ghcup or Chocolatey on Windows.
- For Stack based projects, stack must be installed and on the PATH.
Language Servers
Whilst this extension is powered by the Haskell Language Server by default, it also supports several others which can be manually installed:
- Haskell Language Server: This is the default language server which will automatically be downloaded, so it does not need manual installation. It builds upon ghcide by providing extra plugins and features.
- ghcide: A fast and reliable LSP server with support for basic features.
- Haskell IDE Engine: A legacy language server, you probably shouldn't use this one. Haskell Language Server replaces it instead.
You can choose which language server to use from the 'Haskell > Language Server Variant' configuration option.
Configuration options
Path to server executable executable
If your server is manually installed and not on your path, you can also manually set the path to the executable.
There are a few placeholders which will be expanded:
~
,${HOME}
and${home}
will be expanded into your users' home folder.${workspaceFolder}
and${workspaceRoot}
will expand into your current project root.
Visual Studio Code Haskell Plugin
Haskell Language Server specifics
Local documentation
Haskell Language Server can display Haddock documentation on hover and completions if the project andits dependencies have been built with the -haddock
GHC flag.
For cabal:
- Add to your global config file (e.g.
~/.cabal/config
): - Or, for a single project, run
cabal configure --ghc-options=-haddock
- Add to your global config file (e.g.
For stack, add to global
$STACK_ROOTconfig.yaml
, or project'sstack.yaml
:Note that this flag will cause compilation errors if a dependency contains invalid Haddock markup,until GHC 8.12 which will report warningsinstead.
Downloaded binaries
This extension will download haskell-language-server
binaries to a specific location depending on your system. If you find yourself running out of disk space, you can try deleting old versions of language servers in this directory. The extension will redownload them, no strings attached.
Platform | Path |
---|---|
macOS | ~/Library/Application Support/Code/User/globalStorage/haskell.haskell/ |
Windows | %APPDATA%CodeUserglobalStoragehaskell.haskell |
Linux | $HOME/.config/Code/User/globalStorage/haskell.haskell |
Haskell Ide Visual Studio Code
Note that if haskell-language-server-wrapper
/haskell-language-server
is already on the PATH, then the extension will launch it directly instead of downloading binaries.
Supported GHC versions
These are the versions of GHC that there are binaries of haskell-language-server
for. Building from source may support more versions!
GHC | Linux | macOS | Windows |
---|---|---|---|
8.10.2 | ✓ | ✓ | ✓ |
8.10.1 | ✓ | ✓ | ✓ |
8.8.4 | ✓ | ✓ | ✓ |
8.8.3 | ✓ | ✓ | ✓ |
8.8.2 | ✓ | ✓ | |
8.6.5 | ✓ | ✓ | ✓ |
8.6.4 | ✓ | ✓ | ✓ |
Using multi-root workspaces
Haskell Code
First, check out what multi-root workspaces are. The idea of using multi-root workspaces, is to be able to work on several different Haskell projects, where the GHC version or stackage LTS could differ, and have it work smoothly.
The language server is now started for each workspace folder you have in your multi-root workspace, and several configurations are on a resource (i.e. folder) scope, instead of window (i.e. global) scope.
Investigating and reporting problems
- Go to extensions and right click
Haskell
and chooseConfigure Extensions Settings
- Scroll down to
Language Server Haskell › Trace: Server
and set it toverbose
- Restart vscode and reproduce your problem
- Go to the main menu and choose
View -> Output
(Ctrl + Shift + U
) - On the new Output panel that opens on the right side in the drop down menu choose
Haskell
Please include the output when filing any issues on the relevant language server's issue tracker.
Troubleshooting
Visual Studio Code Haskell Extension
- Sometimes the language server might get stuck in a rut and stop responding to your latest changes.Should this occur you can try restarting the language server with Ctrl shift P/⌘ shift P > Restart Haskell LSP Server.
- Usually the error or unexpected behaviour is already reported in the haskell language server used by the extension. Finding the issue in its issue tracker could be useful to help resolve it. Sometimes even it includes a workaround for the issue.
- Haskell language servers issue trackers:
- haskell-language-server: https://github.com/haskell/haskell-language-server/issues
- ghcide: https://github.com/haskell/ghcide/issues
- Common issues:
- For now, the extension is not able to open a single haskell source file. You need to open a workspace or folder, configured to be built with cabal, stack or other hie-bios compatible program.
- Check you don't have other haskell extensions active, they can interfere with each other.
Contributing
If you want to help, get started by reading Contributing for more details.
Release Notes
Haskell Source Code
See the Changelog for more details.