Compare commits

..

No commits in common. "main" and "v15.15.0" have entirely different histories.

10 changed files with 117 additions and 99 deletions

View file

@ -1,3 +1,3 @@
{ {
".": "16.0.0" ".": "15.15.0"
} }

View file

@ -1,26 +1,5 @@
# Changelog # Changelog
## [16.0.0](https://github.com/LazyVim/LazyVim/compare/v15.15.0...v16.0.0) (2026-05-27)
### ⚠ BREAKING CHANGES
* **refactoring:** conform to upstream breaking changes on 2.0 branch ([#7124](https://github.com/LazyVim/LazyVim/issues/7124))
### Features
* **keymaps:** added leader+bi to delete invisible buffers ([58089db](https://github.com/LazyVim/LazyVim/commit/58089db8b198fc81f91789b6f12d0617cae21437))
### Bug Fixes
* **autocmds:** correct version check for nvim-0.13 ([#7184](https://github.com/LazyVim/LazyVim/issues/7184)) ([6eb16e7](https://github.com/LazyVim/LazyVim/commit/6eb16e730d1a686224dca41b05ba125cfd62c1bb))
* **autocmds:** replace `vim.hl.on_yank` with `vim.hl.hl_op` for `nvim-0.13` and above ([#7171](https://github.com/LazyVim/LazyVim/issues/7171)) ([b30c031](https://github.com/LazyVim/LazyVim/commit/b30c0312ea1c5bed6b28e72d930059622b0525f8))
* **go:** use semanticTokens if setup in gopls config init_options ([#7172](https://github.com/LazyVim/LazyVim/issues/7172)) ([b830a52](https://github.com/LazyVim/LazyVim/commit/b830a523b5973c300639d4d9c4fea7d92fa04dc3))
* **hipatterns:** don't color #add (use it too often as a private function in TS) ([dc6240f](https://github.com/LazyVim/LazyVim/commit/dc6240f4d56ae0d40cd0e673ca740dda50c4bf3b))
* **oxc:** prefer top-level oxlint root_dir in monorepos ([d840410](https://github.com/LazyVim/LazyVim/commit/d840410047d20a8f93fb8d473599209ebe95584e))
* **refactoring:** conform to upstream breaking changes on 2.0 branch ([#7124](https://github.com/LazyVim/LazyVim/issues/7124)) ([d926923](https://github.com/LazyVim/LazyVim/commit/d92692309c41581e1f839033fbccd745be732c7e))
## [15.15.0](https://github.com/LazyVim/LazyVim/compare/v15.14.0...v15.15.0) (2026-04-02) ## [15.15.0](https://github.com/LazyVim/LazyVim/compare/v15.14.0...v15.15.0) (2026-04-02)

View file

@ -1,5 +1,4 @@
*LazyVim.txt* LazyVim docs *LazyVim.txt* LazyVim docs
For Neovim Last change: 2026 June 02
============================================================================== ==============================================================================
Table of Contents *LazyVim-table-of-contents* Table of Contents *LazyVim-table-of-contents*
@ -79,26 +78,22 @@ Try it with Docker ~
Install the LazyVim Starter ~ Install the LazyVim Starter ~
- Make a backup of your current Neovim files: - Make a backup of your current Neovim files:
>sh
>sh
mv ~/.config/nvim ~/.config/nvim.bak mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak mv ~/.local/share/nvim ~/.local/share/nvim.bak
< <
- Clone the starter - Clone the starter
>sh
>sh
git clone https://github.com/LazyVim/starter ~/.config/nvim git clone https://github.com/LazyVim/starter ~/.config/nvim
< <
- Remove the `.git` folder, so you can add it to your own repo later - Remove the `.git` folder, so you can add it to your own repo later
>sh
>sh
rm -rf ~/.config/nvim/.git rm -rf ~/.config/nvim/.git
< <
- Start Neovim! - Start Neovim!
>sh
>sh
nvim nvim
< <
Refer to the comments in the files on how to customize **LazyVim**. Refer to the comments in the files on how to customize **LazyVim**.
------------------------------------------------------------------------------ ------------------------------------------------------------------------------

View file

@ -18,11 +18,7 @@ vim.api.nvim_create_autocmd({ "FocusGained", "TermClose", "TermLeave" }, {
vim.api.nvim_create_autocmd("TextYankPost", { vim.api.nvim_create_autocmd("TextYankPost", {
group = augroup("highlight_yank"), group = augroup("highlight_yank"),
callback = function() callback = function()
if vim.fn.has("nvim-0.13") == 1 then (vim.hl or vim.highlight).on_yank()
vim.hl.hl_op()
else
(vim.hl or vim.highlight).on_yank()
end
end, end,
}) })

View file

@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util")
---@class LazyVimConfig: LazyVimOptions ---@class LazyVimConfig: LazyVimOptions
local M = {} local M = {}
M.version = "16.0.0" -- x-release-please-version M.version = "15.15.0" -- x-release-please-version
LazyVim.config = M LazyVim.config = M
---@class LazyVimOptions ---@class LazyVimOptions

View file

@ -43,9 +43,6 @@ end, { desc = "Delete Buffer" })
map("n", "<leader>bo", function() map("n", "<leader>bo", function()
Snacks.bufdelete.other() Snacks.bufdelete.other()
end, { desc = "Delete Other Buffers" }) end, { desc = "Delete Other Buffers" })
map("n", "<leader>bi", function()
Snacks.bufdelete.invisible()
end, { desc = "Delete Invisible Buffers" })
map("n", "<leader>bD", "<cmd>:bd<cr>", { desc = "Delete Buffer and Window" }) map("n", "<leader>bD", "<cmd>:bd<cr>", { desc = "Delete Buffer and Window" })
-- Clear search and stop snippet on escape -- Clear search and stop snippet on escape

View file

@ -1,64 +1,95 @@
if LazyVim.has_extra("editor.refactoring") then local pick = function()
if vim.fn.has("nvim-0.12") == 0 then local refactoring = require("refactoring")
LazyVim.error("refactoring.nvim requires Neovim 0.12 or higher", { title = "refactoring.nvim" }) if LazyVim.pick.picker.name == "telescope" then
return {} return require("telescope").extensions.refactoring.refactors()
elseif LazyVim.pick.picker.name == "fzf" then
local fzf_lua = require("fzf-lua")
local results = refactoring.get_refactors()
local opts = {
fzf_opts = {},
fzf_colors = true,
actions = {
["default"] = function(selected)
refactoring.refactor(selected[1])
end,
},
}
fzf_lua.fzf_exec(results, opts)
else
refactoring.select_refactor()
end end
end end
return { return {
{ "lewis6991/async.nvim", lazy = true },
{ {
"ThePrimeagen/refactoring.nvim", "ThePrimeagen/refactoring.nvim",
event = { "BufReadPre", "BufNewFile" }, event = { "BufReadPre", "BufNewFile" },
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
},
keys = { keys = {
{ "<leader>r", "", desc = "+refactor", mode = { "n", "x" } }, { "<leader>r", "", desc = "+refactor", mode = { "n", "x" } },
{ {
"<leader>rs", "<leader>rs",
function() pick,
return require("refactoring").select_refactor()
end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Select Refactor", desc = "Refactor",
}, },
{ {
"<leader>ri", "<leader>ri",
function() function()
return require("refactoring").inline_var() return require("refactoring").refactor("Inline Variable")
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Inline Variable", desc = "Inline Variable",
expr = true, expr = true,
}, },
{ {
"<leader>rP", "<leader>rb",
function() function()
return require("refactoring.debug").print_loc({ output_location = "below" }) return require("refactoring").refactor("Extract Block")
end,
desc = "Debug Print Location",
expr = true,
},
{
"<leader>rp",
function()
return require("refactoring.debug").print_var({ output_location = "below" }) .. "iw"
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Debug Print Variable", desc = "Extract Block",
expr = true,
},
{
"<leader>rc",
function()
return require("refactoring.debug").cleanup({ restore_view = true }) .. "ag"
end,
desc = "Debug Cleanup",
expr = true, expr = true,
}, },
{ {
"<leader>rf", "<leader>rf",
function() function()
return require("refactoring").extract_func() return require("refactoring").refactor("Extract Block To File")
end,
mode = { "n", "x" },
desc = "Extract Block To File",
expr = true,
},
{
"<leader>rP",
function()
require("refactoring").debug.printf({ below = false })
end,
desc = "Debug Print",
},
{
"<leader>rp",
function()
require("refactoring").debug.print_var({ normal = true })
end,
mode = { "n", "x" },
desc = "Debug Print Variable",
},
{
"<leader>rc",
function()
require("refactoring").debug.cleanup({})
end,
desc = "Debug Cleanup",
},
{
"<leader>rf",
function()
return require("refactoring").refactor("Extract Function")
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Extract Function", desc = "Extract Function",
@ -67,7 +98,7 @@ return {
{ {
"<leader>rF", "<leader>rF",
function() function()
return require("refactoring").extract_func_to_file() return require("refactoring").refactor("Extract Function To File")
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Extract Function To File", desc = "Extract Function To File",
@ -76,13 +107,52 @@ return {
{ {
"<leader>rx", "<leader>rx",
function() function()
return require("refactoring").extract_var() return require("refactoring").refactor("Extract Variable")
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Extract Variable", desc = "Extract Variable",
expr = true, expr = true,
}, },
{
"<leader>rp",
function()
require("refactoring").debug.print_var()
end,
mode = { "n", "x" },
desc = "Debug Print Variable",
},
}, },
opts = {}, opts = {
prompt_func_return_type = {
go = false,
java = false,
cpp = false,
c = false,
h = false,
hpp = false,
cxx = false,
},
prompt_func_param_type = {
go = false,
java = false,
cpp = false,
c = false,
h = false,
hpp = false,
cxx = false,
},
printf_statements = {},
print_var_statements = {},
show_success_message = true, -- shows a message with information about the refactor on success
-- i.e. [Refactor] Inlined 3 variable occurrences
},
config = function(_, opts)
require("refactoring").setup(opts)
if LazyVim.has("telescope.nvim") then
LazyVim.on_load("telescope.nvim", function()
require("telescope").load_extension("refactoring")
end)
end
end,
}, },
} }

View file

@ -14,9 +14,6 @@ return {
opts = { opts = {
servers = { servers = {
gopls = { gopls = {
init_options = {
semanticTokens = true,
},
settings = { settings = {
gopls = { gopls = {
gofumpt = true, gofumpt = true,
@ -49,6 +46,7 @@ return {
completeUnimported = true, completeUnimported = true,
staticcheck = true, staticcheck = true,
directoryFilters = { "-.git", "-.vscode", "-.idea", "-.vscode-test", "-node_modules" }, directoryFilters = { "-.git", "-.vscode", "-.idea", "-.vscode-test", "-node_modules" },
semanticTokens = true,
}, },
}, },
}, },
@ -58,12 +56,7 @@ return {
-- workaround for gopls not supporting semanticTokensProvider -- workaround for gopls not supporting semanticTokensProvider
-- https://github.com/golang/go/issues/54531#issuecomment-1464982242 -- https://github.com/golang/go/issues/54531#issuecomment-1464982242
Snacks.util.lsp.on({ name = "gopls" }, function(_, client) Snacks.util.lsp.on({ name = "gopls" }, function(_, client)
if if not client.server_capabilities.semanticTokensProvider then
client.config
and client.config.init_options
and client.config.init_options.semanticTokens
and not client.server_capabilities.semanticTokensProvider
then
local semantic = client.config.capabilities.textDocument.semanticTokens local semantic = client.config.capabilities.textDocument.semanticTokens
client.server_capabilities.semanticTokensProvider = { client.server_capabilities.semanticTokensProvider = {
full = true, full = true,

View file

@ -30,15 +30,6 @@ return {
servers = { servers = {
---@type lspconfig.settings.oxlint ---@type lspconfig.settings.oxlint
oxlint = { oxlint = {
root_dir = function(bufnr, on_dir)
-- prefer the top-level oxlint config if it exists (monorepo support)
local git = vim.fs.root(bufnr, ".git")
local markers = { ".oxlintrc.json", ".oxlintrc.jsonc", "oxlint.config.ts" }
local root = git and vim.fs.root(git, markers) or vim.fs.root(bufnr, markers)
if root then
on_dir(root)
end
end,
settings = { settings = {
fixKind = "all", fixKind = "all",
}, },

View file

@ -39,9 +39,6 @@ M.plugin = {
group = function(_, _, data) group = function(_, _, data)
---@type string ---@type string
local match = data.full_match local match = data.full_match
if match == "#add" then
return
end
local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4) local r, g, b = match:sub(2, 2), match:sub(3, 3), match:sub(4, 4)
local hex_color = "#" .. r .. r .. g .. g .. b .. b local hex_color = "#" .. r .. r .. g .. g .. b .. b