mirror of
https://github.com/LazyVim/LazyVim.git
synced 2026-07-22 04:21:08 +00:00
Compare commits
15 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
459a4c3b10 | ||
|
|
c10948c50b | ||
|
|
35f56b9189 | ||
|
|
6eb16e730d | ||
|
|
b30c0312ea | ||
|
|
c429ebb628 | ||
|
|
b830a523b5 | ||
|
|
fa88241e2f | ||
|
|
58089db8b1 | ||
|
|
2dc527e511 | ||
|
|
dc6240f4d5 | ||
|
|
7c1301b895 | ||
|
|
d840410047 | ||
|
|
cdc47ae615 | ||
|
|
d92692309c |
10 changed files with 87 additions and 105 deletions
2
.github/.release-please-manifest.json
vendored
2
.github/.release-please-manifest.json
vendored
|
|
@ -1,3 +1,3 @@
|
||||||
{
|
{
|
||||||
".": "15.15.0"
|
".": "16.0.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
21
CHANGELOG.md
21
CHANGELOG.md
|
|
@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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**.
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue