ink! language support for Visual Studio Code.
ink! is a programming language used for writing smart contracts for blockchains built with Substrate.
- diagnostics - errors and warnings based on ink! semantic rules.
- quickfixes - suggested edits/code actions for diagnostic errors and warnings.
- completions - completion suggestions for ink! attribute macros, arguments and entities/items.
- code/intent actions - contextual assists for:
- adding relevant ink! attribute macros, arguments and entities/items
- migrating ink! projects to newer versions of ink! (e.g. ink! 4.x to 5.0)
- extracting ink! entities (e.g. ink! 5.0 events) into standalone packages
- and more!
- hover content - descriptive/informational text for ink! attribute macros and arguments.
- inlay hints - inline type and format information for ink! attribute arguments values
(e.g.
u32 | _| @
for ink! message selectors). - signature help - popup information for valid ink! attribute arguments for the current context/cursor position.
- commands - triggers for custom functionality like creating a new ink! project with a contract stub or restarting/stopping the ink! language server.
ink! is built on top of Rust, so you'll have a much better experience with both rust-analyzer and ink! analyzer enabled.
This extension provides the following settings:
ink-analyzer.server.path
: (Optional) Sets the path to ink! Language Server (ink-lsp-server) binary/executable (points to the bundled binary/executable that ships with the extension by default).ink-analyzer.trace.server
: (Optional) Enables/disables tracing of the communication between VS Code and the ink! Language Server (not recommended for regular users).
Check out the Development and Testing Guide.
Licensed under GPL-3.0.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the GPL-3.0 license, shall be licensed as above, without any additional terms or conditions.
🌱 Funded by: the Web3 Foundation and Polkadot Treasury.