diff --git a/home/programs/nvim/default.nix b/home/programs/nvim/default.nix index fb42835..e6faca4 100644 --- a/home/programs/nvim/default.nix +++ b/home/programs/nvim/default.nix @@ -28,6 +28,7 @@ plugins = with pkgs.vimPlugins; [ vim-nix + vim-airline-themes # coc-nvim { plugin = goyo-vim; @@ -45,6 +46,14 @@ plugin = nvim-tree-lua; config = toLuaFile ./plugins/nvimtree.lua; } + { + plugin = vim-airline; + config = toLuaFile ./plugins/airline.lua; + } + { + plugin = barbar-nvim; + config = toLuaFile ./plugins/bufferline.lua; + } ]; # extraConfig = lib.fileContents ./init.vim; diff --git a/home/programs/nvim/plugins/airline.lua b/home/programs/nvim/plugins/airline.lua new file mode 100644 index 0000000..8afda13 --- /dev/null +++ b/home/programs/nvim/plugins/airline.lua @@ -0,0 +1,30 @@ +-- Set airline theme +vim.g.airline_theme = 'simple' + +-- Initialize airline symbols if not already defined +vim.g.airline_symbols = vim.g.airline_symbols or {} + +-- Configure airline symbols +vim.g.airline_symbols.crypt = '🔒' +vim.g.airline_symbols.linenr = '☰' +vim.g.airline_symbols.maxlinenr = '' +vim.g.airline_symbols.paste = 'ρ' +vim.g.airline_symbols.spell = 'Ꞩ' +vim.g.airline_symbols.notexists = 'Ɇ' +vim.g.airline_symbols.whitespace = 'Ξ' + +-- Powerline symbols (requires appropriate fonts) +vim.g.airline_left_sep = '' +vim.g.airline_left_alt_sep = '' +vim.g.airline_right_sep = '' +vim.g.airline_right_alt_sep = '' +vim.g.airline_symbols.branch = '' +vim.g.airline_symbols.linenr = '☰ ' + +-- Configure bufferline extension +-- vim.g.airline#extensions#tabline#enabled = 1 +vim.g.airline_extensions_tabline_formatter = 'unique_tail' + +-- Set global statusline +vim.opt.laststatus = 3 + diff --git a/home/programs/nvim/plugins/bufferline.lua b/home/programs/nvim/plugins/bufferline.lua new file mode 100644 index 0000000..7a47566 --- /dev/null +++ b/home/programs/nvim/plugins/bufferline.lua @@ -0,0 +1,80 @@ +-- Ensure bufferline configuration exists +local bufferline = vim.g.bufferline or {} + +-- Enable/disable animations +bufferline.animation = true + +-- Enable/disable auto-hiding the tab bar when there is a single buffer +-- bufferline.auto_hide = false + +-- Enable/disable current/total tabpages indicator (top right corner) +bufferline.tabpages = true + +-- Enable/disable close button +bufferline.closable = true + +-- Enable/disable clickable tabs +-- - left-click: go to buffer +-- - middle-click: delete buffer +bufferline.clickable = true + +-- Exclude buffers from the tabline +-- bufferline.exclude_ft = { 'javascript' } +-- bufferline.exclude_name = { 'package.json' } + +-- Enable/disable icons +-- Options: 'buffer_number', 'numbers', 'both', 'buffer_number_with_icon' +bufferline.icons = true + +-- Use nvim-web-devicons colors if false +bufferline.icon_custom_colors = false + +-- Configure icons on the bufferline +bufferline.icon_separator_active = '▎' +bufferline.icon_separator_inactive = '▎' +bufferline.icon_close_tab = '' +bufferline.icon_close_tab_modified = '●' +bufferline.icon_pinned = '車' + +-- Configure buffer insertion position +bufferline.insert_at_start = false +bufferline.insert_at_end = false + +-- Set maximum padding width +bufferline.maximum_padding = 4 + +-- Set maximum buffer name length +bufferline.maximum_length = 30 + +-- Enable semantic letters for buffer-pick mode +bufferline.semantic_letters = true + +-- Define buffer letters order for buffer-pick mode +bufferline.letters = 'asdfjkl;ghnmxcvbziowerutyqpASDFJKLGHNMXCVBZIOWERUTYQP' + +-- Set name for unnamed buffers +bufferline.no_name_title = nil + +-- Mappings +vim.keymap.set('n', '', 'BufferPrevious', { silent = true }) +vim.keymap.set('n', '', 'BufferNext', { silent = true }) +vim.keymap.set('n', '', 'BufferMovePrevious', { silent = true }) +vim.keymap.set('n', '>', 'BufferMoveNext', { silent = true }) +vim.keymap.set('n', '', 'BufferGoto 1', { silent = true }) +vim.keymap.set('n', '', 'BufferGoto 2', { silent = true }) +vim.keymap.set('n', '', 'BufferGoto 3', { silent = true }) +vim.keymap.set('n', '', 'BufferGoto 4', { silent = true }) +vim.keymap.set('n', '', 'BufferGoto 5', { silent = true }) +vim.keymap.set('n', '', 'BufferGoto 6', { silent = true }) +vim.keymap.set('n', '', 'BufferGoto 7', { silent = true }) +vim.keymap.set('n', '', 'BufferGoto 8', { silent = true }) +vim.keymap.set('n', '', 'BufferGoto 9', { silent = true }) +vim.keymap.set('n', '', 'BufferLast', { silent = true }) +vim.keymap.set('n', '', 'BufferPin', { silent = true }) +vim.keymap.set('n', '', 'BufferClose', { silent = true }) +vim.keymap.set('n', '', 'BufferPick', { silent = true }) +vim.keymap.set('n', 'bb', 'BufferOrderByBufferNumber', { silent = true }) +vim.keymap.set('n', 'bd', 'BufferOrderByDirectory', { silent = true }) +vim.keymap.set('n', 'bl', 'BufferOrderByLanguage', { silent = true }) +vim.keymap.set('n', 'bw', 'BufferOrderByWindowNumber', { silent = true }) + diff --git a/home/programs/nvim/plugins/nvimtree.lua b/home/programs/nvim/plugins/nvimtree.lua index 4ce7a61..4f3df88 100644 --- a/home/programs/nvim/plugins/nvimtree.lua +++ b/home/programs/nvim/plugins/nvimtree.lua @@ -1,3 +1,5 @@ +-- buh https://gist.github.com/mrpmohiburrahman/b7ec0d47cd043d3a2ed4c10a20504d4e + vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1