mirror of
https://github.com/hyzendust/KickestEnd.nvim.git
synced 2026-02-15 06:41:15 +01:00
Fix: Closing logic for if alpha window is open
This commit is contained in:
@@ -217,6 +217,19 @@ local function listed_buffer_count()
|
|||||||
end
|
end
|
||||||
return count
|
return count
|
||||||
end
|
end
|
||||||
|
-- Helper function: check if any Alpha buffer exists anywhere
|
||||||
|
local function is_alpha_running()
|
||||||
|
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||||
|
if vim.api.nvim_buf_is_valid(buf) then
|
||||||
|
local buftype = vim.api.nvim_buf_get_option(buf, 'buftype')
|
||||||
|
local ft = vim.api.nvim_buf_get_option(buf, 'filetype')
|
||||||
|
if buftype == 'nofile' and ft == 'alpha' then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
-- Main function
|
-- Main function
|
||||||
local function close_window(mode)
|
local function close_window(mode)
|
||||||
local bufnr = vim.api.nvim_get_current_buf()
|
local bufnr = vim.api.nvim_get_current_buf()
|
||||||
@@ -272,6 +285,12 @@ local function close_window(mode)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
-- Special case: only 1 listed buffer but an Alpha dashboard exists somewhere
|
||||||
|
if total_listed == 1 and is_alpha_running() then
|
||||||
|
-- Just close the current window instead of quitting Neovim
|
||||||
|
vim.cmd 'close'
|
||||||
|
return
|
||||||
|
end
|
||||||
-- Special case: last listed buffer in last window
|
-- Special case: last listed buffer in last window
|
||||||
if total_listed == 1 and win_count == 1 then
|
if total_listed == 1 and win_count == 1 then
|
||||||
if modified and mode ~= 'save' then
|
if modified and mode ~= 'save' then
|
||||||
|
|||||||
@@ -18,20 +18,33 @@ return {
|
|||||||
vim.cmd 'enew'
|
vim.cmd 'enew'
|
||||||
vim.cmd 'startinsert'
|
vim.cmd 'startinsert'
|
||||||
end),
|
end),
|
||||||
-- Create new empty buffer in a new tab
|
-- Create new tab
|
||||||
dashboard.button('<leader>e', ' New Tab', function()
|
dashboard.button('<leader>e', ' New Tab', function()
|
||||||
local alpha_buf = vim.api.nvim_get_current_buf()
|
-- Open a new tab
|
||||||
-- Close Alpha buffer
|
|
||||||
vim.api.nvim_buf_delete(alpha_buf, { force = true })
|
|
||||||
-- Create new tab and empty buffer
|
|
||||||
vim.cmd 'tabnew'
|
vim.cmd 'tabnew'
|
||||||
vim.cmd 'enew'
|
-- Open Alpha in that new tab
|
||||||
|
require('alpha').start(true)
|
||||||
end),
|
end),
|
||||||
-- Open Neo-tree in current directory
|
-- Open Neo-tree in current directory
|
||||||
dashboard.button('<leader>n', ' Open Neo-tree', '<Cmd>Neotree toggle float<CR>'),
|
dashboard.button('<leader>n', ' Open Neo-tree', '<Cmd>Neotree toggle float<CR>'),
|
||||||
-- Close Neovim
|
-- Close Alpha window or quit Neovim
|
||||||
dashboard.button('<leader>q', ' Exit', function()
|
dashboard.button('<leader>q', ' Exit', function()
|
||||||
|
-- Get current tab windows
|
||||||
|
local wins = vim.api.nvim_tabpage_list_wins(0)
|
||||||
|
if #wins > 1 then
|
||||||
|
-- If there are other windows in this tab, just close the Alpha window
|
||||||
|
vim.cmd 'close'
|
||||||
|
else
|
||||||
|
-- If this is the only window in the tab, check total tabs
|
||||||
|
local tab_count = #vim.api.nvim_list_tabpages()
|
||||||
|
if tab_count > 1 then
|
||||||
|
-- Close only the current tab
|
||||||
|
vim.cmd 'tabclose'
|
||||||
|
else
|
||||||
|
-- Quit Neovim if this is the last tab
|
||||||
vim.cmd 'qa!'
|
vim.cmd 'qa!'
|
||||||
|
end
|
||||||
|
end
|
||||||
end),
|
end),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user