aiken/crates/aiken-lsp
KtorZ 91e0e2493a
Provide better errors on unknown type in cyclic definitions.
Let's consider the following case:

  ```
  type Var =
    Integer

  type Vars =
    List<Var>
  ```

  This incorrectly reports an infinite cycle; due to the inability to
  properly type-check `Var` which is also a dependent var of `Vars`. Yet
  the real issue here being that `Integer` is an unknown type.

  This commit also upgrades miette to 7.2.0, so that we can also display
  a better error output when the problem is actually a cycle.
2024-08-06 19:24:48 +02:00
..
src Merge pull request #994 from aiken-lang/conditional-modules 2024-08-06 09:05:11 +02:00
Cargo.toml Provide better errors on unknown type in cyclic definitions. 2024-08-06 19:24:48 +02: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