diff options
Diffstat (limited to 'nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua')
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua | 143 |
1 files changed, 69 insertions, 74 deletions
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua b/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua index 51602f5..18a0124 100644 --- a/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua +++ b/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua @@ -1,91 +1,86 @@ +local status_ok, rust_tools = pcall(require, "rust-tools") +if not status_ok then + vim.notify("Failed to load module 'rust-tools'", vim.log.levels.ERROR) + return +end + local utils = require("tobyvin.utils") local lsp = require("tobyvin.lsp") local dap = require("tobyvin.plugins.dap") -local M = {} - -M.setup = function() - local status_ok, rust_tools = pcall(require, "rust-tools") - if not status_ok then - vim.notify("Failed to load module 'rust-tools'", vim.log.levels.ERROR) - return - end - local function parse_lines(t) - local ret = {} +local function parse_lines(t) + local ret = {} - local name = t.name - local text = "// Recursive expansion of the " .. name .. " macro" - table.insert(ret, "// " .. string.rep("=", string.len(text) - 3)) - table.insert(ret, text) - table.insert(ret, "// " .. string.rep("=", string.len(text) - 3)) - table.insert(ret, "") + local name = t.name + local text = "// Recursive expansion of the " .. name .. " macro" + table.insert(ret, "// " .. string.rep("=", string.len(text) - 3)) + table.insert(ret, text) + table.insert(ret, "// " .. string.rep("=", string.len(text) - 3)) + table.insert(ret, "") - local expansion = t.expansion - for string in string.gmatch(expansion, "([^\n]+)") do - table.insert(ret, string) - end - - return ret + local expansion = t.expansion + for string in string.gmatch(expansion, "([^\n]+)") do + table.insert(ret, string) end - local handler = function(_, result) - if result == nil then - vim.api.nvim_out_write("No macro under cursor!\n") - return - end + return ret +end - local contents = parse_lines(result) - local opts = { - focus_id = "expand_macro", - close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, - border = "single", - scope = "cursor", - } - vim.lsp.util.open_floating_preview(contents, "rust", opts) +local handler = function(_, result) + if result == nil then + vim.api.nvim_out_write("No macro under cursor!\n") + return end - require("rust-tools.expand_macro").expand_macro = function() - ---@diagnostic disable-next-line: missing-parameter - local params = vim.lsp.util.make_position_params() - rust_tools.utils.request(0, "rust-analyzer/expandMacro", params, handler) - end + local contents = parse_lines(result) + local opts = { + focus_id = "expand_macro", + close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, + border = "single", + scope = "cursor", + } + vim.lsp.util.open_floating_preview(contents, "rust", opts) +end - vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("tobyvin_rust-tools", { clear = true }), - desc = "setup rust-tools", - callback = function(args) - local bufnr = args.buf - local client = vim.lsp.get_client_by_id(args.data.client_id) - if client.name ~= "rust_analyzer" then - return - end +require("rust-tools.expand_macro").expand_macro = function() + ---@diagnostic disable-next-line: missing-parameter + local params = vim.lsp.util.make_position_params() + rust_tools.utils.request(0, "rust-analyzer/expandMacro", params, handler) +end - local runnables = rust_tools.runnables.runnables - local debuggables = rust_tools.debuggables.debuggables - local open_cargo_toml = rust_tools.open_cargo_toml.open_cargo_toml - local external_docs = rust_tools.external_docs.open_external_docs - local expand_macro = rust_tools.expand_macro.expand_macro - local hover_actions = rust_tools.hover_actions.hover_actions +rust_tools.setup({ + tools = { + hover_actions = { + border = "single", + }, + }, + server = lsp.configs.rust_analyzer, + dap = { adapter = dap.adapters.codelldb }, +}) - vim.keymap.set("n", "<leader>dd", debuggables, { desc = "debug", buffer = bufnr }) - vim.keymap.set("n", "<leader>tt", runnables, { desc = "test", buffer = bufnr }) - vim.keymap.set("n", "<leader>lo", open_cargo_toml, { desc = "open Cargo.toml", buffer = bufnr }) - vim.keymap.set("n", "<leader>le", expand_macro, { desc = "expand macro", buffer = bufnr }) +vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("tobyvin_rust-tools", { clear = true }), + desc = "setup rust-tools", + callback = function(args) + local bufnr = args.buf + local client = vim.lsp.get_client_by_id(args.data.client_id) + if client.name ~= "rust_analyzer" then + return + end - utils.documentation.register("rust", external_docs) - utils.hover.register(hover_actions, { desc = "rust-tools hover actions", buffer = bufnr, priority = 10 }) - end, - }) + local runnables = rust_tools.runnables.runnables + local debuggables = rust_tools.debuggables.debuggables + local open_cargo_toml = rust_tools.open_cargo_toml.open_cargo_toml + local external_docs = rust_tools.external_docs.open_external_docs + local expand_macro = rust_tools.expand_macro.expand_macro + local hover_actions = rust_tools.hover_actions.hover_actions - rust_tools.setup({ - tools = { - hover_actions = { - border = "single", - }, - }, - server = lsp.configs.rust_analyzer, - dap = { adapter = dap.adapters.codelldb }, - }) -end + vim.keymap.set("n", "<leader>dd", debuggables, { desc = "debug", buffer = bufnr }) + vim.keymap.set("n", "<leader>tt", runnables, { desc = "test", buffer = bufnr }) + vim.keymap.set("n", "<leader>lo", open_cargo_toml, { desc = "open Cargo.toml", buffer = bufnr }) + vim.keymap.set("n", "<leader>le", expand_macro, { desc = "expand macro", buffer = bufnr }) -return M + utils.documentation.register("rust", external_docs) + utils.hover.register(hover_actions, { desc = "rust-tools hover actions", buffer = bufnr, priority = 10 }) + end, +}) |