diff --git a/lua/config/alpha-nvim.lua b/lua/config/alpha-nvim.lua new file mode 100644 index 0000000..9e43d51 --- /dev/null +++ b/lua/config/alpha-nvim.lua @@ -0,0 +1,109 @@ +local alpha = require 'alpha' +local dashboard = require 'alpha.themes.dashboard' + +_Gopts = { + position = 'center', + hl = 'Type', + wrap = 'overflow', +} + +-- DASHBOARD HEADER + +local function getGreeting() + local tableTime = os.date '*t' + local datetime = os.date ' %Y-%m-%d-%A  %H:%M:%S ' + local hour = tableTime.hour + local greetingsTable = { + [1] = ' Sleep well', + [2] = ' Good morning', + [3] = ' Good afternoon', + [4] = ' Good evening', + [5] = '󰖔 Good night', + } + local greetingIndex = 0 + if hour == 23 or hour < 7 then + greetingIndex = 1 + elseif hour < 12 then + greetingIndex = 2 + elseif hour >= 12 and hour < 18 then + greetingIndex = 3 + elseif hour >= 18 and hour < 21 then + greetingIndex = 4 + elseif hour >= 21 then + greetingIndex = 5 + end + return datetime .. ' ' .. greetingsTable[greetingIndex] +end + +local logo = [[ + +  + ████ ██████ █████ ██ + ███████████ █████  + █████████ ███████████████████ ███ ███████████ + █████████ ███ █████████████ █████ ██████████████ + █████████ ██████████ █████████ █████ █████ ████ █████ + ███████████ ███ ███ █████████ █████ █████ ████ █████ + ██████ █████████████████████ ████ █████ █████ ████ ██████ + + ]] + +local greeting = getGreeting() +local marginBottom = 0 + +-- Split logo into lines +local logoWidth = 0 +for line in logo:gmatch '[^\n]+' do + logoWidth = math.max(logoWidth, #line / 2) +end +logoWidth = 75 -- code above does not work with utf8 strings in lua 5.1 + +-- Calculate padding for centering the greeting +local greetingWidth = #greeting - 3 +local padding = math.floor((logoWidth - greetingWidth) / 2) +-- Generate spaces for padding +local paddedGreeting = string.rep(' ', padding) .. greeting + + +local userName = "You work as '" .. vim.env.USER .. "'." + +-- Calculate padding for centering the username +local userNameWidth = #userName +local padding = math.floor((logoWidth - userNameWidth) / 2) +-- Generate spaces for padding +local userNamePadded = string.rep(' ', padding) .. userName + + +-- Add margin lines below the padded greeting +local margin = string.rep('\n', marginBottom * 5) + +-- Concatenate logo, padded greeting, and margin +local adjustedLogo = logo .. '\n' .. paddedGreeting .. '\n\n' .. userNamePadded .. '\n' .. margin +dashboard.section.header.val = vim.split(adjustedLogo, '\n') + +dashboard.section.buttons.val = { + dashboard.button('o', '󱙺 AI Chat', 'OGPT'), + dashboard.button('n', ' New file', ':ene startinsert '), + dashboard.button('s', ' Settings', 'WorkspacesOpen config-nvim'), + dashboard.button('u', '󱐥 Update plugins', 'Lazy update'), + dashboard.button('w', ' Workspaces', 'WorkspacesOpen'), + dashboard.button('q', '󰤆 Quit', 'qa'), +} + +-- dashboard.section.footer.val = greeting + +vim.api.nvim_create_autocmd('User', { + pattern = 'LazyVimStarted', + desc = 'Add Alpha dashboard footer', + once = true, + callback = function() + local stats = require('lazy').stats() + local ms = math.floor(stats.startuptime * 100 + 0.5) / 100 + dashboard.section.footer.val = { ' ', ' ', ' ', ' Loaded ' .. stats.count .. ' plugins  in ' .. ms .. ' ms ' } + dashboard.section.header.opts.hl = 'DashboardFooter' + pcall(vim.cmd.AlphaRedraw) + end, +}) + +dashboard.opts.opts.noautocmd = true +alpha.setup(dashboard.opts) diff --git a/lua/config/lualine.lua b/lua/config/lualine.lua new file mode 100644 index 0000000..1090410 --- /dev/null +++ b/lua/config/lualine.lua @@ -0,0 +1,84 @@ + -- an alternative might be: + -- https://github.com/nvim-treesitter/nvim-treesitter-context + local function breadcrumb() + local result = require 'nvim-treesitter'.statusline( + { + type_patterns = { + "class", + "impl", + "function", + "method", + "import", + "for", + "if", + "while", + "variable", + "comment", + }, + separator = " ▶ " + } + ) + if result == "" then + result = ' ' + elseif result == nil then + result = '' + end + return result + end + + require("lualine").setup { + options = { + icons_enabled = false, + theme = 'papercolor_light', + component_separators = {}, + section_separators = {}, + disabled_filetypes = { + statusline = {}, + winbar = { "neo-tree" }, + }, + ignore_focus = {}, + always_divide_middle = true, + globalstatus = false, + refresh = { + statusline = 1000, + tabline = 1000, + winbar = 1000, + } + }, + sections = { + lualine_a = { { 'filename', path = 1, shorting_target = 50 } }, + lualine_b = { 'branch', 'diff', 'diagnostics' }, + lualine_c = {}, + lualine_x = { 'encoding', 'fileformat', 'filetype' }, + lualine_y = { 'filesize' }, + lualine_z = { 'progress', 'location' } + }, + inactive_sections = { + lualine_a = { { 'filename', path = 1, shorting_target = 50 } }, + lualine_b = {}, + lualine_c = {}, + -- lualine_x = { 'encoding', 'fileformat', 'filetype' }, + lualine_x = {}, + lualine_y = { 'filesize' }, + lualine_z = { 'location' } + }, + tabline = {}, + winbar = { + lualine_a = { + { + breadcrumb, + color = { bg = '#2a2a2a', fg = '#cfcfcf' }, + }, + }, + }, + inactive_winbar = { + lualine_a = { + { + breadcrumb, + color = { bg = '#101010', fg = '#999999' }, + draw_empty = true + } + }, + }, + extensions = {} + } diff --git a/lua/plugins.lua b/lua/plugins.lua index 0d51c14..381417b 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -74,7 +74,11 @@ require("lazy").setup({ -- "nvim-telescope/telescope.nvim", -- optional "ibhagwan/fzf-lua", -- optional }, - config = true + config = function() + require('neogit').setup({ + sort_branches = "refname" + }) + end }, -- org-mode @@ -236,90 +240,7 @@ require("lazy").setup({ 'nvim-lualine/lualine.nvim', dependencies = { 'nvim-tree/nvim-web-devicons' }, config = function() - -- an alternative might be: - -- https://github.com/nvim-treesitter/nvim-treesitter-context - local function breadcrumb() - local result = require 'nvim-treesitter'.statusline( - { - type_patterns = { - "class", - "impl", - "function", - "method", - "import", - "for", - "if", - "while", - "variable", - "comment", - }, - separator = " ▶ " - } - ) - if result == "" then - result = ' ' - elseif result == nil then - result = '' - end - return result - end - - require("lualine").setup { - options = { - icons_enabled = false, - theme = 'papercolor_light', - component_separators = {}, - section_separators = {}, - disabled_filetypes = { - statusline = {}, - winbar = { "neo-tree" }, - }, - ignore_focus = {}, - always_divide_middle = true, - globalstatus = false, - refresh = { - statusline = 1000, - tabline = 1000, - winbar = 1000, - } - }, - sections = { - lualine_a = { { 'filename', path = 1, shorting_target = 50 } }, - lualine_b = { 'branch', 'diff', 'diagnostics' }, - lualine_c = {}, - lualine_x = { 'encoding', 'fileformat', 'filetype' }, - lualine_y = { 'filesize' }, - lualine_z = { 'progress', 'location' } - }, - inactive_sections = { - lualine_a = { { 'filename', path = 1, shorting_target = 50 } }, - lualine_b = {}, - lualine_c = {}, - -- lualine_x = { 'encoding', 'fileformat', 'filetype' }, - lualine_x = {}, - lualine_y = { 'filesize' }, - lualine_z = { 'location' } - }, - tabline = {}, - winbar = { - lualine_a = { - { - breadcrumb, - color = { bg = '#2a2a2a', fg = '#cfcfcf' }, - }, - }, - }, - inactive_winbar = { - lualine_a = { - { - breadcrumb, - color = { bg = '#101010', fg = '#999999' }, - draw_empty = true - } - }, - }, - extensions = {} - } + require('config.lualine') end }, @@ -427,115 +348,7 @@ require("lazy").setup({ 'nvim-tree/nvim-web-devicons', }, config = function() - local alpha = require 'alpha' - local dashboard = require 'alpha.themes.dashboard' - - _Gopts = { - position = 'center', - hl = 'Type', - wrap = 'overflow', - } - - -- DASHBOARD HEADER - - local function getGreeting() - local tableTime = os.date '*t' - local datetime = os.date ' %Y-%m-%d-%A  %H:%M:%S ' - local hour = tableTime.hour - local greetingsTable = { - [1] = ' Sleep well', - [2] = ' Good morning', - [3] = ' Good afternoon', - [4] = ' Good evening', - [5] = '󰖔 Good night', - } - local greetingIndex = 0 - if hour == 23 or hour < 7 then - greetingIndex = 1 - elseif hour < 12 then - greetingIndex = 2 - elseif hour >= 12 and hour < 18 then - greetingIndex = 3 - elseif hour >= 18 and hour < 21 then - greetingIndex = 4 - elseif hour >= 21 then - greetingIndex = 5 - end - return datetime .. ' ' .. greetingsTable[greetingIndex] - end - - local logo = [[ - -  - ████ ██████ █████ ██ - ███████████ █████  - █████████ ███████████████████ ███ ███████████ - █████████ ███ █████████████ █████ ██████████████ - █████████ ██████████ █████████ █████ █████ ████ █████ - ███████████ ███ ███ █████████ █████ █████ ████ █████ - ██████ █████████████████████ ████ █████ █████ ████ ██████ - - ]] - - local greeting = getGreeting() - local marginBottom = 0 - - -- Split logo into lines - local logoWidth = 0 - for line in logo:gmatch '[^\n]+' do - logoWidth = math.max(logoWidth, #line / 2) - end - logoWidth = 75 -- code above does not work with utf8 strings in lua 5.1 - - -- Calculate padding for centering the greeting - local greetingWidth = #greeting - 3 - local padding = math.floor((logoWidth - greetingWidth) / 2) - -- Generate spaces for padding - local paddedGreeting = string.rep(' ', padding) .. greeting - - - local userName = "You work as '" .. vim.env.USER .. "'." - - -- Calculate padding for centering the username - local userNameWidth = #userName - local padding = math.floor((logoWidth - userNameWidth) / 2) - -- Generate spaces for padding - local userNamePadded = string.rep(' ', padding) .. userName - - - -- Add margin lines below the padded greeting - local margin = string.rep('\n', marginBottom * 5) - - -- Concatenate logo, padded greeting, and margin - local adjustedLogo = logo .. '\n' .. paddedGreeting .. '\n\n' .. userNamePadded .. '\n' .. margin - dashboard.section.header.val = vim.split(adjustedLogo, '\n') - - dashboard.section.buttons.val = { - dashboard.button('o', '󱙺 AI Chat', 'OGPT'), - dashboard.button('n', ' New file', ':ene startinsert '), - dashboard.button('s', ' Settings', 'WorkspacesOpen config-nvim'), - dashboard.button('u', '󱐥 Update plugins', 'Lazy update'), - dashboard.button('w', ' Workspaces', 'WorkspacesOpen'), - dashboard.button('q', '󰤆 Quit', 'qa'), - } - - -- dashboard.section.footer.val = greeting - - vim.api.nvim_create_autocmd('User', { - pattern = 'LazyVimStarted', - desc = 'Add Alpha dashboard footer', - once = true, - callback = function() - local stats = require('lazy').stats() - local ms = math.floor(stats.startuptime * 100 + 0.5) / 100 - dashboard.section.footer.val = { ' ', ' ', ' ', ' Loaded ' .. stats.count .. ' plugins  in ' .. ms .. ' ms ' } - dashboard.section.header.opts.hl = 'DashboardFooter' - pcall(vim.cmd.AlphaRedraw) - end, - }) - - dashboard.opts.opts.noautocmd = true - alpha.setup(dashboard.opts) + require('config.alpha-nvim') end, },