63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
return {
 | 
						|
  "akinsho/bufferline.nvim",
 | 
						|
  event = "VeryLazy",
 | 
						|
  keys = {
 | 
						|
    { "<leader>bp", "<Cmd>BufferLineTogglePin<CR>",            desc = "Toggle Pin" },
 | 
						|
    {
 | 
						|
      "<leader>bo",
 | 
						|
      function()
 | 
						|
        Snacks.bufdelete.other()
 | 
						|
      end,
 | 
						|
      desc = "Delete other buffers",
 | 
						|
    },
 | 
						|
    {
 | 
						|
      "<leader>bd",
 | 
						|
      function()
 | 
						|
        Snacks.bufdelete()
 | 
						|
      end,
 | 
						|
      desc = "Delete current buffer",
 | 
						|
    },
 | 
						|
    { "<leader>bP", "<Cmd>BufferLineGroupClose ungrouped<CR>", desc = "Delete Non-Pinned Buffers" },
 | 
						|
    { "<leader>br", "<Cmd>BufferLineCloseRight<CR>",           desc = "Delete Buffers to the Right" },
 | 
						|
    { "<leader>bl", "<Cmd>BufferLineCloseLeft<CR>",            desc = "Delete Buffers to the Left" },
 | 
						|
    { "<S-h>",      "<cmd>BufferLineCyclePrev<cr>",            desc = "Prev Buffer" },
 | 
						|
    { "<S-l>",      "<cmd>BufferLineCycleNext<cr>",            desc = "Next Buffer" },
 | 
						|
    { "[b",         "<cmd>BufferLineCyclePrev<cr>",            desc = "Prev Buffer" },
 | 
						|
    { "]b",         "<cmd>BufferLineCycleNext<cr>",            desc = "Next Buffer" },
 | 
						|
    { "[B",         "<cmd>BufferLineMovePrev<cr>",             desc = "Move buffer prev" },
 | 
						|
    { "]B",         "<cmd>BufferLineMoveNext<cr>",             desc = "Move buffer next" },
 | 
						|
  },
 | 
						|
  opts = {
 | 
						|
    options = {
 | 
						|
      -- stylua: ignore
 | 
						|
      close_command = function(n) Snacks.bufdelete(n) end,
 | 
						|
      -- stylua: ignore
 | 
						|
      right_mouse_command = function(n) Snacks.bufdelete(n) end,
 | 
						|
      diagnostics = "nvim_lsp",
 | 
						|
      always_show_bufferline = true,
 | 
						|
      offsets = {
 | 
						|
        {
 | 
						|
          filetype = "neo-tree",
 | 
						|
          text = "Neo-tree",
 | 
						|
          highlight = "Directory",
 | 
						|
          text_align = "left",
 | 
						|
        },
 | 
						|
        {
 | 
						|
          filetype = "snacks_layout_box",
 | 
						|
        },
 | 
						|
      },
 | 
						|
    },
 | 
						|
  },
 | 
						|
  config = function(_, opts)
 | 
						|
    require("bufferline").setup(opts)
 | 
						|
    -- Fix bufferline when restoring a session
 | 
						|
    vim.api.nvim_create_autocmd({ "BufAdd", "BufDelete" }, {
 | 
						|
      callback = function()
 | 
						|
        vim.schedule(function()
 | 
						|
          pcall(nvim_bufferline)
 | 
						|
        end)
 | 
						|
      end,
 | 
						|
    })
 | 
						|
  end,
 | 
						|
}
 |