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, + }, +}