Solidity LSP server#

Woke implements an LSP server for Solidity. The only currently supported communication channel is TCP.

Woke LSP server can be run using:

woke lsp


Or with an optional --port argument:

woke lsp --port 1234


Info

Multi-root workspaces are not currently supported.

Configuration options#

Server configuration options are loaded using the standard interface from LSP clients. The process of setting the configuration options is client specific. Configuration changes are handled by the server, and the project is recompiled if the compilation options change.

The full list of supported configuration options can be found in the configuration section.

Warning

Configuration options are not loaded from woke.toml files by the LSP server.

Supported commands#

Woke LSP server implements the command execution provider as specified by the LSP specification. The following commands are supported:

Command Arguments Description
woke.lsp.force_recompile Force recompile the opened project/files. Useful after modifying files outside the IDE (e.g. after installing npm packages).
woke.lsp.force_rerun_detectors Force rerun detectors on the opened project/files.
woke.generate.control_flow_graph 0: URI of the document containing the function
1: canonical name of the function
Generate a control flow graph for the given function or modifier. Returns the source code of the graph in Graphviz (DOT) format.
woke.generate.imports_graph Generate an imports graph for the whole project. A workspace must be opened. Returns the source code of the graph in Graphviz (DOT) format.
woke.generate.inheritance_graph 0: URI of the document containing the contract
1: name of the contract
Generate an inheritance graph for the given contract. Returns the source code of the graph in Graphviz (DOT) format.
woke.generate.inheritance_graph_full Generate an inheritance graph for the whole project. A workspace must be opened. Returns the source code of the graph in Graphviz (DOT) format.
woke.generate.linearized_inheritance_graph 0: URI of the document containing the contract
1: name of the contract
Generate a linearized inheritance graph for the given contract. Returns the source code of the graph in Graphviz (DOT) format.

Features#

Go to implementation#

Finds implementations of an unimplemented function or modifier.

Type hierarchy#

Also works for virtual functions.

Hover#

Includes links to documentation for OpenZeppelin contracts.

Code lens#

Number of references is shown above each declaration.

Diagnostics#

Together with compiler errors, diagnostics also include results from Woke vulnerability detectors.

Debugging#

Woke LSP server can be debugged using:

woke --debug lsp