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 |
#23 in #ink
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
~11–24MB
~316K SLoC