ethereum / solidity

Solidity, the Smart Contract Programming Language
https://soliditylang.org
GNU General Public License v3.0
23.3k stars 5.77k forks source link

LSP throwing an error on each and every character I type in the editor #12825

Closed Gilgames000 closed 1 year ago

Gilgames000 commented 2 years ago

Description

The LSP throws an error whenever I'm editing a .sol file. The error gets triggered every time I type a character. Restarting the LSP or reinstalling it doesn't fix the problem.

Environment

Steps to Reproduce

Open any .sol file and start typing.

Error message:

LSP[solc]: Error INVALID_SERVER_MESSAGE: {
  error = {
    code = -32603,
    message = "Unhandled exception: /solidity/libsolidity/lsp/HandlerBase.cpp(48): Throw in function Json::Value solidity::lsp::HandlerBase::toJson(const solidity::langutil::SourceLocatio
n&) const\nDynamic exception type: boost::wrapexcept<solidity::langutil::InternalCompilerError>\nstd::exception::what: Solidity assertion failed\n[solidity::util::tag_comment*] = Solidity
 assertion failed\n"
  },
  jsonrpc = "2.0"
christianparpart commented 2 years ago

Hey @Gilgames000. Thanks for your report. I am using coc.nvim along with NeoVIM / VIM. Can you maybe tell me your vim-native LSP configuration such that I can reproduce your local environment?

Gilgames000 commented 2 years ago

Sure @christianparpart! I use the built-in LSP client, the official nvim-lspconfig configuration for it, nvim-cmp and an auto-completion engine that uses LSPs as completion sources, and nvim-lsp-installer to easily install and manage LSP servers.

You can install all of this using vim-plug

Plug 'neovim/nvim-lspconfig'
Plug 'williamboman/nvim-lsp-installer'
Plug 'hrsh7th/nvim-cmp'
Plug 'hrsh7th/cmp-nvim-lsp'

and then use :LspInstall solc to install solc. That's it! I didn't customize the LSP config. The default config can be found here. It sets the nearest ancestor with a .git folder as the root directory, and triggers the server on .sol files. The LSP install script gets the server from the GitHub releases page.

The only problem is that I get the error quite randomly, meaning that it doesn't fire right away sometimes. Though it always shows up quite consistently after I write some code. I still couldn't figure out what code exactly triggers it since it shows up quite often anyway...

Gilgames000 commented 2 years ago

I tried enabling solc again today to see if I could find some more clues about the issue. After writing a few lines of code I got this:

LSP[solc]: Error INVALID_SERVER_MESSAGE: {
  error = {
    code = -32603,
    message = "Unhandled exception: /solidity/libsolidity/interface/CompilerStack.cpp(353): Throw in function bool solidity::frontend::CompilerStack::parse()\nDynamic exception type: boos
t::wrapexcept<solidity::langutil::InternalCompilerError>\nstd::exception::what: Parser returned null but did not report error.\n[solidity::util::tag_comment*] = Parser returned null but d
id not report error.\n"
  },
  jsonrpc = "2.0"
}

Looks like a new message :monocle_face:

christianparpart commented 2 years ago

Yes, thanks @Gilgames000. Seems like neovim is doing something fishy here. It looks like it's not senting the initialization as its first step. I'll keep you posted. :)

Gilgames000 commented 2 years ago

Yes, thanks @Gilgames000. Seems like neovim is doing something fishy here. It looks like it's not senting the initialization as its first step. I'll keep you posted. :)

I see, thanks! Should I open an issue on neovim repo? Or the lsp repo? Since you seemed to imply that the problem is on their end. Correct me if I'm wrong!

Gilgames000 commented 2 years ago

Hey @christianparpart this morning I decided to go back to coc.nvim for the time being just for Solidity since you said it works fine for you so I set it up using the config I found in your dotfiles. But now I'm facing the same problem and error message on coc.nvim too. Here's the log:

## versions

vim version: NVIM v0.7.0-dev+1299-g773516365
node version: v16.14.2
coc.nvim version: 0.0.80-1fffa716 2022-04-04 12:52:23 +0800
coc.nvim directory: /home/gilgames/.config/nvim/plugged/coc.nvim
term: tmux
platform: linux

## Log of coc.nvim

2022-04-05T08:07:38.806 INFO (pid:14813) [services] - registered service "languageserver.Solidity"
2022-04-05T08:07:38.808 INFO (pid:14813) [plugin] - coc.nvim initialized with node: v16.14.2 after 31ms
2022-04-05T08:07:40.304 INFO (pid:14813) [services] - Solidity state change: stopped => starting
2022-04-05T08:07:40.310 INFO (pid:14813) [language-client-index] - Language server "languageserver.Solidity" started with 15208
2022-04-05T08:07:40.351 INFO (pid:14813) [services] - Solidity state change: starting => running
2022-04-05T08:07:40.354 INFO (pid:14813) [services] - service languageserver.Solidity started
2022-04-05T09:52:31.727 ERROR (pid:14813) [language-client-client] - Received message which is neither a response nor a notification message:
{
    "error": {
        "code": -32603,
        "message": "Unhandled exception: /solidity/libsolidity/interface/CompilerStack.cpp(1193): Throw in function solidity::frontend::CompilerStack::resolveImports()::<lambda(const solidity::frontend::CompilerStack::Source*)>\nDynamic exception type: boost::wrapexcept<solidity::langutil::InternalCompilerError>\nstd::exception::what: Solidity assertion failed\n[solidity::util::tag_comment*] = Solidity assertion failed\n"
    },
    "jsonrpc": "2.0"
}

and then the log goes on and on with the same error message being spammed for each keystroke I press when I'm editing a Solidity file.

0xgui commented 2 years ago

I'm having the exact same error but with coq_nvim. Used the same method as @Gilgames000 to install solc.

distractedm1nd commented 2 years ago

Facing the same error on MacOS, same installation method. The language server works great for a few minutes, then starts throwing this error on every keystroke - haven't been able to find out what triggers it yet.

distractedm1nd commented 2 years ago

I noticed you mentioned that nvim is doing something weird with the initialization, so I think this may be related: Running :LspRestart always fails, but it gives a different error.

  error = {
    code = -32002,
    message = "Server is not properly initialized."
  }
mouseless0x commented 2 years ago

Having the same issues as well. Running :LspRestart also yields

LSP[solc]: Error INVALID_SERVER_MESSAGE: {
  error = {
    code = -32002,
    message = "Server is not properly initialized."
  },
  jsonrpc = "2.0"

Read my log files and this is the first error that showed up for me

[ERROR][2022-05-11 22:03:31] .../lua/vim/lsp.lua:824    "LSP[solc]" "on_error" {
   "code =""INVALID_SERVER_MESSAGE",
   "err ="{
      "error ="{
         code = -32603,
         "message =""Unhandled exception: /solidity/libsolidity/interface/CompilerStack.cpp(353): Throw in function bool solidity::frontend::CompilerStack::parse()\nDynamic exception type: boost::wrapexcept<solidity::langutil::InternalCompilerError>\nstd::exception::what: Parser returned null but did not report error.\n[solidity::util::tag_comment*] = Parser returned null but did not report error.\n"
      },
      "jsonrpc =""2.0"
   }
}
anajuliabit commented 2 years ago

I'm with the same issue with coc.nvim. Everytime I open a solidity file, solc crashed.

[coc.nvim] The "solidity" server crashed 4 times in the last 3 minutes. The server will not be restarted.

Did anyone find a solution?

If I ran LspRestart solc

  error = {                                                                                                                                                                                                                                                                    
    code = -32002,                                                                                                                                                                                                                                                             
    message = "Server is not properly initialized."                                                                                                                                                                                                                            
  },                                                                                                                                                                                                                                                                           
  jsonrpc = "2.0"   
BitlyTwiser commented 2 years ago

It seems that this error is most prevalent when I am also running a hardhat node while simultaneously working in a solidity file.

When I spin down the hardhat node, the solc LSP seems to run fine unless I use LspRestart, which does still cause the initialization failure. It seems that the LSP server seems to work decently as long as the node is not running and I do not restart the LSP server.

There could be some underlying conflict caused by running the LSP and a local node in simultaneity on a localhost.

Side note: Running the local node on a different port: npx hardhat node --port 9000 also seems to assist in avoiding the initialization error, but have not confirmed much other than the LSP initialization error did not re-appear immediately after starting the node on an alternate port.

My workflow now has been to spin down the node, modify the code, then spin the node back up. Tis a bit a bugger, but a smidge better than the constant initialization errors upon each keystroke.

christianparpart commented 2 years ago

When I spin down the hardhat node, the solc LSP seems to run fine unless I use LspRestart, which does still cause the initialization failure. It seems that the LSP server seems to work decently as long as the node is not running and I do not restart the LSP server.

@BitlyTwiser solc is pretty strict about when calls are allowed, i.e. it doesn't allow a request to document-highlight if the server has not yet received the initialization call just yet.

Would you mind trying out a debug binary? What distribution / OS are you testing on? Mind, that we recently also merged some improvements on the LSP side, not necessarily to address this, but it might have had an impact. In case you still see the errors, I would like to give you a binary that produces a debug solc.log file, that you could hand me back for inspection.

BitlyTwiser commented 2 years ago

@christianparpart Data points for my current system: Linux 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64 x86_64

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04 LTS"

I shall attempt to perform some development on the Solidity smart contracts in the next few days to determine if I am yet running into LSP issues.

I would indeed be more than happy assist via utilizing a debugging binary if the issue yet persists.

christianparpart commented 2 years ago

@BitlyTwiser I've fixed a bug related to URL decoding. This might maybe also fix your problem.

Related fix-PR: https://github.com/ethereum/solidity/pull/13473

Would you mind giving that a try?

In case you need a prebuilt binary for Ubuntu Linux, here's one created by the CI:

https://output.circle-artifacts.com/output/job/1ddf7057-73e4-4ff4-92f4-4bff0a5ba70e/artifacts/0/solc

EDIT: You may need to sudo apt install libcvc4 in order to execute this binary, if not yet installed.

oscariquelme01 commented 2 years ago

Hi! I am experiencing the same problem as everyone here (error 32603 on pretty much every keystroke after writting some code)

I Have tried the fix above and it didn't solve the issue :( image

LSP[solc]: Error INVALID_SERVER_MESSAGE: {
  error = {
    code = -32603,
    message = "Unhandled exception: /solidity/libsolidity/lsp/HandlerBase.cpp(48): Throw in function Json::Value solidity::lsp::HandlerBase::toJson(const solidity::langutil::SourceLocation&) const\nDynamic exception type: boost::wrapexcept<solidity::langutil::InternalCompilerError>\nstd::exception::what: Solidity assertion failed\n[solidity::util::tag_comment*] = Solidity assertion failed\n"
  },
  jsonrpc = "2.0"

Any other fixes or ideas available? I am more than happy to run debug binaries

anajuliabit commented 2 years ago

@oscariquelme01, the only LSP that worked for me on Neovim was vscode-solidity. I installed it using nvim-lsp-installer, which now migrates to mason. Mason doesn't support vscode-solidity yet, but I'm working on a PR to add. You can find my conf on my dotfiles repo

oscariquelme01 commented 2 years ago

@anajuliabit Thanks a lot for the dotfiles! I ll be trying to figure out how to set up solidity_ls in the mean time. Quick question tho, where did you find the list of configuration options for the solidity_ls language server? I can't find it anywhere :(

trevorgjohnson commented 2 years ago

Personally, I've been having a lot more luck with solidity-ls for the time being. Configuration for this lsp is here

nzhl commented 2 years ago

Any progress to this, having the same issue just like @anajuliabit

anajuliabit commented 2 years ago

@oscariquelme01 they called the package solidity_ls on nvm-lspconfig. Conf is here.

beauwilliams commented 2 years ago

I tried enabling solc again today to see if I could find some more clues about the issue. After writing a few lines of code I got this:

LSP[solc]: Error INVALID_SERVER_MESSAGE: {
  error = {
    code = -32603,
    message = "Unhandled exception: /solidity/libsolidity/interface/CompilerStack.cpp(353): Throw in function bool solidity::frontend::CompilerStack::parse()\nDynamic exception type: boos
t::wrapexcept<solidity::langutil::InternalCompilerError>\nstd::exception::what: Parser returned null but did not report error.\n[solidity::util::tag_comment*] = Parser returned null but d
id not report error.\n"
  },
  jsonrpc = "2.0"
}

Looks like a new message 🧐

I am getting this frequently. The LSP is not usable for myself. I can produce this be deleting some lines and undoing deletion. Have you found a workaround?

nonogakhi commented 2 years ago

I have similar issue(0.8.17) with solc. I switched from lunarvim to astronvim which uses mason-lspconfig out of the box. With that I install solidity-ls through :LspInstall solidity which for the moment is more complete.

oliversavio commented 2 years ago

Similar issue. The day I installed it it worked just fine, but after a restart I cannot get this to work. Fails as described above.

NeoVim v0.7.2 solc 0.8.17

installed via Mason.

trevorgjohnson commented 2 years ago

Hey @oliversavio, I recommend using solidity-ls for the time being that was just added to mason.nvim if you use it. It's been working great for me until the solc lsp gets fixed

nickshatilo commented 2 years ago

Also having this issue. Would really appreciate this getting fixed!

zkSoju commented 2 years ago

Hey @oliversavio, I recommend using solidity-ls for the time being that was just added to mason.nvim if you use it. It's been working great for me until the solc lsp gets fixed

I seem to be getting this error when using solidity-ls - any idea why?

LSP[solidity]: Error SERVER_REQUEST_HANDLER_ERROR: "...neovim/0.8.0/share/nvim/runtime/lua/vim/lsp/handlers.lua:89: bad argument #1 to 'ipai
rs' (table expected, got nil)"
sebastianst commented 1 year ago

@christianparpart any progress on this? I can confirm the -32603 error popping up on almost every key stroke with nvim v0.8.0 and solc 0.8.17 on Arch Linux.

sebastianst commented 1 year ago

@christianparpart I can also confirm that the problem persists using #13473 (solc --version: 0.8.18-develop.2022.11.10+commit.a2de5d4b.Linux.g++)

R4k4210 commented 1 year ago

Same error here nvim v0.8.0 Arch Linux and Ubuntu WSL2.

beauwilliams commented 1 year ago

I tried enabling solc again today to see if I could find some more clues about the issue. After writing a few lines of code I got this:

LSP[solc]: Error INVALID_SERVER_MESSAGE: {
  error = {
    code = -32603,
    message = "Unhandled exception: /solidity/libsolidity/interface/CompilerStack.cpp(353): Throw in function bool solidity::frontend::CompilerStack::parse()\nDynamic exception type: boos
t::wrapexcept<solidity::langutil::InternalCompilerError>\nstd::exception::what: Parser returned null but did not report error.\n[solidity::util::tag_comment*] = Parser returned null but d
id not report error.\n"
  },
  jsonrpc = "2.0"
}

Looks like a new message 🧐

I am getting this frequently. The LSP is not usable for myself. I can produce this be deleting some lines and undoing deletion. Have you found a workaround?

Yes, I decided to autocompile my code, setting a node env var to speed it up. I get my errors from the compiler output instead of decorations in my text editor. I have the terminal in a split, and turned on a simple plugin I wrote that will autosave the file currently open on changes. So essentially I'm constantly compiling the code and seeing the output in the right split.

This is from my package.json

"compile-watch": "nodemon --watch ./contracts/ -e sol --exec 'TS_NODE_TRANSPILE_ONLY=true npx hardhat compile'"
opz commented 1 year ago

Hey @oliversavio, I recommend using solidity-ls for the time being that was just added to mason.nvim if you use it. It's been working great for me until the solc lsp gets fixed

I seem to be getting this error when using solidity-ls - any idea why?

LSP[solidity]: Error SERVER_REQUEST_HANDLER_ERROR: "...neovim/0.8.0/share/nvim/runtime/lua/vim/lsp/handlers.lua:89: bad argument #1 to 'ipai
rs' (table expected, got nil)"

@zkSoju you are probably missing the solc package.

R4k4210 commented 1 year ago

Hey @oliversavio, I recommend using solidity-ls for the time being that was just added to mason.nvim if you use it. It's been working great for me until the solc lsp gets fixed

I seem to be getting this error when using solidity-ls - any idea why?

LSP[solidity]: Error SERVER_REQUEST_HANDLER_ERROR: "...neovim/0.8.0/share/nvim/runtime/lua/vim/lsp/handlers.lua:89: bad argument #1 to 'ipai
rs' (table expected, got nil)"

I was able to make this works, I realized that I had to install solc

I was trying to do "npm install -g solc", but when you do that the execution commad is solcjs and dosen't work. Hope this helps you.

twopats commented 1 year ago

any updates for folks using solc here with neovim? =(

vp2305 commented 1 year ago

Did anyone find a solution for this issue? I am still getting error every time I enter or delete a character.

ChmielewskiKamil commented 1 year ago

I've managed to get the full LSP experience for Solidity (syntax highlighting, autocompletion, go-to definition etc.) The language server developed by the Nomic Foundation works flawlessly.

*For anyone wondering how to set this up step by step (I'm using AstroNvim):

  1. You can clone the repository locally: git clone https://github.com/NomicFoundation/hardhat-vscode.git
  2. cd into it cd hardhat-vscode
  3. npm install && npm run build
  4. cd ./server
  5. npm link to link it to your global npm packages
  6. nomicfoundation-solidity-language-server --stdio is ready to use in your nvim config

*That's how I did it, but I think that you could also simply do npm install @ignored/solidity-language-server -g

Update: That's correct. You can skip the above steps and just do the npm install.

AstroNvim uses mason, but since this LSP is not provided by default, we have to set it up manually. This documentation page on custom lsp config in astro nvim describes how to do this.

I am assuming you have your own user configuration folder. In your init.lua file: Add "solidity" to your server list.

-- Extend LSP configuration
lsp = {
  -- enable servers that you already have installed without mason
  servers = {
          -- "pyright"
          "solidity"
  },

After that set up the server settings:

-- Add overrides for LSP server settings, the keys are the name of the server
["server-settings"] = {
  solidity = {
      cmd = { 'nomicfoundation-solidity-language-server', '--stdio' },
      filetypes = { 'solidity' },
      root_dir = require("lspconfig.util").find_git_ancestor,
      single_file_support = true,
  },
},

You should be ready to go. Cheers 🎉

I've described this in greater detail on my blog - Solidity LSP Neovim setup

christianparpart commented 1 year ago

Sorry guys. I've quit working for EF some months ago for personal reasons. And given my private-life priorities I do not see myself continuing to work on solc/lsp in my free time any time soon either. Given the fact that the team however seems understaffed, I do not thing there'll be any progress any time soon. Maybe @NunoFilipeSantos or someone else from the team can shed more light into this?

Stay safe, Christian P.

franzihei commented 1 year ago

Thanks Chris for chiming in!

To add a bit of context to this: The team is not understaffed, we just have a roadmap that we try to stick to and allocate our resources accordingly. If you're curious, you can check out the roadmap project board for 2023 here.

NunoFilipeSantos commented 1 year ago

Hi @christianparpart answering since you tagged me.

  1. It is basically what Franzi said: Roadmap priorities above everything else.
  2. The team is ideally staffed.
anajuliabit commented 1 year ago

I've managed to get the full LSP experience for Solidity (syntax highlighting, autocompletion, go-to definition etc.) The language server developed by the Nomic Foundation works flawlessly.

*For anyone wondering how to set this up step by step (I'm using AstroNvim):

  1. You can clone the repository locally: git clone https://github.com/NomicFoundation/hardhat-vscode.git
  2. cd into it cd hardhat-vscode
  3. npm install && npm run build
  4. cd ./server
  5. npm link to link it to your global npm packages
  6. nomicfoundation-solidity-language-server --stdio is ready to use in your nvim config

*That's how I did it, but I think that you could also simply do npm install @ignored/solidity-language-server -g

Update: That's correct. You can skip the above steps and just do the npm install.

AstroNvim uses mason, but since this LSP is not provided by default, we have to set it up manually. This documentation page on custom lsp config in astro nvim describes how to do this.

I am assuming you have your own user configuration folder. In your init.lua file: Add "solidity" to your server list.

-- Extend LSP configuration
lsp = {
  -- enable servers that you already have installed without mason
  servers = {
          -- "pyright"
          "solidity"
  },

After that set up the server settings:

-- Add overrides for LSP server settings, the keys are the name of the server
["server-settings"] = {
  solidity = {
      cmd = { 'nomicfoundation-solidity-language-server', '--stdio' },
      filetypes = { 'solidity' },
      root_dir = require("lspconfig.util").find_git_ancestor,
      single_file_support = true,
  },
},

You should be ready to go. Cheers 🎉

I've described this in greater detail on my blog - Solidity LSP Neovim setup

I opened a PR to add nomicfoundation LSP to mason registry https://github.com/mason-org/mason-registry/pull/1322

Gilgames000 commented 1 year ago

I've managed to get the full LSP experience for Solidity (syntax highlighting, autocompletion, go-to definition etc.) The language server developed by the Nomic Foundation works flawlessly. *For anyone wondering how to set this up step by step (I'm using AstroNvim):

  1. You can clone the repository locally: git clone https://github.com/NomicFoundation/hardhat-vscode.git
  2. cd into it cd hardhat-vscode
  3. npm install && npm run build
  4. cd ./server
  5. npm link to link it to your global npm packages
  6. nomicfoundation-solidity-language-server --stdio is ready to use in your nvim config

*That's how I did it, but I think that you could also simply do npm install @ignored/solidity-language-server -g Update: That's correct. You can skip the above steps and just do the npm install. AstroNvim uses mason, but since this LSP is not provided by default, we have to set it up manually. This documentation page on custom lsp config in astro nvim describes how to do this. I am assuming you have your own user configuration folder. In your init.lua file: Add "solidity" to your server list.

-- Extend LSP configuration
lsp = {
  -- enable servers that you already have installed without mason
  servers = {
          -- "pyright"
          "solidity"
  },

After that set up the server settings:

-- Add overrides for LSP server settings, the keys are the name of the server
["server-settings"] = {
  solidity = {
      cmd = { 'nomicfoundation-solidity-language-server', '--stdio' },
      filetypes = { 'solidity' },
      root_dir = require("lspconfig.util").find_git_ancestor,
      single_file_support = true,
  },
},

You should be ready to go. Cheers tada I've described this in greater detail on my blog - Solidity LSP Neovim setup

I opened a PR to add nomicfoundation LSP to mason registry mason-org/mason-registry#1322

Thanks for the PR! I've actually been using nomic's LSP for a while, but I've been too lazy to open a PR in the mason repo 😅

trevorgjohnson commented 1 year ago

Thanks @anajuliabit for the recommendation and help with installation! It's been working great for me. Because it has been integrated into the Mason Registry (see here), you can just install it easily through Mason in nvim

For those using their own nvim config, you can create a new lspconfig config by putting the following at the top of your lsp settings:

local configs = require 'lspconfig.configs'
if not configs.nomic_solidity then
  configs.nomic_solidity = {
    default_config = {
      cmd = { 'nomicfoundation-solidity-language-server', '--stdio' },
      filetypes = { 'solidity' },
      root_dir = require("lspconfig.util").find_git_ancestor,
      -- require("lspconfig.util").root_pattern "foundry.toml",
      single_file_support = true,
      settings = {},
    },
  }
end

And then you can overwrite another server _(such as solidity_ls)_ using the new config:

if server_name == "solidity" then
  require("lspconfig").nomic_solidity.setup({
    on_attach = handler.on_attach,
    -- ...
      })
  return
end

Hope that helps!

anajuliabit commented 1 year ago

@trevorgjohnson

local lspconfig = require("lspconfig")
lspconfig.solidity.setup({
    cmd = { "nomicfoundation-solidity-language-server", "--stdio" },
    filetypes = { "solidity" },
    root_dir = require("lspconfig.util").find_git_ancestor,
    single_file_support = true,
})

This way should work as well

Handfish commented 1 year ago

Hi @ChmielewskiKamil @anajuliabit @trevorgjohnson,

I've followed both the blog post, and the Mason route and can not get nomicfoundation-solidity-language-server to show up under :LspInfo when opening a .sol file in nvim.

Following the blog-post I've checked and I could run the binary nomicfoundation-solidity-language-server. With Mason I've tried with it installed globally via npm, and with it uninstalled in global npm space. I cannot get any indication of nomicfoundation-solidity-language-server starting.

To date I've been using lsp-zero successfully for everything else, and I've tried yoinking this block with no success. Super confused atm.

Any ideas?

EDIT: Interestingly enough - @anajuliabit code snippet works to boot the nomicfoundation server for lsp-zero users as well since lsp-zero uses lspconfig internally. By referencing her dotfiles I was able to fix my go-to definition for .sol files. Her way of utilizing a LspAttach callback made the jump work better than the lsp-zero provided on_attach(). Hooray!

Thanks everyone.

nikola-matic commented 1 year ago

Hi all. Unfortunately, the LSP is currently experimental, and since we have no plans to work on it in the near future, I'll be closing this issue. If anything changes in the meantime, we'll likely re-open this.