aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/nvim/lua/plugins/ai.lua
blob: 65780379e459d029311d20f4480fe70f45e19d9c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require("copilot").setup({
  suggestion = { enabled = false },
  panel = { enabled = false },
  -- Pinned Node 24 runtime; system nodejs (26.x) is incompatible with
  -- copilot-language-server. See ~/.local/share/chezmoi/run_onchange_after_install-copilot-node.sh
  copilot_node_command = vim.fs.joinpath(
    vim.env.XDG_DATA_HOME or (vim.env.HOME .. "/.local/share"),
    "copilot-node/bin/node"
  ),
  server_opts_overrides = {
    settings = {
      telemetry = {
        telemetryLevel = "off",
      },
    },
  },
  nes = {
    enabled = true,
    keymap = {
      accept_and_goto = "<leader>p",
      accept = false,
      dismiss = "<Esc>",
    },
  },
})

-- Accept NES in insert mode (copilot.lua only binds normal mode)
vim.keymap.set("i", "<C-f>", function()
  local ok, nes = pcall(require, "copilot-lsp.nes")
  if ok and nes.apply_pending_nes() then
    return
  end
  -- Fallback: native <C-f> (scroll window forward)
  local key = vim.api.nvim_replace_termcodes("<C-f>", true, false, true)
  vim.api.nvim_feedkeys(key, "n", false)
end, { desc = "Accept Copilot NES / scroll forward" })

vim.keymap.set("n", "<leader>tc", function()
  require("copilot.command").toggle()
end, { desc = "[T]oggle [C]opilot attachment" })