DEV Community

Cover image for Builtin Solidity Language Server

Builtin Solidity Language Server

Christian Parpart on April 06, 2021

Hey fellows! At Ethereum I am currently part time developing a language server mode as part of the solidity compiler. While this is still in early...
Collapse
 
miloops profile image
Emilio Tagua

This is great. Can you jump to definition using coc on nvim? I get:

[coc.nvim]: Error on notification "jumpImplementation": implementation provider not found for current buffer, your language server doesn't support it.

Collapse
 
christianparpart profile image
Christian Parpart

Hey. Can you please tell me what coc-nvim version you are using? I am actually mainly using coc-nvim and it works, but it may be that your coc-nvim implementation requires an explicit feature registration that I am not doing yet. Will do so then. And please keep on track at our Github issue at: github.com/ethereum/solidity/issue...

Collapse
 
miloops profile image
Emilio Tagua

Hey! I'm using latest Plug 'neoclide/coc.nvim', {'branch': 'release'} . I'll keep an eye on that issue, thanks!

Collapse
 
skurob profile image
roberto montalti • Edited

Nice guide, i've followed the steps needed to set this up on vim with coc, i've noticed that my language server only reports possible compile errors but auto-suggestions doesn't seem to work, it this intended to be happening, am i missing something?

my coc config looks like this

    "languageserver": {
        "solidity": {
            "command": "solc-linux64",
            "args": [ "--lsp" ],
            "trace.server": "verbose",
            "rootPatterns": [".git/"],
            "filetypes": ["solidity", "sol"]
        },
        ...other configs
Enter fullscreen mode Exit fullscreen mode


`

Collapse
 
christianparpart profile image
Christian Parpart

Hey. Many thanks for your interest. Yes, that is intended as it is - for now - just a PoC (proof of concept). I definitely want to continue working on this and we have it in our high priority item list, so it will come. I will by then also keep posting updates. I am really happy about all the positive Feedback have have gotten so far. Many thanks.

p.s. auto complete is a non-trivial task, given the way the compiler currently works. So expect other features before that will come.

Many thanks!

Collapse
 
0xpaella profile image
Carlos González Juárez

Great work! I wanted to know how to get the solidity compiler to accept the "--lsp" argument. I'm in Mac so I can't use the file you just shared and I haven't been able to find any documentation to do it on my own.
Any tips are welcomed :D

Collapse
 
christianparpart profile image
Christian Parpart

Hey Carlos, I have not provided a builtin binary for Mac just yet (I was actually just answering the very same question in our official github ticket lol). I will provide one in a next VScode extension release as the interest seems to exist.

What you can do right now however would be to build solidity from source yourself (using the lsp branch) and configure the VScode solidity extension to use the solc binary you manually compiled.

-- On the other hand, if you are not used to that manual work, I'd favor to spare you from that and would kindly ask you to just wait a bit longer. Check the above posted URL to the github issue, track it. and I'll release a new version soon. :)

p.s.: can't state often enough. It's still beta (i.e. not feature complete), so please bare with me :)

Collapse
 
neel229 profile image
Neel Modi

Hey Christian, I was recently interested in building and LSP Server for Solidity as well. Could you hook me up with some resources to refer?

Collapse
 
christianparpart profile image
Christian Parpart

Join us on matrix (or gitter). There we can talk more in real-time. My nick there should be "christianparpart" as well. Generally, the first place to look at should be the LSP specification. That's at least what I did.
But instead of creating another LSP, maybe we can collaborate.
Also, keep in mind, we strictly only provide the LSP and most editors / IDEs are fine with this, but some are not, such as VScode. So there's also head-room for projects on top of our LSP natively built into solc.

Collapse
 
rikikudohust profile image
rikikudohust • Edited

This is exactly what i need. But I can install solc support LSP. Can you help me ?
I am using Neovim

Collapse
 
christianparpart profile image
Christian Parpart

You guys make me want to be more active on dev.to. i cannot as of right now (busy). But as soon as I can i will also update the binaries and extension package. :)