Compare commits

..

15 commits

Author SHA1 Message Date
folke
459a4c3b10 chore(build): auto-generated vimdocs 2026-06-02 13:35:54 +00:00
github-actions[bot]
c10948c50b
chore(main): release 16.0.0 (#7128)
🤖 I have created a release *beep* *boop*
---


##
[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](58089db8b1))


### Bug Fixes

* **autocmds:** correct version check for nvim-0.13
([#7184](https://github.com/LazyVim/LazyVim/issues/7184))
([6eb16e7](6eb16e730d))
* **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](b30c0312ea))
* **go:** use semanticTokens if setup in gopls config init_options
([#7172](https://github.com/LazyVim/LazyVim/issues/7172))
([b830a52](b830a523b5))
* **hipatterns:** don't color #add (use it too often as a private
function in TS)
([dc6240f](dc6240f4d5))
* **oxc:** prefer top-level oxlint root_dir in monorepos
([d840410](d840410047))
* **refactoring:** conform to upstream breaking changes on 2.0 branch
([#7124](https://github.com/LazyVim/LazyVim/issues/7124))
([d926923](d92692309c))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-02 15:34:30 +02:00
folke
35f56b9189 chore(build): auto-generated vimdocs 2026-05-27 13:04:26 +00:00
Iordanis Petkakis
6eb16e730d
fix(autocmds): correct version check for nvim-0.13 (#7184)
## Description
Fix the check for `nvim-0.13` for autocmd TextYankPost
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)

<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-05-27 13:44:51 +02:00
Thomas Vandal
b30c0312ea
fix(autocmds): replace vim.hl.on_yank with vim.hl.hl_op for nvim-0.13 and above (#7171)
## Description

<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

A recent PR (https://github.com/neovim/neovim/pull/39777) replaced
`vim.hl.on_yank` with a more generic `vim.hl.hl_op` and deprecated the
former.

This PR simply checks for `nvim-0.13` support and uses the new interface
if available.

This removes a deprecation warning and will avoid an error when
`on_yank` gets deprecated in the nvim 0.14 release.

Thanks!

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-05-26 15:27:06 +02:00
folke
c429ebb628 chore(build): auto-generated vimdocs 2026-05-26 13:26:59 +00:00
David Desmarais-Michaud
b830a523b5
fix(go): use semanticTokens if setup in gopls config init_options (#7172)
## Description

Since upgrading to the go lsp (gopls) to version 0.22.0 we receive the
following error on load of any Go file:

```
...nvim/lazy/LazyVim/lua/lazyvim/plugins/extras/lang/go.lua:64: attempt to index local 'semantic' (a nil value)
```

This PR adds a check to avoid this error.

If this causes degraded functionality, or a different fix around
semantic tokens is needed, I do not know.

## Screenshots

<img width="1423" height="219" alt="image"
src="https://github.com/user-attachments/assets/a4df1344-3e8f-4f29-9c8c-1257efed22b3"
/>

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-05-26 15:25:50 +02:00
folke
fa88241e2f chore(build): auto-generated vimdocs 2026-05-20 17:38:08 +00:00
Folke Lemaitre
58089db8b1
feat(keymaps): added leader+bi to delete invisible buffers 2026-05-20 19:36:43 +02:00
folke
2dc527e511 chore(build): auto-generated vimdocs 2026-05-18 10:33:59 +00:00
Folke Lemaitre
dc6240f4d5
fix(hipatterns): don't color #add (use it too often as a private function in TS) 2026-05-18 12:32:49 +02:00
folke
7c1301b895 chore(build): auto-generated vimdocs 2026-04-26 18:17:07 +00:00
Folke Lemaitre
d840410047
fix(oxc): prefer top-level oxlint root_dir in monorepos 2026-04-26 20:15:56 +02:00
folke
cdc47ae615 chore(build): auto-generated vimdocs 2026-04-22 09:33:58 +00:00
Iordanis Petkakis
d92692309c
fix(refactoring)!: conform to upstream breaking changes on 2.0 branch (#7124)
## Description
`refactoring.nvim` had a new 2.0 release with some breaking changes.
Adjust the LazyVim Extra.

Left `opts` with everything default as there've been changes there as
well, but I don't use the plugin.
<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

## Related Issue(s)
Fixes #7122
<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

## Screenshots

<!-- Add screenshots of the changes if applicable. -->

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
2026-04-22 11:32:53 +02:00
10 changed files with 87 additions and 105 deletions

View file

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

View file

@ -1,5 +1,26 @@
# 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,4 +1,5 @@
*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*
@ -78,22 +79,26 @@ 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,7 +18,11 @@ 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()
(vim.hl or vim.highlight).on_yank() if vim.fn.has("nvim-0.13") == 1 then
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 = "15.15.0" -- x-release-please-version M.version = "16.0.0" -- x-release-please-version
LazyVim.config = M LazyVim.config = M
---@class LazyVimOptions ---@class LazyVimOptions

View file

@ -43,6 +43,9 @@ 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,95 +1,64 @@
local pick = function() if LazyVim.has_extra("editor.refactoring") then
local refactoring = require("refactoring") if vim.fn.has("nvim-0.12") == 0 then
if LazyVim.pick.picker.name == "telescope" then LazyVim.error("refactoring.nvim requires Neovim 0.12 or higher", { title = "refactoring.nvim" })
return require("telescope").extensions.refactoring.refactors() return {}
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",
pick, function()
return require("refactoring").select_refactor()
end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Refactor", desc = "Select Refactor",
}, },
{ {
"<leader>ri", "<leader>ri",
function() function()
return require("refactoring").refactor("Inline Variable") return require("refactoring").inline_var()
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Inline Variable", desc = "Inline Variable",
expr = true, expr = true,
}, },
{
"<leader>rb",
function()
return require("refactoring").refactor("Extract Block")
end,
mode = { "n", "x" },
desc = "Extract Block",
expr = true,
},
{
"<leader>rf",
function()
return require("refactoring").refactor("Extract Block To File")
end,
mode = { "n", "x" },
desc = "Extract Block To File",
expr = true,
},
{ {
"<leader>rP", "<leader>rP",
function() function()
require("refactoring").debug.printf({ below = false }) return require("refactoring.debug").print_loc({ output_location = "below" })
end, end,
desc = "Debug Print", desc = "Debug Print Location",
expr = true,
}, },
{ {
"<leader>rp", "<leader>rp",
function() function()
require("refactoring").debug.print_var({ normal = true }) return require("refactoring.debug").print_var({ output_location = "below" }) .. "iw"
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Debug Print Variable", desc = "Debug Print Variable",
expr = true,
}, },
{ {
"<leader>rc", "<leader>rc",
function() function()
require("refactoring").debug.cleanup({}) return require("refactoring.debug").cleanup({ restore_view = true }) .. "ag"
end, end,
desc = "Debug Cleanup", desc = "Debug Cleanup",
expr = true,
}, },
{ {
"<leader>rf", "<leader>rf",
function() function()
return require("refactoring").refactor("Extract Function") return require("refactoring").extract_func()
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Extract Function", desc = "Extract Function",
@ -98,7 +67,7 @@ return {
{ {
"<leader>rF", "<leader>rF",
function() function()
return require("refactoring").refactor("Extract Function To File") return require("refactoring").extract_func_to_file()
end, end,
mode = { "n", "x" }, mode = { "n", "x" },
desc = "Extract Function To File", desc = "Extract Function To File",
@ -107,52 +76,13 @@ return {
{ {
"<leader>rx", "<leader>rx",
function() function()
return require("refactoring").refactor("Extract Variable") return require("refactoring").extract_var()
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,6 +14,9 @@ return {
opts = { opts = {
servers = { servers = {
gopls = { gopls = {
init_options = {
semanticTokens = true,
},
settings = { settings = {
gopls = { gopls = {
gofumpt = true, gofumpt = true,
@ -46,7 +49,6 @@ 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,
}, },
}, },
}, },
@ -56,7 +58,12 @@ 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 not client.server_capabilities.semanticTokensProvider then if
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,6 +30,15 @@ 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,6 +39,9 @@ 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