#lsp #smart-contracts #polkadot #blockchain #language-server #ink #programming-language

bin+lib ink-lsp-server

A Language Server Protocol (LSP) implementation for the ink! smart contract programming language

35 releases

0.3.0 May 3, 2024
0.2.28 Mar 18, 2024
0.2.17 Dec 24, 2023
0.2.12 Nov 2, 2023
0.2.1 Jul 22, 2023

#24 in #ink

MIT/Apache

1.5MB
37K SLoC

ink! Language Server

A Language Server Protocol (LSP) implementation for the ink! smart contract programming language.

It implements the Language Server Protocol (LSP) and acts as a backend that provides language support features like diagnostic errors, code completion suggestions, code/intent actions and hover content to IDEs, code editors and other development tools.

It uses the semantic analyzer as the engine for providing ink! language support features by:

  • translating LSP requests into semantic analyzer interface calls.
  • translating semantic analysis results into corresponding LSP types.

It additionally uses rust-analyzer's lsp-server crate to handle LSP protocol handshaking and parsing messages, and the lsp-types crate for LSP type definitions.

Installation

Option 1: Cargo (via crates.io)

Run

cargo install ink-lsp-server

Option 2: Building from source

Run

git clone https://github.com/ink-analyzer/ink-analyzer.git
cd ink-analyzer
cargo build --bin ink-lsp-server --release

Copy the compiled binary (named ink-lsp-server) from the target/release directory to your preferred installation location, make sure the binary is executable and the installation location is included in the PATH environment variable.

Usage

The installed ink! Language Server binary can be used with any LSP client that can be configured to launch an LSP server using an executable command (i.e. the path to the ink-lsp-server binary) and can use stdio (standard in/standard out) as the message transport.

While a few editors/IDEs have native/built-in LSP clients (e.g. Neovim), most LSP clients are plugins/extensions for editors/IDEs.

Documentation

Binary Documentation

ink-lsp-server binary help text.

Language Server Protocol (LSP) implementation for the ink! smart contract programming language.

Usage: ink-lsp-server

Options:
  -h, --help     Print help
  -V, --version  Print version

Library Documentation

https://docs.rs/ink-lsp-server/latest/ink_lsp_server/

Or you can access the library documentation locally by running the following command from the project root

cargo doc -p ink-lsp-server --open

Testing

You can run unit and integration tests for all the core functionality by running the following command from the project root

cargo test -p ink-lsp-server

License

Licensed under either MIT or Apache-2.0 license at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~10–21MB
~329K SLoC