return { desc = "Next edit suggestions with the Copilot LSP server", -- copilot-language-server { "neovim/nvim-lspconfig", opts = function(_, opts) local sk = LazyVim.opts("sidekick.nvim") ---@type sidekick.Config|{} if vim.tbl_get(sk, "nes", "enabled") ~= false then opts.servers = opts.servers or {} opts.servers.copilot = opts.servers.copilot or {} end end, }, -- lualine { "nvim-lualine/lualine.nvim", optional = true, event = "VeryLazy", opts = function(_, opts) local icons = { Error = { " ", "DiagnosticError" }, Inactive = { " ", "MsgArea" }, Warning = { " ", "DiagnosticWarn" }, Normal = { LazyVim.config.icons.kinds.Copilot, "Special" }, } table.insert(opts.sections.lualine_x, 2, { function() local status = require("sidekick.status").get() return status and vim.tbl_get(icons, status.kind, 1) end, cond = function() return require("sidekick.status").get() ~= nil end, color = function() local status = require("sidekick.status").get() local hl = status and (status.busy and "DiagnosticWarn" or vim.tbl_get(icons, status.kind, 2)) return { fg = Snacks.util.color(hl) } end, }) table.insert(opts.sections.lualine_x, 2, { function() local status = require("sidekick.status").cli() return " " .. (#status > 1 and #status or "") end, cond = function() return #require("sidekick.status").cli() > 0 end, color = function() return { fg = Snacks.util.color("Special") } end, }) end, }, { "folke/sidekick.nvim", opts = function() -- Accept inline suggestions or next edits LazyVim.cmp.actions.ai_nes = function() local Nes = require("sidekick.nes") if Nes.have() and (Nes.jump() or Nes.apply()) then return true end end Snacks.toggle({ name = "Sidekick NES", get = function() return require("sidekick.nes").enabled end, set = function(state) require("sidekick.nes").enable(state) end, }):map("uN") end, -- stylua: ignore keys = { -- nes is also useful in normal mode { "", LazyVim.cmp.map({ "ai_nes" }, ""), mode = { "n" }, expr = true }, { "a", "", desc = "+ai", mode = { "n", "v" } }, { "", function() require("sidekick.cli").toggle() end, desc = "Sidekick Toggle", mode = { "n", "t", "i", "x" }, }, { "aa", function() require("sidekick.cli").toggle() end, desc = "Sidekick Toggle CLI", }, { "as", function() require("sidekick.cli").select() end, -- Or to select only installed tools: -- require("sidekick.cli").select({ filter = { installed = true } }) desc = "Select CLI", }, { "ad", function() require("sidekick.cli").close() end, desc = "Detach a CLI Session", }, { "at", function() require("sidekick.cli").send({ msg = "{this}" }) end, mode = { "x", "n" }, desc = "Send This", }, { "af", function() require("sidekick.cli").send({ msg = "{file}" }) end, desc = "Send File", }, { "av", function() require("sidekick.cli").send({ msg = "{selection}" }) end, mode = { "x" }, desc = "Send Visual Selection", }, { "ap", function() require("sidekick.cli").prompt() end, mode = { "n", "x" }, desc = "Sidekick Select Prompt", }, }, }, { "folke/snacks.nvim", optional = true, opts = { picker = { actions = { sidekick_send = function(...) return require("sidekick.cli.picker.snacks").send(...) end, }, win = { input = { keys = { [""] = { "sidekick_send", mode = { "n", "i" }, }, }, }, }, }, }, }, }