diff --git a/init.lua b/init.lua index 873adce0..314876b6 100644 --- a/init.lua +++ b/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', 'e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' }) vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) --- Tabby keymaps -vim.api.nvim_set_keymap('n', 'ta', ':$tabnew', { noremap = true }) -vim.api.nvim_set_keymap('n', 'tc', ':tabclose', { noremap = true }) -vim.api.nvim_set_keymap('n', 'to', ':tabonly', { noremap = true }) -vim.api.nvim_set_keymap('n', 'tn', ':tabn', { noremap = true }) -vim.api.nvim_set_keymap('n', 'tp', ':tabp', { noremap = true }) --- move current tab to previous position -vim.api.nvim_set_keymap('n', 'tmp', ':-tabmove', { noremap = true }) --- move current tab to next position -vim.api.nvim_set_keymap('n', 'tmn', ':+tabmove', { noremap = true }) +local keymap = vim.keymap +local opts = { noremap = true, silent = true } +-- New tab +-- Split window +keymap.set('n', 'ss', ':split', opts) +keymap.set('n', 'sv', ':vsplit', opts) +-- Resize window +keymap.set('n', '', '<') +keymap.set('n', '', '>') +keymap.set('n', '', '+') +keymap.set('n', '', '-') + +-- NOTE: bufferline keymap + +--NOTE: " the order of buffers :bnext and :bprevious will not respect the custom ordering +keymap.set('n', '', ':BufferLineCycleNext', opts) +keymap.set('n', '', ':BufferLineCyclePrev', opts) +-- " These commands will move the current buffer backwards or forwards in the bufferline +-- nnoremap :BufferLineMoveNext +-- nnoremap :BufferLineMovePrev +-- +-- " These commands will move the current buffer to the first or the last position in the bufferline +-- nnoremap :lua require'bufferline'.move_to(1) +-- nnoremap :lua require'bufferline'.move_to(-1) +-- +-- " These commands will sort buffers by directory, language, or a custom criteria +-- nnoremap be :BufferLineSortByExtension +-- nnoremap bd :BufferLineSortByDirectory +-- nnoremap :lua require'bufferline'.sort_by(function (buf_a, buf_b) return buf_a.id < buf_b.id end) +-- -- 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 , which @@ -407,6 +427,8 @@ require('lazy').setup({ -- NOTE: Git Telescope Mappings vim.keymap.set('n', 'cm', 'Telescope git_commits', { desc = 'Telescope Git commits' }) vim.keymap.set('n', 'gt', 'Telescope git_status', { desc = 'Telescope Git status' }) + -- NOTE: TodoTelescope + vim.keymap.set('n', 'tt', 'TodoTelescope', { desc = 'TodoTelescope list' }) -- Slightly advanced example of overriding default behavior and theme vim.keymap.set('n', 'fz', function() diff --git a/lua/custom/plugins/bufferline.lua b/lua/custom/plugins/bufferline.lua new file mode 100644 index 00000000..41ad2103 --- /dev/null +++ b/lua/custom/plugins/bufferline.lua @@ -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 diff --git a/lua/custom/plugins/tabby.lua b/lua/custom/plugins/tabby.lua deleted file mode 100644 index 43a2fe4a..00000000 --- a/lua/custom/plugins/tabby.lua +++ /dev/null @@ -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, -}