enc: Change buffer line to cookieline

This commit is contained in:
Pojok Code 2025-08-03 15:49:00 +07:00
parent 76277745b3
commit b30a97b80a
5 changed files with 207 additions and 37 deletions

View file

@ -4,6 +4,6 @@ require("pcode.config.lazy_lib")
require("pcode.user.colorscheme")
require("pcode.core.neovide")
vim.keymap.set({ "n", "v", "x" }, "<C-i>", function()
--[[ vim.keymap.set({ "n", "v", "x" }, "<C-i>", function()
require("gemini").ask_gemini()
end, { noremap = true, silent = true, desc = "Prompt Gemini CLI" })
end, { noremap = true, silent = true, desc = "Prompt Gemini CLI" }) ]]

View file

@ -1,34 +1,161 @@
return {
"akinsho/bufferline.nvim",
branch = "main",
event = { "BufRead", "InsertEnter", "BufNewFile" },
dependencies = "pojokcodeid/auto-bufferline.nvim",
config = function()
vim.opt.termguicolors = true
local config = require("auto-bufferline").config()
require("bufferline").setup(config)
end,
keys = {
{ "<leader>b", "", desc = "  Buffers", mode = "n" },
{
"<leader>bb",
function()
require("telescope.builtin").buffers(require("telescope.themes").get_dropdown({ previewer = false }))
end,
desc = "All Buffer",
mode = "n",
},
{
"<leader>bc",
function()
require("auto-bufferline.configs.utils").bufremove()
end,
desc = "Close current buffer",
mode = "n",
},
{ "<leader>bd", "<cmd>BufferLineCloseLeft<cr>", desc = "Close Buffer Left", mode = "n" },
{ "<leader>bD", "<cmd>BufferLineCloseRight<cr>", desc = "Close Buffer Right", mode = "n" },
{ "<leader>ba", "<cmd>BufferLineCloseOthers<cr>", desc = "Close Buffer Other", mode = "n" },
{ "<leader>bA", "<cmd>BufferLineCloseOthers<cr><cmd>bd!<cr>", desc = "Close Buffer All", mode = "n" },
},
"willothy/nvim-cokeline",
event = { "BufRead", "BufNewFile" },
opts = function()
local truncate_text = function(text, max_length)
if #text > max_length then
return text:sub(1, max_length) .. "..."
else
return text
end
end
local yellow = vim.g.terminal_color_3
local hlgroups = require("cokeline.hlgroups")
local hl_attr = hlgroups.get_hl_attr
return {
sidebar = {
filetype = { "NvimTree", "neo-tree" },
components = {
{
text = "",
fg = hl_attr("CursorLine", "bg"),
bg = hl_attr("Normal", "bg"),
},
{
text = " Explorer ",
fg = yellow,
bg = function()
return hl_attr("CursorLine", "bg")
end,
bold = true,
},
{
text = "",
fg = hl_attr("CursorLine", "bg"),
bg = hl_attr("Normal", "bg"),
},
},
},
default_hl = {
fg = function(buffer)
return buffer.is_focused and hl_attr("Normal", "fg") or hl_attr("Comment", "fg")
end,
bg = function(buffer)
return buffer.is_focused and hl_attr("CursorLine", "bg") or hl_attr("Normal", "bg")
end,
},
components = {
{
text = "",
fg = hl_attr("Comment", "fg"),
bg = hl_attr("Normal", "bg"),
},
{
text = "",
fg = function(buffer)
return buffer.is_focused and hl_attr("CursorLine", "bg") or hl_attr("Normal", "bg")
end,
bg = hl_attr("Normal", "bg"),
},
{
text = function(buffer)
return buffer.devicon.icon
end,
fg = function(buffer)
return buffer.devicon.color
end,
},
{
text = " ",
},
{
text = function(buffer)
return truncate_text(buffer.filename, 12) .. " "
end,
style = function(buffer)
return buffer.is_focused and "bold" or nil
end,
italic = function(buffer)
return buffer.is_focused and true or nil
end,
},
{
text = "󰅖",
delete_buffer_on_left_click = true,
},
{
text = "",
fg = function(buffer)
return buffer.is_focused and hl_attr("CursorLine", "bg") or hl_attr("Normal", "bg")
end,
bg = hl_attr("Normal", "bg"),
},
},
}
end,
keys = {
{ "<leader>b", "", desc = "  Buffers", mode = "n" },
{
"<Leader>bp",
"<Plug>(cokeline-switch-prev)",
desc = "Focus Previous buffer",
mode = "n",
},
{
"<Leader>bn",
"<Plug>(cokeline-switch-next)",
desc = "Focus next buffer",
mode = "n",
},
{
"<leader>bb",
function()
require("telescope.builtin").buffers(require("telescope.themes").get_dropdown({ previewer = false }))
end,
desc = "All Buffer",
mode = "n",
},
{
"<leader>bc",
function()
require("pcode.user.buffer").bufremove()
end,
desc = "Close current buffer",
mode = "n",
},
{
"<S-Tab>",
"<Plug>(cokeline-focus-prev)",
desc = "Focus previous buffer",
mode = "n",
},
{
"<Tab>",
"<Plug>(cokeline-focus-next)",
desc = "Focus buffer Next",
mode = "n",
},
{
"<S-PageUp>",
"<Plug>(cokeline-switch-prev)",
desc = "Switch to previous buffer",
mode = "n",
},
{
"<S-PageDown>",
"<Plug>(cokeline-switch-next)",
desc = "Switch to next buffer",
mode = "n",
},
{
"<S-t>",
function()
require("pcode.user.buffer").bufremove()
end,
desc = "Close Current Buffer",
mode = "n",
},
},
}

44
lua/pcode/user/buffer.lua Normal file
View file

@ -0,0 +1,44 @@
local M = {}
function M.bufremove(buf)
buf = buf or 0
buf = buf == 0 and vim.api.nvim_get_current_buf() or 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
if vim.api.nvim_buf_is_valid(buf) then
pcall(vim.cmd, "bdelete! " .. buf)
end
end
return M

View file

@ -18,7 +18,7 @@ return {
opts = {
-- for more options check out https://github.com/pojokcodeid/auto-lualine.nvim
setColor = "auto",
setOption = "parallelogram",
setOption = "roundedall",
setMode = 5,
},
},