Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Editor Setup

All editor configs support the same server settings. See the guide for your editor:

Full settings schema

settings.json
{
  "solidity-language-server": {
    "inlayHints": {
      "parameters": true,
      "gasEstimates": true
    },
    "lint": {
      "enabled": true,
      "severity": [],
      "only": [],
      "exclude": []
    },
    "fileOperations": {
      "templateOnCreate": true,
      "updateImportsOnRename": true,
      "updateImportsOnDelete": true
    },
    "projectIndex": {
      "fullProjectScan": true,
      "cacheMode": "v2",
      "incrementalEditReindex": false
    }
  }
}

Lint values

Foundry lint config reference (lint_on_build): Foundry linter config docs

  • lint.severity: "high", "med", "low", "info", "gas", "code-size"
  • lint.only / lint.exclude rule IDs:
    • incorrect-shift
    • unchecked-call
    • erc20-unchecked-transfer
    • divide-before-multiply
    • unsafe-typecast
    • pascal-case-struct
    • mixed-case-function
    • mixed-case-variable
    • screaming-snake-case-const
    • screaming-snake-case-immutable
    • unused-import
    • unaliased-plain-import
    • named-struct-fields
    • unsafe-cheatcode
    • asm-keccak256
    • custom-errors
    • unwrapped-modifier-logic

Notes

  • Empty arrays for severity, only, exclude mean "no filter".
  • Defaults are all enabled (true) with empty lint arrays.
  • projectIndex.fullProjectScan defaults to true to prioritize complete project references/definitions at startup.
  • projectIndex.cacheMode uses "v2" by default and should remain "v2" for normal use.
  • projectIndex.incrementalEditReindex enables an aggressive dependency-closure scoped reindex path on dirty sync.
  • projectIndex.fullProjectScan is available from v0.1.27.
  • In v0.1.27+, successful saves persist cache updates to disk immediately for touched files (v2 upsert), with single-flight/debounced workers still handling save bursts.
  • On warm load, partial cache reuse is reconciled by scoped recompilation of changed/affected files and then written back to disk.
  • v2 cache stores per-file hash history to support future hash-based affected planning.
  • For file rename workflows, editors may require explicit save-all to persist buffer edits to disk.