From b30a97b80a02d9b5d54a38b4ad6f53c79e89482a Mon Sep 17 00:00:00 2001 From: Pojok Code Date: Sun, 3 Aug 2025 15:49:00 +0700 Subject: [PATCH] enc: Change buffer line to cookieline --- lazy-lock.json | 3 +- lua/pcode/core/init.lua | 4 +- lua/pcode/plugins/bufferline.lua | 191 +++++++++++++++++++++++++------ lua/pcode/user/buffer.lua | 44 +++++++ lua/pcode/user/custom.lua | 2 +- 5 files changed, 207 insertions(+), 37 deletions(-) create mode 100644 lua/pcode/user/buffer.lua diff --git a/lazy-lock.json b/lazy-lock.json index a1e7540..8be36be 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -2,13 +2,11 @@ "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, "alpha-nvim": { "branch": "main", "commit": "2b3cbcdd980cae1e022409289245053f62fb50f6" }, - "auto-bufferline.nvim": { "branch": "main", "commit": "6a69520dcb0dc615df3cf972f69027aae3f75c3e" }, "auto-conform.nvim": { "branch": "main", "commit": "5f0897235e84bf2f8ff9d634e81678d5bfa63ab8" }, "auto-lint.nvim": { "branch": "main", "commit": "aff13cb8eaa055e66e940d43b7d83166397e5413" }, "auto-lsp.nvim": { "branch": "main", "commit": "f32c94fff2862c313f4e150eb39dd0dc9bf18755" }, "auto-lualine.nvim": { "branch": "main", "commit": "201da916411a56d0b27905528a7cb49a320ee054" }, "breadcrumbs.nvim": { "branch": "master", "commit": "9f764278784ce2f10dbe2f555ba14be2451d36a0" }, - "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" }, "cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" }, @@ -35,6 +33,7 @@ "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, + "nvim-cokeline": { "branch": "main", "commit": "9fbed130683b7b6f73198c09e35ba4b33f547c08" }, "nvim-lint": { "branch": "master", "commit": "7ef127aaede2a4d5ad8df8321e2eb4e567f29594" }, "nvim-lspconfig": { "branch": "master", "commit": "d0dbf489a8810672fa9a61f4a86e5cf89214b772" }, "nvim-material-icon": { "branch": "main", "commit": "c25a4e56be2f846dfdf8f30b980adc17f219d019" }, diff --git a/lua/pcode/core/init.lua b/lua/pcode/core/init.lua index 786792e..ec8716e 100644 --- a/lua/pcode/core/init.lua +++ b/lua/pcode/core/init.lua @@ -4,6 +4,6 @@ require("pcode.config.lazy_lib") require("pcode.user.colorscheme") require("pcode.core.neovide") -vim.keymap.set({ "n", "v", "x" }, "", function() +--[[ vim.keymap.set({ "n", "v", "x" }, "", function() require("gemini").ask_gemini() -end, { noremap = true, silent = true, desc = "Prompt Gemini CLI" }) +end, { noremap = true, silent = true, desc = "Prompt Gemini CLI" }) ]] diff --git a/lua/pcode/plugins/bufferline.lua b/lua/pcode/plugins/bufferline.lua index aea88c9..21c7908 100644 --- a/lua/pcode/plugins/bufferline.lua +++ b/lua/pcode/plugins/bufferline.lua @@ -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 = { - { "b", "", desc = "  Buffers", mode = "n" }, - { - "bb", - function() - require("telescope.builtin").buffers(require("telescope.themes").get_dropdown({ previewer = false })) - end, - desc = "All Buffer", - mode = "n", - }, - { - "bc", - function() - require("auto-bufferline.configs.utils").bufremove() - end, - desc = "Close current buffer", - mode = "n", - }, - { "bd", "BufferLineCloseLeft", desc = "Close Buffer Left", mode = "n" }, - { "bD", "BufferLineCloseRight", desc = "Close Buffer Right", mode = "n" }, - { "ba", "BufferLineCloseOthers", desc = "Close Buffer Other", mode = "n" }, - { "bA", "BufferLineCloseOthersbd!", 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 = { + { "b", "", desc = "  Buffers", mode = "n" }, + { + "bp", + "(cokeline-switch-prev)", + desc = "Focus Previous buffer", + mode = "n", + }, + { + "bn", + "(cokeline-switch-next)", + desc = "Focus next buffer", + mode = "n", + }, + { + "bb", + function() + require("telescope.builtin").buffers(require("telescope.themes").get_dropdown({ previewer = false })) + end, + desc = "All Buffer", + mode = "n", + }, + { + "bc", + function() + require("pcode.user.buffer").bufremove() + end, + desc = "Close current buffer", + mode = "n", + }, + { + "", + "(cokeline-focus-prev)", + desc = "Focus previous buffer", + mode = "n", + }, + { + "", + "(cokeline-focus-next)", + desc = "Focus buffer Next", + mode = "n", + }, + { + "", + "(cokeline-switch-prev)", + desc = "Switch to previous buffer", + mode = "n", + }, + { + "", + "(cokeline-switch-next)", + desc = "Switch to next buffer", + mode = "n", + }, + { + "", + function() + require("pcode.user.buffer").bufremove() + end, + desc = "Close Current Buffer", + mode = "n", + }, + }, } diff --git a/lua/pcode/user/buffer.lua b/lua/pcode/user/buffer.lua new file mode 100644 index 0000000..be942fe --- /dev/null +++ b/lua/pcode/user/buffer.lua @@ -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 diff --git a/lua/pcode/user/custom.lua b/lua/pcode/user/custom.lua index a2592bc..2f66ea9 100644 --- a/lua/pcode/user/custom.lua +++ b/lua/pcode/user/custom.lua @@ -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, }, },