# Final Report: Dhall Language Server
This is my final report as part of GSoC 2019, working on the [Dhall language server](https://summerofcode.withgoogle.com/projects/#5991057626497024).
## Introduction
Error highlighting and code completion are among the features programmers nowadays expect from IDEs. As part of the Google Summer of Code 2019 I had the chance to work on the βDhall language serverβ, which implements those features (and more) in an editor agnostic way for the [Dhall language](https://dhall-lang.org/).
The project was successful β you can now use VSCode/[ium](https://vscodium.com/) to enjoy the full Dhall experience with all its bells and whistles! Note that there is no reason for us not supporting other editors, other than no one has written the necessary glue code yet (feel free to contribute!).
## Screencast (Code Completion)
![Code completion](https://raw.githubusercontent.com/EggBaconAndSpam/eggbaconandspam.github.io/master/images/completion.png)
## Main Contributions
Thanks to [PanAeon](https://github.com/PanAeon)'s efforts I was able to start from a working prototype, and was able to contribute user-facing features right away after a short getting-to-know-the-code period. I managed to implement all features I set out to. Note that we dropped the originally proposed alpha/beta-normalisation features, as their usefulness wasn't immediately obvious; I ended up implementing code completion instead.
These were my main contributions to [*dhall-lsp-server*](https://github.com/dhall-lang/dhall-haskell/tree/master/dhall-lsp-server) (and [*vscode-dhall-lsp-server*](https://github.com/PanAeon/vscode-dhall-lsp-server)):
- Better type errors with optional detailed explanations ([gif](../images/explain-on-hover.png); code at [#974](https://github.com/dhall-lang/dhall-haskell/pull/974) and [#982](https://github.com/dhall-lang/dhall-haskell/pull/982); client code at [#4](https://github.com/PanAeon/vscode-dhall-lsp-server/pull/4))
- Linting ([gif](../images/lint-and-format.png); [#1003](https://github.com/dhall-lang/dhall-haskell/pull/1003); [#7](https://github.com/PanAeon/vscode-dhall-lsp-server/pull/7))
- Displaying the inferred type when hovering over any part of the code ([gif](../images/type-hover.png); [#1008](https://github.com/dhall-lang/dhall-haskell/pull/1008))
This file has been truncated. show original