diff --git a/lua/plugins/copilot.lua b/lua/plugins/copilot.lua index b1e2a40..c5992af 100644 --- a/lua/plugins/copilot.lua +++ b/lua/plugins/copilot.lua @@ -1,29 +1,79 @@ -local now_if_args = vim.fn.argc(-1) > 0 and MiniDeps.now or MiniDeps.later +MiniDeps.later(function() + MiniDeps.add("zbirenbaum/copilot.lua") + -- TODO:(@janezicmatej) setup lsp nes + -- MiniDeps.add("copilotlsp-nvim/copilot-lsp") -now_if_args(function() - MiniDeps.add("github/copilot.vim") - - vim.g.copilot_filetypes = { - -- disable all and only allow specific filetyps - ["*"] = false, - -- - c = true, - cpp = true, - dockerfile = true, - go = true, - javascript = true, - lua = true, - nix = true, - python = true, - rust = true, - sh = true, - typescript = true, - } - - -- remap default to first close pumenu if open - local function suggest() - if vim.fn.pumvisible() == 1 then vim.fn.complete(vim.fn.col("."), {}) end - return vim.fn["copilot#Suggest"]() + local function no_attach_for_env() + if string.match(vim.fs.basename(vim.api.nvim_buf_get_name(0)), "^%.env.*") then + return false + end + return true end - vim.keymap.set("i", "", suggest) + + local opts = { + panel = { + keymap = { + jump_prev = false, + jump_next = false, + accept = false, + refresh = false, + open = false, + }, + }, + suggestion = { + -- auto_trigger = true, + keymap = { + accept = false, + accept_word = false, + accept_line = false, + next = false, + prev = false, + dismiss = false, + }, + }, + filetypes = { + -- disable all and only allow specific filetyps + ["*"] = false, + -- + c = true, + cpp = true, + dockerfile = true, + go = true, + javascript = true, + lua = true, + nix = true, + python = true, + rust = true, + sh = no_attach_for_env, + bash = no_attach_for_env, + typescript = true, + }, + } + require("copilot").setup(opts) + + local suggestion = require("copilot.suggestion") + + local function accept_if_visible() + vim.notify("is visible " .. (suggestion.is_visible() or "nil")) + if suggestion.is_visible() ~= nil then + suggestion.accept() + else + return "" + end + end + + local function close_pum_if_open(func) + return function() + if vim.fn.pumvisible() == 1 then vim.fn.complete(vim.fn.col("."), {}) end + return func() + end + end + + -- stylua: ignore start + vim.keymap.set({ "i" }, "", accept_if_visible, { desc = "copilot: accept suggestion", expr = true }) + vim.keymap.set({ "n", "i" }, "", suggestion.accept_line, { desc = "copilot: accept line" }) + + vim.keymap.set({ "n", "i" }, "", close_pum_if_open(suggestion.next), { desc = "copilot: next suggestion" }) + vim.keymap.set({ "n", "i" }, "", close_pum_if_open(suggestion.prev), { desc = "copilot: previous suggestion" }) + -- stylua: ignore start end) diff --git a/mini-deps-snap b/mini-deps-snap index 69c15c3..337c2cc 100644 --- a/mini-deps-snap +++ b/mini-deps-snap @@ -1,5 +1,5 @@ return { - ["copilot.vim"] = "da369d90cfd6c396b1d0ec259836a1c7222fb2ea", + ["copilot.lua"] = "3123983d00ae6859f8bc987d14ebb524bb41b618", ["fzf-lua"] = "db3ccffe79480543d8e0f7b0cac0d9b220f9486e", ["gitlinker.nvim"] = "cc59f732f3d043b626c8702cb725c82e54d35c25", ["gitsigns.nvim"] = "1ee5c1fd068c81f9dd06483e639c2aa4587dc197",