Skip to content

Tehnix/ide-haskell-hie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Atom plugin for HIE LSP server

Rudimentary support for HIE, relies on atom-ide-ui for displaying LSP interactions, and language-haskell to identify Haskell files. Internatlly uses atom-languageclient for the LSP client, and HIE as the LSP server.

To get hie to automatically detect the correct hie version to use based on your projects GHC version, enable the experimental flag 'Use hie-wrapper', and make sure to build your project using the Makefile in the HIE repository (builds multiple versions of hie).

Installation

You can install ide-haskell-hie by using apm.

apm install ide-haskell-hie

Or via Atom > Settings view > Install Packages > Search packages > ide-haskell-hie

From source

To contribute to ide-haskell-hie you might want to install it from source:

# Get source from `ide-haskell-hie` repository
git clone git@github.com:Tehnix/ide-haskell-hie.git
cd ide-haskell-hie
# install dependencies
npm install
# link local version in `dev` mode
apm link --dev
# start Atom in `dev` mode
atom --dev
# To unlink local version of `ide-haskell-hie` run
apm unlink --dev

For more information about apm and link check Contributing to Official Atom Packages.

Configuration

The plugin should work out-the-box, but your environment may differ for many reasons, and the following are some configurations that might help you get it working.

  • Absolute path to hie executable will set the path to hie, in case it's not on your $PATH.
  • Use hie wrapper makes Atom use the hie-wrapper.sh file to start hie through. This does assume that you built the hie executable using make build, but will fall back to plain hie.
  • Use custom hie wrapper enables you to use your own custom hie wrapper script, if the standard one doesn't suit your need (e.g. to use with nix).
  • The path to your custom hie wrapper specifies the path to the custom wrapper, and is required for it to take effect.
  • Turn on debugging output passes the --debug flag to hie (although not if using a custom wrapper, then you're on your own).
  • Log to a file (if debugging is on) will set the log file that debug writes to.

For additional debugging (e.g. stderr), you can enable Settings -> Core -> Debug L S P or add debugLSP: true to the core section in Debug -> Config... -> config.cson, and then view the output in the Atom Developer Console.

A few screenshots of the working things

Type/Datatips information on hover & Definitions/Hyperclick

Definitions/Hypercick support

Linter/diagnostics on save

Linter Errors

Outline view & Highlighting

Outline view on the right side and highlight of anotherFunc

Code actions

Code actions being applied

Code format

No screenshot really necessary here.

Not implemented

Miscellaneous

The code for the providers that HIE supports can be found here (permanent link here).