From 140b0e55b123a58b87c8c1f0502a0d79f7999a2c Mon Sep 17 00:00:00 2001 From: Al0den <111601320+Al0den@users.noreply.github.com> Date: Sat, 24 Aug 2024 18:59:21 +0200 Subject: [PATCH 1/2] Feat: Implement openURL --- lua/copilot/api.lua | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lua/copilot/api.lua b/lua/copilot/api.lua index 109b280a..a72688a1 100644 --- a/lua/copilot/api.lua +++ b/lua/copilot/api.lua @@ -227,12 +227,18 @@ mod.handlers = { statusNotification = status.handlers.statusNotification, ---@param result copilot_open_url_data ["copilot/openURL"] = function(_, result) - vim.api.nvim_echo({ - { "copilot/openURL" }, - { vim.inspect({ _, result }) }, - { "\n", "NONE" }, - }, true, {}) - error("not implemented: copilot.api.handlers['copilot/openURL']") + if package.config:sub(1, 1) == '/' then + vim.fn.jobstart("open", { result.target }) + elseif package.config:sub(1, 1) == '\\' then + vim.fn.jobstart("start", { result.target }) + else + vim.api.nvim_echo({ + { "copilot/openURL" }, + { vim.inspect({ _, result }) }, + { "\n", "NONE" }, + }, true, {}) + error("Unsupported OS: copilot.api.handlers['copilot/openURL']") + end end, } mod.panel = panel From 11ebdc9405c2368b32f3ba05ed9de51d694734d2 Mon Sep 17 00:00:00 2001 From: Al0den <111601320+Al0den@users.noreply.github.com> Date: Fri, 13 Sep 2024 11:09:22 +0200 Subject: [PATCH 2/2] feat: Use vim.ui.open --- lua/copilot/api.lua | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/lua/copilot/api.lua b/lua/copilot/api.lua index a72688a1..6c1b4767 100644 --- a/lua/copilot/api.lua +++ b/lua/copilot/api.lua @@ -226,21 +226,28 @@ mod.handlers = { PanelSolutionsDone = panel.handlers.PanelSolutionsDone, statusNotification = status.handlers.statusNotification, ---@param result copilot_open_url_data - ["copilot/openURL"] = function(_, result) - if package.config:sub(1, 1) == '/' then - vim.fn.jobstart("open", { result.target }) - elseif package.config:sub(1, 1) == '\\' then - vim.fn.jobstart("start", { result.target }) - else + ["copilot/openURL"] = function(_, result) + local success, _ = pcall(vim.ui.open, result.target) + if not success then + if vim.ui.open ~= nil then vim.api.nvim_echo({ { "copilot/openURL" }, { vim.inspect({ _, result }) }, { "\n", "NONE" }, }, true, {}) - error("Unsupported OS: copilot.api.handlers['copilot/openURL']") + error("Unsupported OS: vim.ui.open exists but failed to execute.") + else + vim.api.nvim_echo({ + { "copilot/openURL" }, + { vim.inspect({ _, result }) }, + { "\n", "NONE" }, + }, true, {}) + error("Unsupported Version: vim.ui.open requires Neovim > 0.10") + end end - end, + end } + mod.panel = panel mod.status = status