From cccaae0a1bb01e325b5c5a021a940a2d465f170e Mon Sep 17 00:00:00 2001 From: r0k1s#i <171756217+pugud@users.noreply.github.com> Date: Sat, 9 Nov 2024 19:52:29 +0900 Subject: [PATCH] feat(lang): add solidity language support ## Description - Add Solidity language support to `nvim-treesitter` for syntax highlighting and enhanced code understanding. - Configure `nvim-lspconfig` for Solidity LSP support, setting up `solidity_ls` with a root pattern detection for Solidity projects. - Integrate `forge_fmt` as the formatter for Solidity files using `conform.nvim`, with command options for `forge fmt`. --- lua/lazyvim/plugins/extras/lang/solidity.lua | 47 ++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/lang/solidity.lua diff --git a/lua/lazyvim/plugins/extras/lang/solidity.lua b/lua/lazyvim/plugins/extras/lang/solidity.lua new file mode 100644 index 00000000..a0381ee4 --- /dev/null +++ b/lua/lazyvim/plugins/extras/lang/solidity.lua @@ -0,0 +1,47 @@ +return { + recommended = function() + return LazyVim.extras.wants({ + ft = "solidity", + root = { + "foundry.toml", + "hardhat.config.js", + "hardhat.config.ts", + }, + }) + end, + -- Add Solidity & related to treesitter + { + "nvim-treesitter/nvim-treesitter", + opts = { ensure_installed = { "solidity" } }, + }, + + -- Correctly setup lspconfig for Solidity + { + "neovim/nvim-lspconfig", + opts = { + servers = { + solidity_ls = { + filetypes = { "solidity" }, + root_dir = function(fname) + return require("lspconfig").util.root_pattern("foundry.toml", "hardhat.config.*", ".git")(fname) + end, + }, + }, + }, + }, + -- Formatter for Solidity + { + "conform.nvim", + opts = function(_, opts) + opts.formatters_by_ft = opts.formatters_by_ft or {} + opts.formatters_by_ft.solidity = { "forge_fmt" } + + opts.formatters = { + forge_fmt = { + command = "forge", + args = { "fmt" }, + }, + } + end, + }, +}