mirror of
https://github.com/LazyVim/LazyVim.git
synced 2026-07-25 14:01:06 +00:00
Merge branch 'main' into dev
This commit is contained in:
commit
3974cd425b
11 changed files with 126 additions and 84 deletions
2
.github/.release-please-manifest.json
vendored
2
.github/.release-please-manifest.json
vendored
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
".": "15.3.0"
|
||||
".": "15.5.0"
|
||||
}
|
||||
|
|
|
|||
31
CHANGELOG.md
31
CHANGELOG.md
|
|
@ -1,5 +1,36 @@
|
|||
# Changelog
|
||||
|
||||
## [15.5.0](https://github.com/LazyVim/LazyVim/compare/v15.4.0...v15.5.0) (2025-09-27)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **ai.copilot-native:** let sidekick.nvim handle some things if available ([b25ea9c](https://github.com/LazyVim/LazyVim/commit/b25ea9c153e76d11579731e1d5529f275a36f91d))
|
||||
* **ai:** added completion hooks for next edit suggestions ([30a325d](https://github.com/LazyVim/LazyVim/commit/30a325d67184a80006dc55352d9663cdf01082d5))
|
||||
* **extras:** added extra for `sidekick.nvim` (Copilot LSP integration) ([dbfe209](https://github.com/LazyVim/LazyVim/commit/dbfe20996ce62d6b0048245ab4e304610548da04))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **ai.copilot:** disable copilot lsp if installed. copilot.lua needs its own version of the LSP ([e9bc607](https://github.com/LazyVim/LazyVim/commit/e9bc6074d1ea69e921a6195d1dc34333eaa310f8))
|
||||
|
||||
## [15.4.0](https://github.com/LazyVim/LazyVim/compare/v15.3.0...v15.4.0) (2025-09-26)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **copilot-native:** added experimental support for next edit suggestions. check the docs to enable ([c83df9e](https://github.com/LazyVim/LazyVim/commit/c83df9e68dd41f5a3f7df5a7048169ee286a7da8))
|
||||
* **copilot-native:** added keymaps to cycle suggestions ([6bd630c](https://github.com/LazyVim/LazyVim/commit/6bd630cec6f905665691d593dc5d0fb3d54f560c))
|
||||
* **copilot-native:** better lualine status ([9913e16](https://github.com/LazyVim/LazyVim/commit/9913e1665d783d9c4407633bc33475d403aff433))
|
||||
* **copilot-native:** removed experimental **nes** support with `copilot_lsp` for now, since it's not the best experience right now ([ed637bb](https://github.com/LazyVim/LazyVim/commit/ed637bb0f7f418de069a4d5a7ed8a7b3b93eb425))
|
||||
* **copilot:** added `copilot-native` extra to setup native inline completions in Neovim ([3b02963](https://github.com/LazyVim/LazyVim/commit/3b0296358508da1eb258c8716df163dd04fa6449))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **catppuccin:** follow-up on api change ([#6505](https://github.com/LazyVim/LazyVim/issues/6505)) ([af6e250](https://github.com/LazyVim/LazyVim/commit/af6e2505b54270c30145e8f4191b865870537287))
|
||||
* **treesitter:** create buffer-local textobjects keymaps only when available. Closes [#6508](https://github.com/LazyVim/LazyVim/issues/6508) ([5985ca0](https://github.com/LazyVim/LazyVim/commit/5985ca0cf1a0c1ddee8b2b718c730f988cec7001))
|
||||
|
||||
## [15.3.0](https://github.com/LazyVim/LazyVim/compare/v15.2.0...v15.3.0) (2025-09-23)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
*LazyVim.txt* For Neovim Last change: 2025 September 26
|
||||
*LazyVim.txt* For Neovim Last change: 2025 September 27
|
||||
|
||||
==============================================================================
|
||||
Table of Contents *LazyVim-table-of-contents*
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util")
|
|||
---@class LazyVimConfig: LazyVimOptions
|
||||
local M = {}
|
||||
|
||||
M.version = "15.3.0" -- x-release-please-version
|
||||
M.version = "15.5.0" -- x-release-please-version
|
||||
LazyVim.config = M
|
||||
|
||||
---@class LazyVimOptions
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ map("n", "<leader>bD", "<cmd>:bd<cr>", { desc = "Delete Buffer and Window" })
|
|||
map({ "i", "n", "s" }, "<esc>", function()
|
||||
vim.cmd("noh")
|
||||
LazyVim.cmp.actions.snippet_stop()
|
||||
LazyVim.cmp.actions.ai_stop()
|
||||
return "<esc>"
|
||||
end, { expr = true, desc = "Escape and Clear hlsearch" })
|
||||
|
||||
|
|
|
|||
|
|
@ -2,9 +2,6 @@
|
|||
if lazyvim_docs then
|
||||
-- Native inline completions don't support being shown as regular completions
|
||||
vim.g.ai_cmp = false
|
||||
|
||||
-- Set to `true` in your `options.lua` to enable experimental support for Next Edit Suggestions
|
||||
vim.g.copilot_nes = false
|
||||
end
|
||||
|
||||
if LazyVim.has_extra("ai.copilot-native") then
|
||||
|
|
@ -29,17 +26,6 @@ return {
|
|||
opts = {
|
||||
servers = {
|
||||
copilot = {
|
||||
handlers = {
|
||||
didChangeStatus = function(err, res, ctx)
|
||||
if err then
|
||||
return
|
||||
end
|
||||
status[ctx.client_id] = res.kind ~= "Normal" and "error" or res.busy and "pending" or "ok"
|
||||
if res.status == "Error" then
|
||||
LazyVim.error("Please use `:LspCopilotSignIn` to sign in to Copilot")
|
||||
end
|
||||
end,
|
||||
},
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{
|
||||
|
|
@ -60,41 +46,25 @@ return {
|
|||
setup = {
|
||||
copilot = function()
|
||||
vim.lsp.inline_completion.enable()
|
||||
|
||||
-- Only trigger NES updates:
|
||||
-- * when leaving insert mode
|
||||
-- * when text is changed (in normal mode)
|
||||
-- * when accepting a next edit suggestion
|
||||
local nes_update = Snacks.util.debounce(function()
|
||||
return vim.g.copilot_nes and require("copilot-lsp.nes").request_nes("copilot")
|
||||
end, { ms = 100 })
|
||||
|
||||
vim.api.nvim_create_autocmd({ "InsertLeave", "TextChanged" }, {
|
||||
group = vim.api.nvim_create_augroup("lazyvim.copilot-native.complete", { clear = true }),
|
||||
callback = nes_update,
|
||||
})
|
||||
|
||||
-- Accept inline suggestions or next edits
|
||||
LazyVim.cmp.actions.ai_accept = function()
|
||||
if vim.b.nes_state then
|
||||
local nes = require("copilot-lsp.nes")
|
||||
return vim.lsp.inline_completion.get()
|
||||
end
|
||||
|
||||
-- Try to jump to the start of the suggestion edit.
|
||||
if nes.walk_cursor_start_edit() then
|
||||
return true
|
||||
end
|
||||
|
||||
-- apply the pending suggestion and jump to the end of the edit.
|
||||
if nes.apply_pending_nes() then
|
||||
nes.walk_cursor_end_edit()
|
||||
nes_update() -- trigger new nes update after accept
|
||||
return true
|
||||
end
|
||||
end
|
||||
if vim.lsp.inline_completion.get() then
|
||||
-- nes_update() -- ensure nes update is triggered after inline completion
|
||||
return true
|
||||
end
|
||||
if not LazyVim.has_extra("ai.sidekick") then
|
||||
vim.lsp.config("copilot", {
|
||||
handlers = {
|
||||
didChangeStatus = function(err, res, ctx)
|
||||
if err then
|
||||
return
|
||||
end
|
||||
status[ctx.client_id] = res.kind ~= "Normal" and "error" or res.busy and "pending" or "ok"
|
||||
if res.status == "Error" then
|
||||
LazyVim.error("Please use `:LspCopilotSignIn` to sign in to Copilot")
|
||||
end
|
||||
end,
|
||||
},
|
||||
})
|
||||
end
|
||||
end,
|
||||
},
|
||||
|
|
@ -107,6 +77,9 @@ return {
|
|||
optional = true,
|
||||
event = "VeryLazy",
|
||||
opts = function(_, opts)
|
||||
if LazyVim.has_extra("ai.sidekick") then
|
||||
return
|
||||
end
|
||||
table.insert(
|
||||
opts.sections.lualine_x,
|
||||
2,
|
||||
|
|
@ -117,34 +90,4 @@ return {
|
|||
)
|
||||
end,
|
||||
},
|
||||
|
||||
vim.g.copilot_nes
|
||||
and {
|
||||
"copilotlsp-nvim/copilot-lsp",
|
||||
init = function()
|
||||
vim.api.nvim_create_autocmd("BufEnter", {
|
||||
callback = function(ev)
|
||||
local buf = ev.buf
|
||||
local client = vim.lsp.get_clients({ name = "copilot", bufnr = buf })[1]
|
||||
if not client then
|
||||
return
|
||||
end
|
||||
client:notify("textDocument/didFocus", {
|
||||
textDocument = {
|
||||
uri = vim.uri_from_bufnr(buf),
|
||||
},
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
LazyVim.cmp.actions.ai_stop = function()
|
||||
require("copilot-lsp.nes").clear()
|
||||
end
|
||||
end,
|
||||
keys = {
|
||||
-- nes is also useful in normal mode
|
||||
{ "<tab>", LazyVim.cmp.map({ "ai_accept" }, "<tab>"), mode = { "n" }, expr = true },
|
||||
},
|
||||
}
|
||||
or nil,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,17 @@ return {
|
|||
},
|
||||
},
|
||||
|
||||
-- copilot-language-server
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
servers = {
|
||||
-- copilot.lua only works with its own copilot lsp server
|
||||
copilot = { enabled = false },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- add ai_accept action
|
||||
{
|
||||
"zbirenbaum/copilot.lua",
|
||||
|
|
|
|||
59
lua/lazyvim/plugins/extras/ai/sidekick.lua
Normal file
59
lua/lazyvim/plugins/extras/ai/sidekick.lua
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
return {
|
||||
desc = "Next edit suggestions with the Copilot LSP server",
|
||||
|
||||
-- copilot-language-server
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
servers = {
|
||||
copilot = {},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- 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,
|
||||
})
|
||||
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
|
||||
end,
|
||||
keys = {
|
||||
-- nes is also useful in normal mode
|
||||
{ "<tab>", LazyVim.cmp.map({ "ai_nes" }, "<tab>"), mode = { "n" }, expr = true },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
@ -122,12 +122,12 @@ return {
|
|||
if opts.keymap.preset == "super-tab" then -- super-tab
|
||||
opts.keymap["<Tab>"] = {
|
||||
require("blink.cmp.keymap.presets").get("super-tab")["<Tab>"][1],
|
||||
LazyVim.cmp.map({ "snippet_forward", "ai_accept" }),
|
||||
LazyVim.cmp.map({ "snippet_forward", "ai_nes", "ai_accept" }),
|
||||
"fallback",
|
||||
}
|
||||
else -- other presets
|
||||
opts.keymap["<Tab>"] = {
|
||||
LazyVim.cmp.map({ "snippet_forward", "ai_accept" }),
|
||||
LazyVim.cmp.map({ "snippet_forward", "ai_nes", "ai_accept" }),
|
||||
"fallback",
|
||||
}
|
||||
end
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ return {
|
|||
fallback()
|
||||
end,
|
||||
["<tab>"] = function(fallback)
|
||||
return LazyVim.cmp.map({ "snippet_forward", "ai_accept" }, fallback)()
|
||||
return LazyVim.cmp.map({ "snippet_forward", "ai_nes", "ai_accept" }, fallback)()
|
||||
end,
|
||||
}),
|
||||
sources = cmp.config.sources({
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ M.actions = {
|
|||
vim.snippet.stop()
|
||||
end
|
||||
end,
|
||||
ai_stop = function() end,
|
||||
}
|
||||
|
||||
---@param actions string[]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue