Quickstart
Install
curl -fsSL https://asyncswap.org/lsp/install.sh | shOr install from Cargo:
cargo install solidity-language-serverBuild (local)
cargo build --releaseFeatures
- Go to Definition / Go to Declaration — jump to any symbol across files, including qualifier segments in qualified type paths (e.g.,
PoolinPool.Statenavigates to the contract/library) - Find References — all usages of a symbol across the project, including qualified type path references (e.g.,
PoolinPool.State) - Rename — project-wide symbol rename with prepare support, including qualifier usages in qualified type paths
- Hover — signatures, NatSpec docs, function/error/event selectors,
@inheritdocresolution, AST node ID for debugging - Completions — scope-aware with two modes (fast cache vs full recomputation)
- Document Links — clickable imports, type names, function calls
- Document Symbols / Workspace Symbols — outline and search
- Formatting — via
forge fmt - Diagnostics — from
solcandforge lint - Signature Help — parameter info on function calls, event emits, and mapping access
- Inlay Hints — parameter names at call sites
- File Operations —
workspace/willCreateFilesscaffolding +workspace/willRenameFiles/workspace/willDeleteFilesimport edits +workspace/didCreateFiles/workspace/didRenameFiles/workspace/didDeleteFilescache migration/re-index (fileOperations.templateOnCreate,fileOperations.updateImportsOnRename,fileOperations.updateImportsOnDelete) - Code Actions —
textDocument/codeActionquickfix engine; handlesunused-importforge-lint diagnostic with "Remove unused import" action; JSON-driven rule table indata/error_codes.json - Execute Commands —
solidity.clearCache(wipe on-disk cache + in-memory AST, force clean rebuild) ·solidity.reindex(evict in-memory AST, trigger background reindex from warm disk cache) - Save Performance — content hash check skips redundant solc rebuilds when file is unchanged;
collect_import_pragmasruns on blocking thread pool to avoid stalling the async runtime on large projects