| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- Visual Studio Code Extension
- ============================
- Solang has
- a `language server <https://en.wikipedia.org/wiki/Language_Server_Protocol>`_ built
- into the executable, which can be used by the Visual Studio Code extension, or by
- any editor that can use a lsp language server. The Visual Studio Code
- extension provides the following:
- 1. Syntax highlighting.
- 2. Compiler warnings and errors displayed in the problems tab and marked
- with squiggly lines.
- 3. Additional information when hovering over variables, types, functions, etc.
- For example, this will give the struct fields when hovering over a variable
- which is a reference to a struct.
- .. image:: extension-screenshot.png
- Both the Visual Studio Code extension code and the language server were developed under a
- `Hyperledger Mentorship programme <https://wiki.hyperledger.org/display/INTERN/Create+a+new+Solidity+Language+Server+%28SLS%29+using+Solang+Compiler>`_.
- Solidity Language flavour
- -------------------------
- The Solidity language flavour depends on what target you are compiling for, see :ref:`language-status` for a brief overview.
- You can choose between the following targets:
- solana
- Solidity for Solana
- polkadot
- Solidity for Polkadot (Substrate contracts pallet)
- evm
- Solidity for any EVM based chain like Ethereum
- Note that the language server has support for EVM, but Hyperledger Solang does
- not support compiling for EVM.
- Using the extension
- -------------------
- The extension can be found on the `Visual Studio Marketplace <https://marketplace.visualstudio.com/items?itemName=solang.solang>`_.
- When started for the first time, the extension will download the Solang binary. Once this is done, it should just automatically work.
- Updates are downloaded when made available. However, you should set the blockchain target in the extension settings.
- .. image:: extension-config.png
- Development
- -----------
- The code is spread over two parts. The first part the vscode extension client code,
- `written in TypeScript <https://github.com/hyperledger-solang/solang/tree/main/vscode>`_.
- This part deals with syntax highlighting, and calling out to the Solang language server when
- needed. The client needs `npm and node installed <https://docs.npmjs.com/downloading-and-installing-node-js-and-npm>`_.
- The client implementation is present in
- `src/client <https://github.com/hyperledger-solang/solang/tree/main/vscode/src/client>`_.
- The extension client code is in
- `src/client/extension.ts <https://github.com/hyperledger-solang/solang/tree/main/vscode/src/client/extension.ts>`_.
- Secondly, there is the language server which is written in Rust.
- The Solang binary has a subcommand ``language-server``, which starts the
- `built-in language server <https://github.com/hyperledger-solang/solang/blob/main/src/bin/languageserver/mod.rs>`_.
- Once you have node and npm installed, you can build the extension like so:
- .. code-block:: bash
- git clone https://github.com/hyperledger-solang/solang
- cd solang/vscode
- npm install
- npm install -g vsce
- vsce package
- You should now have an extension file called ``solang-0.3.4.vsix`` which can be
- installed using ``code --install-extension solang-0.3.4.vsix``.
- Alternatively, the extension is run from vscode itself.
- 1. Inside a vscode instance, Ctrl+Shift+B to build the project
- 2. On the task bar at the bottom of the IDE select Launch Client
- 3. Open a Solidity file (.sol) to test the extension.
- To run the tests:
- 1. Inside a vscode instance, Ctrl+Shift+B to build the project
- 2. On the task bar at the bottom of the IDE select Extensions tests
- 3. The result should be displayed in the debug console of the host IDE instance.
|