diff --git a/.config/nvim/lua/plugins/extras/lang/zig.lua b/.config/nvim/lua/plugins/extras/lang/zig.lua new file mode 100644 index 00000000..972663f1 --- /dev/null +++ b/.config/nvim/lua/plugins/extras/lang/zig.lua @@ -0,0 +1,79 @@ +return { + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts.ensure_installed) == "table" then + vim.list_extend(opts.ensure_installed, { "zig" }) + end + end, + }, + { + "neovim/nvim-lspconfig", + opts = { + servers = { + zls = {}, + }, + }, + }, + { + "williamboman/mason.nvim", + opts = function(_, opts) + opts.ensure_installed = opts.ensure_installed or {} + vim.list_extend(opts.ensure_installed, { "zls", "codelldb" }) + end, + }, + { + "nvim-neotest/neotest", + optional = true, + dependencies = { + "lawrence-laz/neotest-zig", + }, + opts = { + adapters = { + ["neotest-zig"] = {}, + }, + }, + }, + { + "mfussenegger/nvim-dap", + optional = true, + opts = function() + local dap = require("dap") + dap.configurations.zig = { + { + name = "Zig Run", + type = "codelldb", + request = "launch", + program = function() + os.execute("zig build") + local command = "find ! -type d -path './zig-out/bin/*' | grep -v 'Test' | sed 's#.*/##'" + local bin_location = io.popen(command, "r") + if bin_location ~= nil then + return "zig-out/bin/" .. bin_location:read("*a"):gsub("[\n\r]", "") + else + return "" + end + end, + cwd = "${workspaceFolder}", + stopOnEntry = false, + args = function() + local argv = {} + arg = vim.fn.input(string.format("Arguments: ")) + for a in string.gmatch(arg, "%S+") do + table.insert(argv, a) + end + return argv + end, + }, + } + end, + }, + { + "stevearc/conform.nvim", + opts = function(_, opts) + opts.formatters_by_ft.python = opts.formatters_by_ft.python or {} + table.insert(opts.formatters_by_ft.python, "zigfmt") + return opts + end, + }, +}