feat(neovim): add GitHub Copilot and CopilotChat plugins

This commit introduces two new plugins to the Neovim configuration:
GitHub Copilot and CopilotChat. The GitHub Copilot plugin is added
directly, while the CopilotChat plugin is added with a custom setup
function. The setup function configures key mappings and prompts for
the CopilotChat plugin. Additionally, a new global variable
`install_copilot` is introduced to control the installation of these
plugins.
This commit is contained in:
ViViDboarder 2024-05-29 12:08:16 -07:00
parent 6bb2fa1de6
commit 46baaf7c1e
3 changed files with 55 additions and 0 deletions

View File

@ -619,6 +619,20 @@ use({
disable = not vim.g.install_sourcegraph, disable = not vim.g.install_sourcegraph,
}) })
use({
"https://github.com/github/copilot.vim",
disable = not vim.g.install_copilot,
})
use({
"https://github.com/CopilotC-Nvim/CopilotChat.nvim",
disable = not vim.g.install_copilot,
branch = "canary",
config = function()
require("plugins.copilotchat").setup()
end,
})
-- Auto sync after bootstrapping on a fresh box -- Auto sync after bootstrapping on a fresh box
if packer_bootstrap ~= "" then if packer_bootstrap ~= "" then
packer.sync() packer.sync()

View File

@ -0,0 +1,40 @@
local M = {}
function M.setup()
require("CopilotChat").setup({
mappings = {
complete = {
insert = "",
},
},
prompts = {
Explain = {
prompt = "/COPILOT_EXPLAIN Write a concise explanation for the active selection as paragraphs of text.",
},
},
})
local utils = require("utils")
if utils.try_require("telescope") ~= nil then
local cc_keymap = utils.curry_keymap("n", "<leader>cc")
cc_keymap("h", function()
local actions = require("CopilotChat.actions")
require("CopilotChat.integrations.telescope").pick(actions.help_actions())
end, { desc = "CopilotChat - Help" })
cc_keymap("p", function()
local actions = require("CopilotChat.actions")
require("CopilotChat.integrations.telescope").pick(actions.prompt_actions())
end, { desc = "CopilotChat - Prompt" })
cc_keymap("c", function()
local input = vim.fn.input("Quick Chat: ")
if input ~= nil and input ~= "" then
require("CopilotChat").ask(input, { selection = require("CopilotChat.select").buffer })
end
end, { desc = "CopilotChat - Quick Chat" })
end
end
return M

View File

@ -1 +1,2 @@
vim.g.install_copilot = false
vim.g.install_sourcegraph = false vim.g.install_sourcegraph = false