Skip to content

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.

Projects using Woke LSP server#

  • VS Code Extension

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 following configuration options are supported:

  • woke.compiler.solc.allow_paths,
  • woke.compiler.solc.evm_version,
  • woke.compiler.solc.ignore_paths,
  • woke.compiler.solc.include_paths,
  • woke.compiler.solc.remappings,
  • woke.compiler.solc.target_version,
  • woke.compiler.solc.via_IR,
  • woke.compiler.solc.optimizer.enabled,
  • woke.compiler.solc.optimizer.runs,
  • woke.lsp.code_lens.enable,
  • woke.lsp.detectors.enable,
  • woke.lsp.find_references.include_declarations.

The semantics of these configuration options are explained in the configuration section.

Supported commands#

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

Command Description
woke.lsp.force_recompile Force recompile the opened project/files. Useful after modifying files outside the IDE (e.g. after installing npm packages).

Features#

Go to definition#

Go to definition preview

Go to type definition#

Go to type definition preview

Go to implementation#

Finds implementations of an unimplemented function or modifier.

Go to implementation preview

Find references#

Find references preview

Type hierarchy#

Contract type hierarchy preview

Also works for virtual functions.

Function type hierarchy preview

Document links preview

Hover#

Includes links to documentation for OpenZeppelin contracts.

Hover preview

Code lens#

Number of references is shown above each declaration.

Code lens preview

Document symbols#

Document symbols preview

Diagnostics#

Diagnostics preview

Diagnostics preview

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

Diagnostics preview

Diagnostics preview

Rename#

Rename preview

Debugging#

Woke LSP server can be debugged using:

woke --debug lsp