From c056f4e5fd953bc36053ad5aaa6847daad6b9c7f Mon Sep 17 00:00:00 2001 From: Charles Edward Gagnon <76854355+carloskiki@users.noreply.github.com> Date: Sun, 4 May 2025 12:46:24 -0400 Subject: [PATCH 1/4] Fix codeActions when rust-analyzer does not have lsp id 1. --- lua/rustaceanvim/commands/code_action_group.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lua/rustaceanvim/commands/code_action_group.lua b/lua/rustaceanvim/commands/code_action_group.lua index 6c2db129..e87889f7 100644 --- a/lua/rustaceanvim/commands/code_action_group.lua +++ b/lua/rustaceanvim/commands/code_action_group.lua @@ -126,7 +126,8 @@ local function on_code_action_results(results, ctx) ---@type rustaceanvim.CodeActionItem[] local action_items = {} - for _, result in ipairs(results) do + for i = 1, #t do + local result = t[i] or {} for _, action in ipairs(result.result or {}) do table.insert(action_items, { action = action, ctx = ctx }) end From 0082a528adec86bef3c87bc009cd4ee92ccfc502 Mon Sep 17 00:00:00 2001 From: Charles Edward Gagnon <76854355+carloskiki@users.noreply.github.com> Date: Sun, 4 May 2025 13:28:51 -0400 Subject: [PATCH 2/4] fix: use only the actions provided by `rust-analyzer` --- lua/rustaceanvim/commands/code_action_group.lua | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lua/rustaceanvim/commands/code_action_group.lua b/lua/rustaceanvim/commands/code_action_group.lua index e87889f7..f3976094 100644 --- a/lua/rustaceanvim/commands/code_action_group.lua +++ b/lua/rustaceanvim/commands/code_action_group.lua @@ -126,11 +126,10 @@ local function on_code_action_results(results, ctx) ---@type rustaceanvim.CodeActionItem[] local action_items = {} - for i = 1, #t do - local result = t[i] or {} - for _, action in ipairs(result.result or {}) do - table.insert(action_items, { action = action, ctx = ctx }) - end + local index = vim.lsp.get_clients({ name = "rust-analyzer" })[1].id + for _, action in ipairs(results[index].result or {}) do + table.insert(action_items, { action = action, ctx = ctx }) + end end if #action_items == 0 then vim.notify('No code actions available', vim.log.levels.INFO) From 9132f34f58de04a22f34a20c7faaf59e356b3b7e Mon Sep 17 00:00:00 2001 From: Charles Edward Gagnon <76854355+carloskiki@users.noreply.github.com> Date: Sun, 4 May 2025 13:36:13 -0400 Subject: [PATCH 3/4] fix: get all codeActions from all sources --- lua/rustaceanvim/commands/code_action_group.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lua/rustaceanvim/commands/code_action_group.lua b/lua/rustaceanvim/commands/code_action_group.lua index f3976094..d7512591 100644 --- a/lua/rustaceanvim/commands/code_action_group.lua +++ b/lua/rustaceanvim/commands/code_action_group.lua @@ -126,10 +126,10 @@ local function on_code_action_results(results, ctx) ---@type rustaceanvim.CodeActionItem[] local action_items = {} - local index = vim.lsp.get_clients({ name = "rust-analyzer" })[1].id - for _, action in ipairs(results[index].result or {}) do - table.insert(action_items, { action = action, ctx = ctx }) - end + for _, result in pairs(results) do + for _, action in ipairs(results.result or {}) do + table.insert(action_items, { action = action, ctx = ctx }) + end end if #action_items == 0 then vim.notify('No code actions available', vim.log.levels.INFO) From 15a06b4f5f159fd78ba6a9dd0f14df2e2427d719 Mon Sep 17 00:00:00 2001 From: Charles Edward Gagnon <76854355+carloskiki@users.noreply.github.com> Date: Sun, 4 May 2025 13:37:21 -0400 Subject: [PATCH 4/4] fix: typo --- lua/rustaceanvim/commands/code_action_group.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/rustaceanvim/commands/code_action_group.lua b/lua/rustaceanvim/commands/code_action_group.lua index d7512591..9f55c256 100644 --- a/lua/rustaceanvim/commands/code_action_group.lua +++ b/lua/rustaceanvim/commands/code_action_group.lua @@ -127,7 +127,7 @@ local function on_code_action_results(results, ctx) ---@type rustaceanvim.CodeActionItem[] local action_items = {} for _, result in pairs(results) do - for _, action in ipairs(results.result or {}) do + for _, action in ipairs(result.result or {}) do table.insert(action_items, { action = action, ctx = ctx }) end end