diff options
Diffstat (limited to 'nvim')
-rw-r--r-- | nvim/.config/nvim/lazy-lock.json | 4 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/plugins/ferris.lua | 15 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/plugins/neotest.lua | 28 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/plugins/rust-tools.lua | 99 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils.lua | 23 |
5 files changed, 69 insertions, 100 deletions
diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index ed77960..db59ac7 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -19,6 +19,7 @@ "conform.nvim": { "branch": "master", "commit": "8f86444d62fc4f012a56732b8fb2c595e1e21fde" }, "dressing.nvim": { "branch": "master", "commit": "c1e1d5fa44fe08811b6ef4aadac2b50e602f9504" }, "efmls-configs-nvim": { "branch": "main", "commit": "265037d589bde340227c60d2ceaaf552a2d83d85" }, + "ferris.nvim": { "branch": "main", "commit": "2ba71012d108dd630ef33681c767a8462709cd90" }, "git-conflict.nvim": { "branch": "main", "commit": "896261933afe2fddf6fb043d9cd4d88301b151a9" }, "gitsigns.nvim": { "branch": "main", "commit": "bb808fc7376ed7bac0fbe8f47b83d4bf01738167" }, "gruvbox.nvim": { "branch": "main", "commit": "fc2b7df3d8384e1ba32d0c5d515931f5ea366eb1" }, @@ -30,6 +31,8 @@ "mason-update-all": { "branch": "main", "commit": "007a4085fe5e830b9139313652e1553bf1a9b857" }, "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" }, "neodev.nvim": { "branch": "main", "commit": "e9dd1535759794635a951644c183beb327879407" }, + "neotest": { "branch": "master", "commit": "901891484db3d46ce43d56871273dc7d40621356" }, + "neotest-rust": { "branch": "main", "commit": "03e036a310379f132d4e39387e9076396132ce3f" }, "noice.nvim": { "branch": "main", "commit": "791c7adda821fd03529f995df2ee284ad591dabd" }, "nui.nvim": { "branch": "main", "commit": "c8de23342caf8d50b15d6b28368d36a56a69d76f" }, "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" }, @@ -55,7 +58,6 @@ "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, "pretty-fold.nvim": { "branch": "master", "commit": "a7d8b424abe0eedf50116c460fbe6dfd5783b1d5" }, "refactoring.nvim": { "branch": "master", "commit": "be6505be8bdd306646bb81399312c02927a60a51" }, - "rust-tools.nvim": { "branch": "patched", "commit": "4338a9b08faa8da8b5aad095a035ceff31301e3f" }, "statuscol.nvim": { "branch": "main", "commit": "0944234914438695050eec6f83b4669864680c1a" }, "telescope-dap.nvim": { "branch": "master", "commit": "4e2d5efb92062f0b865fe59b200b5ed7793833bf" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, diff --git a/nvim/.config/nvim/lua/plugins/ferris.lua b/nvim/.config/nvim/lua/plugins/ferris.lua new file mode 100644 index 0000000..0d4b881 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/ferris.lua @@ -0,0 +1,15 @@ +local utils = require("tobyvin.utils") + +---@type LazyPluginSpec +local M = { + "vxpm/ferris.nvim", + config = true, +} + +function M:init() + utils.on_attach(function() + require("ferris") + end, { name = "rust_analyzer" }) +end + +return M diff --git a/nvim/.config/nvim/lua/plugins/neotest.lua b/nvim/.config/nvim/lua/plugins/neotest.lua new file mode 100644 index 0000000..591d802 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/neotest.lua @@ -0,0 +1,28 @@ +local utils = require("tobyvin.utils") + +---@type LazyPluginSpec +local M = { + "nvim-neotest/neotest", + dependencies = { + "nvim-lua/plenary.nvim", + "rouge8/neotest-rust", + }, +} + +function M:init() + utils.on_attach(function() + vim.keymap.set("n", "<leader>tt", function() + require("neotest").run.run() + end, { desc = "run nearest test" }) + end, { name = "rust_analyzer" }) +end + +function M:config(opts) + opts.adapters = { + require("neotest-rust"), + } + + require("neotest").setup(opts) +end + +return M diff --git a/nvim/.config/nvim/lua/plugins/rust-tools.lua b/nvim/.config/nvim/lua/plugins/rust-tools.lua deleted file mode 100644 index 36d4af4..0000000 --- a/nvim/.config/nvim/lua/plugins/rust-tools.lua +++ /dev/null @@ -1,99 +0,0 @@ ----@type LazyPluginSpec -local M = { - "MunifTanjim/rust-tools.nvim", - ft = "rust", - dependencies = { - "neovim/nvim-lspconfig", - "nvim-lua/plenary.nvim", - }, - opts = { - tools = { - hover_actions = { - border = "single", - }, - }, - server = require("tobyvin.lsp.configs").rust_analyzer, - dap = { adapter = require("tobyvin.dap.adapters").codelldb }, - }, -} - -local function set_target() - local Job = require("plenary.job") - local targets = Job:new({ - command = "rustc", - args = { "--print=target-list" }, - enable_recording = true, - }):sync() - table.insert(targets, 1, "default") - - vim.ui.select(targets, {}, function(input) - if not input then - return - end - - if input == "default" then - input = nil - end - - ---@diagnostic disable-next-line: assign-type-mismatch - for _, client in pairs(vim.lsp.get_active_clients({ name = "rust_analyzer" })) do - client.config.settings["rust-analyzer"].cargo.target = input - client.notify("workspace/didChangeConfiguration", { - settings = client.config.settings, - }) - - -- TODO: Figure out how to do this without defer, or maybe even reloading. - -- The workspace seems to need to be reloaded after the notification due to the - -- [inactive-code] diagnostic, but the request being processed before the - -- notification is completed, so I can only get it to work by deferring. This is - -- technically still a race condition? - vim.defer_fn(function() - client.request("rust-analyzer/reloadWorkspace", nil, function(err) - if err then - error(tostring(err)) - end - vim.notify("Cargo workspace reloaded") - end, 0) - end, 500) - end - end) -end - -function M.init() - require("tobyvin.lsp.configs").rust_analyzer = nil - - vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("rust-tools", {}), - desc = "setup rust-tools", - callback = function(args) - if vim.lsp.get_client_by_id(args.data.client_id).name ~= "rust_analyzer" then - return - end - - vim.api.nvim_create_user_command("RustSetTarget", set_target, { desc = "Set cargo target" }) - - vim.keymap.set("n", "<leader>dd", require("rust-tools").debuggables.debuggables, { - desc = "debug", - buffer = args.buf, - }) - vim.keymap.set("n", "<leader>dD", require("rust-tools").cached_commands.execute_last_debuggable, { - desc = "rerun last debug", - buffer = args.buf, - }) - vim.keymap.set("n", "<leader>tt", require("rust-tools").runnables.runnables, { - desc = "test", - buffer = args.buf, - }) - vim.keymap.set("n", "<leader>tT", require("rust-tools").cached_commands.execute_last_runnable, { - desc = "rerun last test", - buffer = args.buf, - }) - vim.keymap.set("n", "<leader>le", require("rust-tools").expand_macro.expand_macro, { - desc = "expand macro", - buffer = args.buf, - }) - end, - }) -end - -return M diff --git a/nvim/.config/nvim/lua/tobyvin/utils.lua b/nvim/.config/nvim/lua/tobyvin/utils.lua index 82f7a27..79e7c44 100644 --- a/nvim/.config/nvim/lua/tobyvin/utils.lua +++ b/nvim/.config/nvim/lua/tobyvin/utils.lua @@ -5,6 +5,29 @@ function M.inspect(v) return v end +---@param on_attach fun(client: lsp.Client, buffer: integer): boolean|nil +---@param filter vim.lsp.get_clients.filter|nil +function M.on_attach(on_attach, filter) + vim.api.nvim_create_autocmd("LspAttach", { + desc = "on client attach", + callback = function(args) + local bufnr = args.buf ---@type number + local client = vim.lsp.get_client_by_id(args.data.client_id) + filter = filter or {} + + if + client + and (filter.id == nil or client.id == filter.id) + and (filter.name == nil or client.name == filter.name) + and (filter.bufnr == nil or bufnr == filter.bufnr) + and (filter.method == nil or client.supports_method(filter.method, { bufnr = bufnr })) + then + on_attach(client, bufnr) + end + end, + }) +end + --- Merges two or more highlights. ---@param ns integer Namespace ---@param name string name of new hl |