From 779de263f173f7e6f181d1e8faa475be8b05167d Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Fri, 17 May 2024 10:10:28 +0200 Subject: [PATCH] feat(util): `mini.bufremove` is no longer needed --- NEWS.md | 7 +++++- lua/lazyvim/config/keymaps.lua | 2 ++ lua/lazyvim/plugins/editor.lua | 27 ----------------------- lua/lazyvim/util/ui.lua | 39 ++++++++++++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 28 deletions(-) diff --git a/NEWS.md b/NEWS.md index 60e07692..562e9fe8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,6 +2,12 @@ ## 11.x +- new option `vim.g.deprecation_warnings` to disable deprecation warnings + Defaults to `false`. To disable, set it to `true` in your `options.lua` + +- `vim-illuminate` move to extras + Document highlights now use native lsp functionality by default + Since Neovim 0.10 has been released, I've been working on a new version of **LazyVim** that is fully compatible with all the latest Neovim features. @@ -32,7 +38,6 @@ Additionally, some core plugins have been moved to extras. - `mini.surround` - `mini.indentscope` scopes are now also highlighted with `indent-blankline` - `nvim-treesitter-context` - - `vim-illuminate`: document highlights now use native lsp functionality by default - There's a new extra for the `nvim-treesitter` **rewrite**. Since the rewrite is not backward compatible, some plugins will be disabled diff --git a/lua/lazyvim/config/keymaps.lua b/lua/lazyvim/config/keymaps.lua index 089448d1..7464f33e 100644 --- a/lua/lazyvim/config/keymaps.lua +++ b/lua/lazyvim/config/keymaps.lua @@ -37,6 +37,8 @@ map("n", "[b", "bprevious", { desc = "Prev Buffer" }) map("n", "]b", "bnext", { desc = "Next Buffer" }) map("n", "bb", "e #", { desc = "Switch to Other Buffer" }) map("n", "`", "e #", { desc = "Switch to Other Buffer" }) +map("n", "bd", LazyVim.ui.bufremove, { desc = "Delete Buffer" }) +map("n", "bD", ":bd", { desc = "Delete Buffer and Window" }) -- Clear search with map({ "i", "n" }, "", "noh", { desc = "Escape and Clear hlsearch" }) diff --git a/lua/lazyvim/plugins/editor.lua b/lua/lazyvim/plugins/editor.lua index 7bcf9973..b09d4f02 100644 --- a/lua/lazyvim/plugins/editor.lua +++ b/lua/lazyvim/plugins/editor.lua @@ -409,33 +409,6 @@ return { }, }, - -- buffer remove - { - "echasnovski/mini.bufremove", - keys = { - { - "bd", - function() - local bd = require("mini.bufremove").delete - if vim.bo.modified then - local choice = vim.fn.confirm(("Save changes to %q?"):format(vim.fn.bufname()), "&Yes\n&No\n&Cancel") - if choice == 1 then -- Yes - vim.cmd.write() - bd(0) - elseif choice == 2 then -- No - bd(0, true) - end - else - bd(0) - end - end, - desc = "Delete Buffer", - }, - -- stylua: ignore - { "bD", function() require("mini.bufremove").delete(0, true) end, desc = "Delete Buffer (Force)" }, - }, - }, - -- better diagnostics list and others { "folke/trouble.nvim", diff --git a/lua/lazyvim/util/ui.lua b/lua/lazyvim/util/ui.lua index 91339ca7..5e18a25a 100644 --- a/lua/lazyvim/util/ui.lua +++ b/lua/lazyvim/util/ui.lua @@ -208,4 +208,43 @@ function M.foldexpr() return "0" end +function M.bufremove() + local buf = vim.api.nvim_get_current_buf() + + if vim.bo.modified then + local choice = vim.fn.confirm(("Save changes to %q?"):format(vim.fn.bufname()), "&Yes\n&No\n&Cancel") + if choice == 0 then -- Cancel + return + end + if choice == 1 then -- Yes + vim.cmd.write() + end + end + + for _, win in ipairs(vim.fn.win_findbuf(buf)) do + vim.api.nvim_win_call(win, function() + if not vim.api.nvim_win_is_valid(win) or vim.api.nvim_win_get_buf(win) ~= buf then + return + end + -- Try using alternate buffer + local alt = vim.fn.bufnr("#") + if alt ~= buf and vim.fn.buflisted(alt) == 1 then + vim.api.nvim_win_set_buf(win, alt) + return + end + + -- Try using previous buffer + local has_previous = pcall(vim.cmd, "bprevious") + if has_previous and buf ~= vim.api.nvim_win_get_buf(win) then + return + end + + -- Create new listed buffer + local new_buf = vim.api.nvim_create_buf(true, false) + vim.api.nvim_win_set_buf(win, new_buf) + end) + end + vim.api.nvim_buf_delete(buf, { force = true }) +end + return M