49 lines
1.4 KiB
Lua
49 lines
1.4 KiB
Lua
local util = require 'lspconfig.util'
|
|
|
|
return {
|
|
default_config = {
|
|
cmd = { 'solidity-ls', '--stdio' },
|
|
filetypes = { 'solidity' },
|
|
root_dir = util.root_pattern('.git', 'package.json'),
|
|
settings = { solidity = { includePath = '', remapping = {} } },
|
|
},
|
|
docs = {
|
|
description = [[
|
|
https://github.com/qiuxiang/solidity-ls
|
|
|
|
npm i solidity-ls -g
|
|
|
|
Make sure that solc is installed and it's the same version of the file. solc-select is recommended.
|
|
|
|
Solidity language server is a LSP with autocomplete, go to definition and diagnostics.
|
|
|
|
If you use brownie, use this root_dir:
|
|
root_dir = util.root_pattern('brownie-config.yaml', '.git')
|
|
|
|
on includePath, you can add an extra path to search for external libs, on remapping you can remap lib <> path, like:
|
|
|
|
```lua
|
|
{ solidity = { includePath = '/Users/your_user/.brownie/packages/', remapping = { ["@OpenZeppelin/"] = 'OpenZeppelin/openzeppelin-contracts@4.6.0/' } } }
|
|
```
|
|
|
|
**For brownie users**
|
|
Change the root_dir to:
|
|
|
|
```lua
|
|
root_pattern("brownie-config.yaml", ".git")
|
|
```
|
|
|
|
The best way of using it is to have a package.json in your project folder with the packages that you will use.
|
|
After installing with package.json, just create a `remappings.txt` with:
|
|
|
|
```
|
|
@OpenZeppelin/=node_modules/OpenZeppelin/openzeppelin-contracts@4.6.0/
|
|
```
|
|
|
|
You can omit the node_modules as well.
|
|
]],
|
|
default_config = {
|
|
root_dir = [[root_pattern("package.json", ".git")]],
|
|
},
|
|
},
|
|
}
|