Generated by GPT-5-mini| haskell-language-server | |
|---|---|
| Name | haskell-language-server |
| Developer | Haskell community |
| Initial release | 2019 |
| Programming language | Haskell |
| Platform | Cross-platform |
| License | MIT |
haskell-language-server
haskell-language-server is an open-source language server for the Haskell programming language created to provide IDE features for Haskell developers; it complements tools such as GHC (Glasgow Haskell Compiler), Stack (software), Cabal (build system), Haskell Platform and integrates with environments like Visual Studio Code, Neovim, Emacs and Atom (text editor). The project emerged from collaboration among contributors affiliated with organizations such as Functional Programming (conference), IOHK, FP Complete, Well-Typed, Tweag I/O and individuals who have worked on GHCi, Hackage, Stackage and related Haskell ecosystem projects. It aims to provide features comparable to language servers used in ecosystems like TypeScript, Rust (programming language), Python (programming language), and to leverage compiler services similar to Clang and Microsoft Visual Studio tooling.
haskell-language-server implements code intelligence features including type at point, code actions, diagnostics, symbol search and refactorings by integrating with Glasgow Haskell Compiler, Hoogle, HLint, Ormolu, Stylish Haskell and ghcid to offer user experiences comparable to IntelliJ IDEA, Eclipse, Sublime Text and JetBrains Rider. It provides on-the-fly diagnostics using data from GHC (Glasgow Haskell Compiler), HLS (abbreviation), Hoogle lookups and linting tools such as HLint and formatter integration like Ormolu, Fourmolu and Brittany (programming tool). The server exposes actions for imports and fixes inspired by implementations in Language Server Protocol, Microsoft, Red Hat, and interoperability with package indices like Hackage and Stackage.
The architecture centers on a Language Server Protocol implementation that mediates between editor clients such as Visual Studio Code, Emacs, Neovim and back-end components including GHC (Glasgow Haskell Compiler), ghcide, GHC API, GHC Core analysis and auxiliary tooling like HLint, Ormolu and Hoogle. Core components include a project-aware build manager compatible with Stack (software), Cabal (build system), and Nix (package manager), a plugin system modeled after extension patterns used by Eclipse and Visual Studio Code and a worker pool for parallel analysis inspired by concurrency libraries used in GHC (Glasgow Haskell Compiler). The design allows integration of community plugins contributed by organizations such as Well-Typed, Tweag I/O, IOHK and projects hosted on platforms like GitHub and GitLab.
Users can obtain prebuilt binaries or build from source using tools in the Haskell ecosystem such as Stack (software), Cabal (build system), GHC (Glasgow Haskell Compiler), and deployment options with Nix (package manager); common installation targets include environments like Visual Studio Code, Neovim, Emacs and continuous integration systems such as GitHub Actions and Travis CI. System prerequisites typically reference releases of GHC (Glasgow Haskell Compiler), versions of Cabal (build system), and platform specifics for Windows, macOS and Linux (kernel) distributions maintained by projects like Debian, Fedora Project, Ubuntu and Arch Linux. Releases are distributed through channels used by many open-source projects on GitHub with binary artifacts often accompanied by checksums and installation instructions similar to those used by Rustup and Node.js.
Integration is achieved through the Language Server Protocol adapters and client extensions for editors including Visual Studio Code, Emacs, Neovim, Vim (text editor), Sublime Text and Atom (text editor), with configuration UIs often provided by extensions available in marketplaces like Visual Studio Marketplace and package archives similar to MELPA and vim-plug. Editor plugins rely on capabilities implemented by the server to surface diagnostics, code actions, hover information and navigation features akin to those found in IntelliJ IDEA, Eclipse and Microsoft Visual Studio, and integrate with debugging layers such as DAP (Debug Adapter Protocol) adaptations and testing frameworks like HUnit, QuickCheck and tasty.
Configuration is handled through project-local files and editor settings, leveraging standards and tools such as hie.yaml project files, environment management with Nix (package manager), and build configuration via stack.yaml and cabal.project used by Stack (software) and Cabal (build system). Customization supports enabling or disabling plugins contributed by organizations and individuals on GitHub and adjusting formatter choices between Ormolu, Fourmolu, Brittany (programming tool) and Stylish Haskell, as well as lint rule sets from HLint and integration with test runners like tasty and HUnit. Workspace-level settings often mirror patterns used in Visual Studio Code and Emacs configuration ecosystems such as Dotfiles managed in repositories on GitHub.
Development is community-driven with contributions coordinated on platforms such as GitHub and continuous integration provided by services like GitHub Actions and Travis CI; maintainers follow release practices resembling those used by GHC (Glasgow Haskell Compiler), Stack (software), and other major Haskell projects. The project accepts patches, bug reports and feature requests from contributors associated with institutions including Well-Typed, IOHK, FP Complete and individuals who participate in events like Hacktoberfest and conferences such as Haskell Symposium and Functional Programming (conference). Releases typically track compatibility with GHC (Glasgow Haskell Compiler) major versions and coordinate with package index updates on Hackage and curated snapshots on Stackage.