Haskelly

July 25, 2019 ยท View on GitHub

Release notes | Roadmap | Demo Video

Haskelly is a Visual Studio Code extension that supports Haskell development.

Features

  • Code highlight

  • Code snippets

    • Structures : data, newtype, etc.
    • Popular functions : map, fold, etc.
  • Type hovers

    • hover
  • Jump to definition

    • Jump to symbol definitions/declarations
  • Find references

    • Find references within a module or depending modules. See limitations on #62
  • Code completion :

    • Local functions and constants
    • Standard library
    • Imported modules

    completion

  • Integrated REPL, Build, Test and Run commands

    • repl with GHCi
    • build with stack
    • run with runHaskell
    • test current file prop_* properties with QuickCheck
    • run full test suite with Stack test

Installation

  • Install the Haskelly VS Code extension.

  • Install Stack and add it to your PATH. Note that Stack folder naming conventions must be followed for it to work correctly, i.e. capitalizing folder names.

    curl -sSL https://get.haskellstack.org/ | sh
    
  • Install Intero (code completion and type information), and QuickCheck (test suite)

    stack install intero QuickCheck  # for a global installation
    stack build intero QuickCheck # for a local installation
    

Configuration

Haskelly is customizable (see Code > Preferences > Workspace Settings).

ParameterDescriptionDefault
haskelly.codeCompletionCode completion enabledtrue
haskelly.buttons.ghciGHCi button shows in the bottom bartrue
haskelly.buttons.runfileRun file button shows in the bottom bartrue
haskelly.buttons.quickcheckQuickCheck button shows in the bottom bartrue
haskelly.buttons.stackBuildStack build button shows in the bottom bartrue
haskelly.buttons.stackBuildParamsParameters passed to stack build command--fast
haskelly.buttons.stackRunStack run button shows in the bottom bartrue
haskelly.buttons.stackRunParamsParameters passed to stack run commandnull
haskelly.buttons.stackTestStack test button shows in the bottom bartrue
haskelly.buttons.stackTestParamsParameters passed to stack test commandnull
haskelly.snippets.importantHide code completion for which there's already a snippetfalse
haskelly.snippets.customAdd your custom snippets following the structure of this filenull
haskelly.exec.reuseTerminalReuse the currently opened terminal to run Stack commandsfalse

Contributing

If you'd like to contribute to Haskelly, this is what you can do:

  • Bugs: This extension is in alpha, so some bugs might be present. We would really appreciate if you could post any issue on the Github repository issues section or contact us at: zcabmse@ucl.ac.uk.
  • Ideas and feature requests: We want to get everyone's opinion on what we're building so feel free to use the two mentioned channels for any comment or suggestion.
  • Documentation: Found a typo or strangely worded sentences? Submit a PR!
  • Code: Contribute bug fixes, features or design changes.

License: GNU 3