added bufferline and removed tabby
This commit is contained in:
		
							parent
							
								
									31f0bfe509
								
							
						
					
					
						commit
						f1e6cb34b1
					
				
							
								
								
									
										42
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										42
									
								
								init.lua
								
								
								
								
							|  | @ -184,16 +184,36 @@ vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagn | |||
| vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' }) | ||||
| vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) | ||||
| 
 | ||||
| -- Tabby keymaps | ||||
| vim.api.nvim_set_keymap('n', '<leader>ta', ':$tabnew<CR>', { noremap = true }) | ||||
| vim.api.nvim_set_keymap('n', '<leader>tc', ':tabclose<CR>', { noremap = true }) | ||||
| vim.api.nvim_set_keymap('n', '<leader>to', ':tabonly<CR>', { noremap = true }) | ||||
| vim.api.nvim_set_keymap('n', '<leader>tn', ':tabn<CR>', { noremap = true }) | ||||
| vim.api.nvim_set_keymap('n', '<leader>tp', ':tabp<CR>', { noremap = true }) | ||||
| -- move current tab to previous position | ||||
| vim.api.nvim_set_keymap('n', '<leader>tmp', ':-tabmove<CR>', { noremap = true }) | ||||
| -- move current tab to next position | ||||
| vim.api.nvim_set_keymap('n', '<leader>tmn', ':+tabmove<CR>', { noremap = true }) | ||||
| local keymap = vim.keymap | ||||
| local opts = { noremap = true, silent = true } | ||||
| -- New tab | ||||
| -- Split window | ||||
| keymap.set('n', 'ss', ':split<Return>', opts) | ||||
| keymap.set('n', 'sv', ':vsplit<Return>', opts) | ||||
| -- Resize window | ||||
| keymap.set('n', '<C-w><left>', '<C-w><') | ||||
| keymap.set('n', '<C-w><right>', '<C-w>>') | ||||
| keymap.set('n', '<C-w><up>', '<C-w>+') | ||||
| keymap.set('n', '<C-w><down>', '<C-w>-') | ||||
| 
 | ||||
| -- NOTE: bufferline keymap | ||||
| 
 | ||||
| --NOTE: " the order of buffers :bnext and :bprevious will not respect the custom ordering | ||||
| keymap.set('n', '<tab>', ':BufferLineCycleNext<CR>', opts) | ||||
| keymap.set('n', '<s-tab>', ':BufferLineCyclePrev<CR>', opts) | ||||
| -- " These commands will move the current buffer backwards or forwards in the bufferline | ||||
| -- nnoremap <silent><mymap> :BufferLineMoveNext<CR> | ||||
| -- nnoremap <silent><mymap> :BufferLineMovePrev<CR> | ||||
| -- | ||||
| -- " These commands will move the current buffer to the first or the last position in the bufferline | ||||
| -- nnoremap <silent><mymap> :lua require'bufferline'.move_to(1)<CR> | ||||
| -- nnoremap <silent><mymap> :lua require'bufferline'.move_to(-1)<CR> | ||||
| -- | ||||
| -- " These commands will sort buffers by directory, language, or a custom criteria | ||||
| -- nnoremap <silent>be :BufferLineSortByExtension<CR> | ||||
| -- nnoremap <silent>bd :BufferLineSortByDirectory<CR> | ||||
| -- nnoremap <silent><mymap> :lua require'bufferline'.sort_by(function (buf_a, buf_b) return buf_a.id < buf_b.id end)<CR> | ||||
| -- | ||||
| 
 | ||||
| -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier | ||||
| -- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which | ||||
|  | @ -407,6 +427,8 @@ require('lazy').setup({ | |||
|       -- NOTE: Git Telescope Mappings | ||||
|       vim.keymap.set('n', '<leader>cm', '<cmd>Telescope git_commits<CR>', { desc = 'Telescope Git commits' }) | ||||
|       vim.keymap.set('n', '<leader>gt', '<cmd>Telescope git_status<CR>', { desc = 'Telescope Git status' }) | ||||
|       -- NOTE: TodoTelescope | ||||
|       vim.keymap.set('n', '<leader>tt', '<cmd>TodoTelescope<CR>', { desc = 'TodoTelescope list' }) | ||||
| 
 | ||||
|       -- Slightly advanced example of overriding default behavior and theme | ||||
|       vim.keymap.set('n', '<leader>fz', function() | ||||
|  |  | |||
|  | @ -0,0 +1,34 @@ | |||
| local M = { | ||||
|   'akinsho/bufferline.nvim', | ||||
|   version = '*', | ||||
|   dependencies = 'nvim-tree/nvim-web-devicons', | ||||
| } | ||||
| 
 | ||||
| function M.config() | ||||
|   local bufferLine = require 'bufferline' | ||||
|   bufferLine.setup { | ||||
|     options = { | ||||
|       mode = 'buffers', | ||||
|       style_preset = bufferLine.style_preset.default, | ||||
|       themable = true, | ||||
|       numbers = 'ordinal', | ||||
|       close_command = 'bdelete! %d', -- can be a string | function, | false see "Mouse actions" | ||||
|       right_mouse_command = 'bdelete! %d', -- can be a string | function | false, see "Mouse actions" | ||||
|       left_mouse_command = 'buffer %d', -- can be a string | function, | false see "Mouse actions" | ||||
|       middle_mouse_command = nil, -- can be a string | function, | false see "Mouse actions" | ||||
|       indicator = { | ||||
|         icon = '▎', -- this should be omitted if indicator style is not 'icon' | ||||
|         style = 'icon', | ||||
|       }, | ||||
|       buffer_close_icon = '', | ||||
|       modified_icon = '●', | ||||
|       close_icon = '', | ||||
|       left_trunc_marker = '', | ||||
|       right_trunc_marker = '', | ||||
|       show_close_icon = true, | ||||
|       show_tab_indicators = true, | ||||
|     }, | ||||
|   } | ||||
| end | ||||
| 
 | ||||
| return M | ||||
|  | @ -1,115 +0,0 @@ | |||
| local theme = { | ||||
|   fill = 'TabLineFill', | ||||
|   head = 'TabLine', | ||||
|   current_tab = 'TabLineSel', | ||||
|   tab = 'TabLine', | ||||
|   win = 'TabLine', | ||||
|   tail = 'TabLine', | ||||
| } | ||||
| 
 | ||||
| local open_tabs = {} | ||||
| local tab_name = function(tab) | ||||
|   local api = require 'tabby.module.api' | ||||
|   local cur_win = api.get_tab_current_win(tab.id) | ||||
|   if api.is_float_win(cur_win) then | ||||
|     return '[Floating]' | ||||
|   end | ||||
|   local current_bufnr = vim.fn.getwininfo(cur_win)[1].bufnr | ||||
|   local current_bufinfo = vim.fn.getbufinfo(current_bufnr)[1] | ||||
|   local current_buf_name = vim.fn.fnamemodify(current_bufinfo.name, ':t') | ||||
|   -- local no_extension = vim.fn.fnamemodify(current_bufinfo.name, ":p:r") | ||||
| 
 | ||||
|   if string.find(current_buf_name, 'NvimTree') ~= nil then | ||||
|     return '[File Explorer]' | ||||
|   end | ||||
| 
 | ||||
|   if current_buf_name == 'NeogitStatus' then | ||||
|     return '[Neogit]' | ||||
|   end | ||||
| 
 | ||||
|   if open_tabs[current_bufinfo.name] == nil then | ||||
|     local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ':p:h:t') | ||||
|     open_tabs[current_bufinfo.name] = project_name | ||||
|   end | ||||
| 
 | ||||
|   if current_buf_name == '' then | ||||
|     return '[Empty]' | ||||
|   else | ||||
|     if open_tabs[current_bufinfo.name] == nil then | ||||
|       return current_buf_name | ||||
|     end | ||||
| 
 | ||||
|     return open_tabs[current_bufinfo.name] .. ':' .. current_buf_name | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| local tab_count = function() | ||||
|   local num_tabs = #vim.api.nvim_list_tabpages() | ||||
| 
 | ||||
|   if num_tabs > 1 then | ||||
|     local tabpage_number = tostring(vim.api.nvim_tabpage_get_number(0)) | ||||
|     return tabpage_number .. '/' .. tostring(num_tabs) | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| local change_mark = function(tab) | ||||
|   local already_marked = false | ||||
|   return tab.wins().foreach(function(win) | ||||
|     local bufnr = vim.fn.getwininfo(win.id)[1].bufnr | ||||
|     local bufinfo = vim.fn.getbufinfo(bufnr)[1] | ||||
|     if not already_marked and bufinfo.changed == 1 then | ||||
|       already_marked = true | ||||
|       return ' ' | ||||
|     else | ||||
|       return '' | ||||
|     end | ||||
|   end) | ||||
| end | ||||
| 
 | ||||
| local window_count = function(tab) | ||||
|   local api = require 'tabby.module.api' | ||||
|   local win_count = #api.get_tab_wins(tab.id) | ||||
|   if win_count == 1 then | ||||
|     return '' | ||||
|   else | ||||
|     return '[' .. win_count .. ']' | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| return { | ||||
|   'nanozuki/tabby.nvim', | ||||
|   event = 'VeryLazy', | ||||
|   config = function() | ||||
|     require('tabby.tabline').set(function(line) | ||||
|       return { | ||||
|         { | ||||
|           { '   ', hl = theme.head }, | ||||
|           { tab_count(), hl = theme.head }, | ||||
|           -- line.sep(" ", theme.head, theme.fill), | ||||
|           line.sep(' ', theme.head, theme.fill), | ||||
|         }, | ||||
|         line.tabs().foreach(function(tab) | ||||
|           local hl = tab.is_current() and theme.current_tab or theme.tab | ||||
|           return { | ||||
|             -- line.sep("", hl, theme.fill), | ||||
|             line.sep('', hl, theme.fill), | ||||
|             tab.is_current() and '' or '', | ||||
|             tab_name(tab), | ||||
|             -- tab.close_btn(" "), | ||||
|             -- window_count(tab), | ||||
|             -- change_mark(tab), | ||||
|             -- line.sep(" ", hl, theme.fill), | ||||
|             line.sep(' ', hl, theme.fill), | ||||
|             hl = hl, | ||||
|             margin = ' ', | ||||
|           } | ||||
|         end), | ||||
|         hl = theme.fill, | ||||
|       } | ||||
|     end, { | ||||
|       buf_name = { | ||||
|         mode = 'unique', | ||||
|       }, | ||||
|     }) | ||||
|   end, | ||||
| } | ||||
		Loading…
	
		Reference in New Issue