aiken/crates/aiken-lsp
KtorZ d24a71ee04
Define new event target for JSON, and revert option passing
For the program to be consistent, the 'EventListener' target that we
  pass to a Project should be responsible for the output format.
  Otherwise, we are contingent on developers to remember passing the
  option at call-site. Plus, it overloads the project code with an extra
  boolean option.

  Instead, since the behaviour is solely driven by the execution
  context, we can instantiate a different event target upfront, and
  simply hold on to it throughout the program.

  As a nice side-effect, we can gently re-organize the code to keep the
  terminal printing logic and the json printing logic separate.
2024-11-13 11:07:25 +01:00
..
src Define new event target for JSON, and revert option passing 2024-11-13 11:07:25 +01:00
Cargo.toml chore: Release 2024-10-19 13:45:54 -04:00
README.md Present aiken-lsp & fill-in CHANGELOG 2023-10-21 21:39:30 +02:00

README.md

Aiken Language Server Protocol (LSP)

The aiken command-line comes built-in with a Language Server implementing (part of) the Language Server Protocol.

Getting Started

General

Regardless of your IDE, you'll likely need the following information to configure your language client:

  • command: aiken lsp

    Note The command is hidden from the command-line help usage

  • root pattern: aiken.toml

  • filetype: aiken (.ak)

VsCode

Simply install the VSCode Aiken extension from the official marketplace.

NeoVim

If you're using NeoVim and using nvim-lspconfig then there's almost nothing to do as Aiken is directly supported. Simply follow the official instructions

Supported Capabilities

  • Document syncing and on-the-fly compilation
  • Document formatting (akin to aiken fmt)
  • Go-to definition
  • Type annotation on hover
  • Code actions providing quickfixes for a variety of errors:
    • aiken::check::unknown::variable
    • aiken::check::unknown::type
    • aiken::check::unknown::type_constructor
    • aiken::check::unknown::module