mirror of
https://github.com/hyzendust/KickestEnd.nvim.git
synced 2026-02-15 06:21:13 +01:00
Fix: alpha in normal mode. New tab keybind to fix all tab/buffer problems.
This commit is contained in:
@@ -9,9 +9,6 @@ return {
|
||||
local splash = require 'ascii_splash'
|
||||
dashboard.section.header.val = splash
|
||||
|
||||
-- Get Neovim starting directory
|
||||
local start_dir = vim.fn.getcwd()
|
||||
|
||||
-- Setup buttons
|
||||
dashboard.section.buttons.val = {
|
||||
-- New file
|
||||
@@ -21,55 +18,24 @@ return {
|
||||
vim.cmd 'enew'
|
||||
vim.cmd 'startinsert'
|
||||
end),
|
||||
-- Open Neo-tree in starting directory
|
||||
dashboard.button('<leader>n', ' Open Neo-tree', '<Cmd>cd ' .. vim.fn.fnameescape(start_dir) .. ' | Neotree toggle float<CR>'),
|
||||
-- Close Alpha window
|
||||
dashboard.button('<leader>q', ' Close this window', function()
|
||||
local current_buf = vim.api.nvim_get_current_buf()
|
||||
-- Count listed buffers
|
||||
local listed_count = 0
|
||||
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_get_option(buf, 'buflisted') then
|
||||
listed_count = listed_count + 1
|
||||
end
|
||||
end
|
||||
-- If only 1 listed buffer left, force quit Neovim
|
||||
if listed_count == 1 then
|
||||
vim.cmd 'qa!'
|
||||
else
|
||||
-- Delete current buffer
|
||||
if vim.api.nvim_buf_is_valid(current_buf) then
|
||||
vim.api.nvim_buf_delete(current_buf, { force = true })
|
||||
end
|
||||
-- Delete one listed, unmodified, no-name buffer
|
||||
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_is_valid(buf) then
|
||||
local listed = vim.api.nvim_buf_get_option(buf, 'buflisted')
|
||||
local modified = vim.api.nvim_buf_get_option(buf, 'modified')
|
||||
local name = vim.api.nvim_buf_get_name(buf)
|
||||
-- target buffers that are listed, have no modifications, and no name
|
||||
if listed and not modified and name == '' then
|
||||
vim.api.nvim_buf_delete(buf, { force = true })
|
||||
break -- delete only one buffer
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
-- Create new empty buffer in a new tab
|
||||
dashboard.button('<leader>e', ' New Tab', function()
|
||||
local alpha_buf = vim.api.nvim_get_current_buf()
|
||||
-- Close Alpha buffer
|
||||
vim.api.nvim_buf_delete(alpha_buf, { force = true })
|
||||
-- Create new tab and empty buffer
|
||||
vim.cmd 'tabnew'
|
||||
vim.cmd 'enew'
|
||||
end),
|
||||
-- Open Neo-tree in current directory
|
||||
dashboard.button('<leader>n', ' Open Neo-tree', '<Cmd>Neotree toggle float<CR>'),
|
||||
-- Close Neovim
|
||||
dashboard.button('<leader>q', ' Exit', function()
|
||||
vim.cmd 'qa!'
|
||||
end),
|
||||
}
|
||||
|
||||
-- Ensure Alpha buffer is a scratch buffer so closing it doesn’t leave [No Name]
|
||||
local opts = dashboard.opts
|
||||
opts.hide = true -- hide it from buffer list
|
||||
alpha.setup(opts)
|
||||
|
||||
-- Open Alpha in a dedicated scratch buffer if no file is loaded
|
||||
if vim.fn.bufnr '$' == 1 and vim.fn.bufname(0) == '' then
|
||||
vim.cmd 'enew' -- create a proper empty buffer
|
||||
vim.cmd 'Alpha' -- open Alpha in that buffer
|
||||
vim.bo.buflisted = false -- mark it unlisted so it doesn’t pollute buffer pickers
|
||||
vim.bo.buftype = 'nofile' -- make it a scratch buffer
|
||||
-- vim.bo.bufhidden = 'wipe' -- critical: buffer is automatically deleted when hidden
|
||||
end
|
||||
-- Setup Alpha dashboard
|
||||
alpha.setup(dashboard.opts)
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ return {
|
||||
if prompt_bufnr and vim.api.nvim_buf_is_valid(prompt_bufnr) then
|
||||
pcall(actions.close, prompt_bufnr)
|
||||
end
|
||||
-- 1. If file is already open → jump to it
|
||||
-- If file is already open → jump to it
|
||||
local tabpages = vim.api.nvim_list_tabpages()
|
||||
for _, tab in ipairs(tabpages) do
|
||||
for _, win in ipairs(vim.api.nvim_tabpage_list_wins(tab)) do
|
||||
@@ -86,7 +86,7 @@ return {
|
||||
end
|
||||
end
|
||||
end
|
||||
-- 2. If current tab has an empty "No Name" buffer → reuse it
|
||||
-- If current tab has an empty "No Name" buffer → reuse it
|
||||
local wins = vim.api.nvim_tabpage_list_wins(0)
|
||||
for _, win in ipairs(wins) do
|
||||
local buf = vim.api.nvim_win_get_buf(win)
|
||||
@@ -106,7 +106,7 @@ return {
|
||||
return
|
||||
end
|
||||
end
|
||||
-- 3. Otherwise → open in a new tab
|
||||
-- Otherwise → open in a new tab
|
||||
vim.cmd('tabnew ' .. vim.fn.fnameescape(path))
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user