summaryrefslogtreecommitdiffstatshomepage
path: root/nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua
diff options
context:
space:
mode:
Diffstat (limited to 'nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua')
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/rust-tools.lua143
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,
+})