From c839993a25485f026850c2e57e456738cb7c710a Mon Sep 17 00:00:00 2001 From: sudacode Date: Fri, 14 Feb 2025 17:34:12 -0800 Subject: [PATCH] fix dashboard --- lua/core/autocmds.lua | 69 ++-- lua/core/keymaps.lua | 296 +++++++-------- lua/core/plugins.lua | 551 +++++++++++++++------------- lua/plugins/lsp/null-ls.lua | 2 +- lua/plugins/ui/dashboard-nvim.lua | 93 ----- lua/plugins/ui/indent-blankline.lua | 35 +- lua/plugins/ui/init.lua | 36 +- static/nvim-dashboard.vim | 8 - 8 files changed, 527 insertions(+), 563 deletions(-) delete mode 100644 lua/plugins/ui/dashboard-nvim.lua delete mode 100644 static/nvim-dashboard.vim diff --git a/lua/core/autocmds.lua b/lua/core/autocmds.lua index 3ea51fc..b4213fc 100644 --- a/lua/core/autocmds.lua +++ b/lua/core/autocmds.lua @@ -2,43 +2,57 @@ local augroup = vim.api.nvim_create_augroup local autocmd = vim.api.nvim_create_autocmd -- Restore cursor position -local restore_cursor = augroup('RestoreCursor', { clear = true }) -autocmd('BufReadPost', { - group = restore_cursor, - callback = function() - local mark = vim.api.nvim_buf_get_mark(0, '"') - local lcount = vim.api.nvim_buf_line_count(0) - if mark[1] > 0 and mark[1] <= lcount then - pcall(vim.api.nvim_win_set_cursor, 0, mark) - end - end, +local restore_cursor = augroup("RestoreCursor", { clear = true }) +autocmd("BufReadPost", { + group = restore_cursor, + callback = function() + local mark = vim.api.nvim_buf_get_mark(0, '"') + local lcount = vim.api.nvim_buf_line_count(0) + if mark[1] > 0 and mark[1] <= lcount then + pcall(vim.api.nvim_win_set_cursor, 0, mark) + end + end, }) -- Help and man pages in vertical split -local help_config = augroup('HelpConfig', { clear = true }) -autocmd('FileType', { - group = help_config, - pattern = { 'help', 'man' }, - command = 'wincmd L' +local help_config = augroup("HelpConfig", { clear = true }) +autocmd("FileType", { + group = help_config, + pattern = { "help", "man" }, + command = "wincmd L", }) -- Terminal settings -local term_config = augroup('TermConfig', { clear = true }) -autocmd('TermOpen', { - group = term_config, - pattern = '*', - command = 'setlocal nonumber norelativenumber' +local term_config = augroup("TermConfig", { clear = true }) +autocmd("TermOpen", { + group = term_config, + pattern = "*", + command = "setlocal nonumber norelativenumber", }) -local highlight_yank = augroup('HighlightYank', { clear = true }) -autocmd('TextYankPost', { - group = highlight_yank, - pattern = '*', - callback = function() - vim.highlight.on_yank({ higroup = "IncSearch", timeout = 420 }) - end, +local highlight_yank = augroup("HighlightYank", { clear = true }) +autocmd("TextYankPost", { + group = highlight_yank, + pattern = "*", + callback = function() + vim.highlight.on_yank({ higroup = "IncSearch", timeout = 420 }) + end, }) +function disable_for_dashboard() + local buftype = vim.api.nvim_buf_get_option(0, "buftype") + local filetype = vim.api.nvim_buf_get_option(0, "filetype") + if buftype == "nofile" and filetype == "dashboard" then + vim.b.indent_blankline_enabled = false + end +end +vim.cmd([[ + augroup IndentBlankline + autocmd! + autocmd FileType dashboard lua disable_for_dashboard() + augroup END +]]) + -- Code actions on cursor hold -- local code_action = augroup('CodeAction', { clear = true }) -- autocmd({ 'CursorHold', 'CursorHoldI' }, { @@ -49,4 +63,3 @@ autocmd('TextYankPost', { -- end -- end -- }) - diff --git a/lua/core/keymaps.lua b/lua/core/keymaps.lua index 70d645e..1dea6a5 100644 --- a/lua/core/keymaps.lua +++ b/lua/core/keymaps.lua @@ -1,37 +1,36 @@ local map = vim.keymap.set -local Terminal = require('toggleterm.terminal').Terminal -local lazygit = Terminal:new({ cmd = 'lazygit', hidden = true }) -local ipython = Terminal:new({ cmd = 'ipython', hidden = true }) -local notify = require('notify') +local Terminal = require("toggleterm.terminal").Terminal +local lazygit = Terminal:new({ cmd = "lazygit", hidden = true }) +local ipython = Terminal:new({ cmd = "ipython", hidden = true }) +local notify = require("notify") local function term_factory(cfg) - cfg["on_stderr"] = function(_, job, data, name) - notify(name .. ' encountered an error on job: ' .. job .. '\nData: ' .. data) - end - cfg["on_stdout"] = function(_, job, data, name) - notify(name .. ' output for job' .. job .. '\nData: ' .. data) - end - return Terminal:new(cfg) + cfg["on_stderr"] = function(_, job, data, name) + notify(name .. " encountered an error on job: " .. job .. "\nData: " .. data) + end + cfg["on_stdout"] = function(_, job, data, name) + notify(name .. " output for job" .. job .. "\nData: " .. data) + end + return Terminal:new(cfg) end local function term_toggle(term) - term:toggle() + term:toggle() end local opts = { silent = true, noremap = true } - local function ReloadConfig() - dofile(vim.fn.stdpath('config') .. '/init.lua') - dofile(vim.fn.stdpath('config') .. '/lua/core/keymaps.lua') - dofile(vim.fn.stdpath('config') .. '/lua/core/autocmds.lua') - dofile(vim.fn.stdpath('config') .. '/lua/core/options.lua') - dofile(vim.fn.stdpath('config') .. '/lua/core/plugins.lua') - dofile(vim.fn.stdpath('config') .. '/lua/plugins/ui/init.lua') - dofile(vim.fn.stdpath('config') .. '/lua/plugins/ui/toggleterm.lua') - dofile(vim.fn.stdpath('config') .. '/lua/plugins/ai/init.lua') - dofile(vim.fn.stdpath('config') .. '/lua/plugins/lsp/init.lua') - dofile(vim.fn.stdpath('config') .. '/lua/plugins/colorscheme/init.lua') + dofile(vim.fn.stdpath("config") .. "/init.lua") + dofile(vim.fn.stdpath("config") .. "/lua/core/keymaps.lua") + dofile(vim.fn.stdpath("config") .. "/lua/core/autocmds.lua") + dofile(vim.fn.stdpath("config") .. "/lua/core/options.lua") + dofile(vim.fn.stdpath("config") .. "/lua/core/plugins.lua") + dofile(vim.fn.stdpath("config") .. "/lua/plugins/ui/init.lua") + dofile(vim.fn.stdpath("config") .. "/lua/plugins/ui/toggleterm.lua") + dofile(vim.fn.stdpath("config") .. "/lua/plugins/ai/init.lua") + dofile(vim.fn.stdpath("config") .. "/lua/plugins/lsp/init.lua") + dofile(vim.fn.stdpath("config") .. "/lua/plugins/colorscheme/init.lua") end -- Leader key @@ -39,97 +38,98 @@ vim.g.mapleader = " " vim.g.maplocalleader = "," -- Custom commands -vim.api.nvim_create_user_command('PS', ':PackerSync', {}) -vim.api.nvim_create_user_command('Reload', ReloadConfig, {}) -vim.api.nvim_create_user_command('Config', 'edit ~/.config/nvim/init.lua', {}) -vim.api.nvim_create_user_command('Plugins', 'edit ~/.config/nvim/lua/core/plugins.lua', {}) -vim.api.nvim_create_user_command('Keymaps', 'edit ~/.config/nvim/lua/core/keymaps.lua', {}) +vim.api.nvim_create_user_command("PS", ":PackerSync", {}) +vim.api.nvim_create_user_command("Reload", ReloadConfig, {}) +vim.api.nvim_create_user_command("Config", "edit ~/.config/nvim", {}) +vim.api.nvim_create_user_command("Plugins", "edit ~/.config/nvim/lua/core/plugins.lua", {}) +vim.api.nvim_create_user_command("Keymaps", "edit ~/.config/nvim/lua/core/keymaps.lua", {}) -- {{{ Basic mappings -map('n', '', 'zz', opts) -map('n', 'n', 'nzzzv', opts) -map('n', 'N', 'Nzzzv', opts) -map('x', 'p', '"_dP', opts) -- paste without yanking -map('v', '<', '', '>gv', opts) -map('v', 'J', ":m '>+1gv=gv", opts) -- move lines -map('v', 'K', ":m '<-2gv=gv", opts) +map("n", "", "zz", opts) +map("n", "n", "nzzzv", opts) +map("n", "N", "Nzzzv", opts) +map("x", "p", '"_dP', opts) -- paste without yanking +map("v", "<", "", ">gv", opts) +map("v", "J", ":m '>+1gv=gv", opts) -- move lines +map("v", "K", ":m '<-2gv=gv", opts) -- }}} -- {{{ Buffer navigation -map('n', '', ':bnext', opts) -map('n', '', ':bprev', opts) -map('n', 'bb', ':Telescope buffers', opts) -map('n', 'bk', ':bdelete', opts) -map('n', 'bn', ':bnext', opts) -map('n', 'bp', ':bprev', opts) +map("n", "", ":bnext", opts) +map("n", "", ":bprev", opts) +map("n", "bb", ":Telescope buffers", opts) +map("n", "bk", ":bdelete", opts) +map("n", "bn", ":bnext", opts) +map("n", "bp", ":bprev", opts) -- }}} --{{{ Terminal mappings local programs_map = { - gg = { cmd = 'lazygit', display_name = 'lazygit', direction = 'tab', hidden = true }, - op = { cmd = 'ipython', display_name = 'ipython', direction = 'vertical', hidden = true }, - oP = { cmd = 'ipython', display_name = 'ipython-full', direction = 'tab', hidden = true }, - on = { cmd = 'ncmpcpp', display_name = 'ncmpcpp', direction = 'tab', hidden = true }, - ob = { cmd = 'btop', display_name = 'btop', direction = 'tab', hidden = true }, - od = { cmd = 'lazydocker', display_name = 'lazydocker', direction = 'tab', hidden = true }, + gg = { cmd = "lazygit", display_name = "lazygit", direction = "tab", hidden = true }, + op = { cmd = "ipython", display_name = "ipython", direction = "vertical", hidden = true }, + oP = { cmd = "ipython", display_name = "ipython-full", direction = "tab", hidden = true }, + on = { cmd = "ncmpcpp", display_name = "ncmpcpp", direction = "tab", hidden = true }, + ob = { cmd = "btop", display_name = "btop", direction = "tab", hidden = true }, + od = { cmd = "lazydocker", display_name = "lazydocker", direction = "tab", hidden = true }, } for key, value in pairs(programs_map) do - map('n', '' .. key, function() - term_toggle(term_factory(value)) - end, opts) + map("n", "" .. key, function() + term_toggle(term_factory(value)) + end, opts) end -map('v', 'op', ':ToggleTerm name=ipython') -map('v', 'oP', ':ToggleTerm name=ipython-full') -map('t', 'tp', ':FloatermToggle ipython', opts) -map('t', 'tP', ':FloatermToggle ipython-full', opts) +map("v", "op", ":ToggleTerm name=ipython") +map("v", "oP", ":ToggleTerm name=ipython-full") +map("t", "tp", ":FloatermToggle ipython", opts) +map("t", "tP", ":FloatermToggle ipython-full", opts) -map('n', '', ':ToggleTerm name=toggleterm', opts) -map('n', 'tt', ':ToggleTerm name=toggleterm', opts) -map('n', 'ts', ':TermSelect', opts) -map('n', 'tv', ':ToggleTerm direction=vertical name=toggleterm-vert', opts) -map('n', 'th', ':ToggleTerm direction=horizontal name=toggleterm-hori', opts) -map('n', 'tf', ':ToggleTerm name=toggleterm', opts) +map("n", "", ":ToggleTerm name=toggleterm", opts) +map("n", "tt", ":ToggleTerm name=toggleterm", opts) +map("n", "ts", ":TermSelect", opts) +map("n", "tv", ":ToggleTerm direction=vertical name=toggleterm-vert", opts) +map("n", "th", ":ToggleTerm direction=horizontal name=toggleterm-hori", opts) +map("n", "tf", ":ToggleTerm name=toggleterm", opts) -map('t', 'tt', ':ToggleTerm', opts) -map('t', 'tf', ':ToggleTerm', opts) -map('t', 'tv', ':ToggleTerm --name=toggleterm-vert', opts) -map('t', 'th', ':ToggleTerm --name=toggleterm-hori', opts) -map('t', '', ':Toggleterm', opts) -map('t', '', '', opts) -map('t', '', '', opts) -- fix space in terminal +map("t", "tt", ":ToggleTerm", opts) +map("t", "tf", ":ToggleTerm", opts) +map("t", "tv", ":ToggleTerm --name=toggleterm-vert", opts) +map("t", "th", ":ToggleTerm --name=toggleterm-hori", opts) +map("t", "", ":Toggleterm", opts) +map("t", "", "", opts) +map("t", "", "", opts) -- fix space in terminal --}}} --{{{ LSP mappings -map('n', 'gA', vim.lsp.buf.code_action, opts) -map('n', 'gd', ':Telescope lsp_definitions', opts) -map('n', 'gDc', ':Telescope lsp_implementations', opts) -map('n', 'gDf', ':Telescope lsp_definitions', opts) -map('n', 'gF', ':edit ', opts) -map('n', 'gT', ':Telescope lsp_type_definitions', opts) -map('n', 'gb', ':Gitsigns blame_line', opts) -map('n', 'gi', ':Telescope lsp_implementations', opts) -map('n', 'gj', ':Telescope jumplist', opts) -map('n', 'gl', vim.lsp.codelens.run, opts) -map('n', 'gr', ':Telescope lsp_references', opts) -map('n', 'gs', vim.lsp.buf.signature_help, opts) -map('n', 'K', vim.lsp.buf.hover, opts) +map("n", "gA", vim.lsp.buf.code_action, opts) +map("n", "gd", ":Telescope lsp_definitions", opts) +map("n", "gDc", ":Telescope lsp_implementations", opts) +map("n", "gDf", ":Telescope lsp_definitions", opts) +map("n", "gF", ":edit ", opts) +map("n", "gT", ":Telescope lsp_type_definitions", opts) +map("n", "gb", ":Gitsigns blame_line", opts) +map("n", "gi", ":Telescope lsp_implementations", opts) +map("n", "gj", ":Telescope jumplist", opts) +map("n", "gl", vim.lsp.codelens.run, opts) +map("n", "gr", ":Telescope lsp_references", opts) +map("n", "gs", vim.lsp.buf.signature_help, opts) +map("n", "K", vim.lsp.buf.hover, opts) --}}} --{{{ Code Companion and Copilot -map('n', 'oc', ':CodeCompanionChat') -map('n', 'cc', ':CodeCompanionChat', opts) -map('n', 'ci', ':CodeCompanion ', opts) -map('n', 'cp', ':vert Copilot panel', opts) -map('n', 'Ca', ':CodeCompanionActions', opts) -map('v', 'Cc', ':CodeCompanionChat Add', opts) -map('v', 'Ce', ':CodeCompanion /explain', opts) -map('v', 'Cf', ':CodeCompanion /fix', opts) -map('v', 'Cl', ':CodeCompanion /lsp', opts) -map('v', 'CT', ':CodeCompanion /tests', opts) +map("n", "oc", ":CodeCompanionChat") +map("n", "cc", ":CodeCompanionChat", opts) +map("n", "ct", ":CodeCompanionChat Toggle", opts) +map("n", "ci", ":CodeCompanion ", opts) +map("n", "cp", ":vert Copilot panel", opts) +map("n", "Ca", ":CodeCompanionActions", opts) +map("v", "Cc", ":CodeCompanionChat Add", opts) +map("v", "Ce", ":CodeCompanion /explain", opts) +map("v", "Cf", ":CodeCompanion /fix", opts) +map("v", "Cl", ":CodeCompanion /lsp", opts) +map("v", "CT", ":CodeCompanion /tests", opts) --}}} --{{{ Diagnostics @@ -137,88 +137,94 @@ map('v', 'CT', ':CodeCompanion /tests', opts) -- nnoremap cDn :lua vim.diagnostic.goto_next() -- nnoremap cDp :lua vim.diagnostic.goto_prev() -- nnoremap cl :lua vim.diagnostic.setloclist() -map('n', "cd", ':Telescope diagnostics') -map('n', "cDn", ':lua vim.diagnostic.goto_next()') -map('n', "cDp", ':lua vim.diagnostic.goto_prev()') -map('n', "cd", ':lua vim.diagnostic.setloclist()') +map("n", "cd", ":Telescope diagnostics") +map("n", "cDn", ":lua vim.diagnostic.goto_next()") +map("n", "cDp", ":lua vim.diagnostic.goto_prev()") +map("n", "cd", ":lua vim.diagnostic.setloclist()") --}}} --{{{ Telescope mappings -map('n', '//', ':Telescope current_buffer_fuzzy_find', opts) -map('n', '??', ':Telescope lsp_document_symbols', opts) -map('n', 'fc', - ':Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical', - opts) +map("n", "//", ":Telescope current_buffer_fuzzy_find", opts) +map("n", "??", ":Telescope lsp_document_symbols", opts) +map( + "n", + "fc", + ':Telescope color_names theme=dropdown layout_config={width=0.45,height=25,prompt_position="bottom"} layout_strategy=vertical', + opts +) -- map('n', 'ob', ':Telescope file_browser') -map('n', 'ff', ':Telescope find_files', opts) -map('n', 'sf', ':Telescope find_files', opts) -map('n', 'fg', ':Telescope live_grep', opts) -map('n', 'fG', - ':Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical', - opts) -map('n', 'fb', ':Telescope file_browser', opts) -map('n', 'fr', ':Telescope oldfiles', opts) +map("n", "ff", ":Telescope find_files", opts) +map("n", "sf", ":Telescope find_files", opts) +map("n", "fg", ":Telescope live_grep", opts) +map( + "n", + "fG", + ':Telescope glyph theme=dropdown layout_config={width=0.45,height=35,prompt_position="bottom"} layout_strategy=vertical', + opts +) +map("n", "fb", ":Telescope file_browser", opts) +map("n", "fr", ":Telescope oldfiles", opts) --{{{ Telescope Helper -map('n', 'hc', ':Telescope commands') -map('n', 'hv', ':Telescope vim_options') -map('n', 'hk', ':Telescope keymaps') -map('n', 'hs', ':Telescope spell_suggest') -map('n', 'hm', ':Telescope man_pages') +map("n", "hc", ":Telescope commands") +map("n", "hv", ":Telescope vim_options") +map("n", "hk", ":Telescope keymaps") +map("n", "hs", ":Telescope spell_suggest") +map("n", "hm", ":Telescope man_pages") --}}} --{{{ Telescope Search -map('n', 'sf', ':Telescope find_files') -map('n', 'sg', ':Telescope live_grep') -map('n', 'sh', ':Telescope command_history') -map('n', 'sm', ':Telescope man_pages') -map('n', 's/', ':Telescope search_history') +map("n", "sf", ":Telescope find_files") +map("n", "sg", ":Telescope live_grep") +map("n", "sh", ":Telescope command_history") +map("n", "sm", ":Telescope man_pages") +map("n", "s/", ":Telescope search_history") --}}} --}}} --{{{ File explorer and tools -map('n', 'n', ':NvimTreeToggle', opts) -map('n', 'D', ':Dotenv .env', opts) +map("n", "n", ":NvimTreeToggle", opts) +map("n", "D", ":Dotenv .env", opts) --}}} --{{{ Git mappings -map('n', 'gc', ':Telescope git_commits', opts) -map('n', 'gf', ':Telescope git_files', opts) +map("n", "gc", ":Telescope git_commits", opts) +map("n", "gf", ":Telescope git_files", opts) --}}} --{{{ Misc utilities -map('n', 'x', '!chmod +x %', opts) -map('n', 'y', '"+', opts) -map('v', 'y', '"+', opts) -map('n', 'sc', ':nohls') +map("n", "x", "!chmod +x %", opts) +map("n", "y", '"+', opts) +map("v", "y", '"+', opts) +map("n", "sc", ":nohls") --}}} --{{{ Goto Preview -map('n', "gpc", ':lua require("goto-preview").close_all_win()') -map('n', "gpd", ':lua require("goto-preview").goto_preview_definition()') -map('n', "gpi", ':lua require("goto-preview").goto_preview_implementation()') +map("n", "gpc", ':lua require("goto-preview").close_all_win()') +map("n", "gpd", ':lua require("goto-preview").goto_preview_definition()') +map("n", "gpi", ':lua require("goto-preview").goto_preview_implementation()') --}}} --{{{ Workspace management -map('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) -map('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) -map('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) +map("n", "wa", vim.lsp.buf.add_workspace_folder, opts) +map("n", "wr", vim.lsp.buf.remove_workspace_folder, opts) +map("n", "wl", function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, opts) --}}} --{{{ LSP -map('n', 'ld', ':Telescope lsp_definitions') -map('n', 'lD', ':Telescope diagnostic') -map('n', 'la', ':lua vim.lsp.buf.code_action()') -map('n', 'lci', ':Telescope lsp_incoming_calls') -map('n', 'lco', ':Telescope lsp_outgoing_calls') -map('n', 'lh', ':lua vim.lsp.buf.signature_help()') -map('n', 'li', ':Telescope lsp_implementations') -map('n', 'lr', ':Telescope lsp_references') -map('n', 'lR', ':lua vim.lsp.buf.rename()') -map('n', 'ls', ':Telescope lsp_document_symbols') -map('n', 'lt', ':Telescope lsp_type_definitions') -map('n', 'lw', ':Telescope lsp_dynamic_workspace_symbols') +map("n", "ld", ":Telescope lsp_definitions") +map("n", "lD", ":Telescope diagnostic") +map("n", "la", ":lua vim.lsp.buf.code_action()") +map("n", "lci", ":Telescope lsp_incoming_calls") +map("n", "lco", ":Telescope lsp_outgoing_calls") +map("n", "lh", ":lua vim.lsp.buf.signature_help()") +map("n", "li", ":Telescope lsp_implementations") +map("n", "lr", ":Telescope lsp_references") +map("n", "lR", ":lua vim.lsp.buf.rename()") +map("n", "ls", ":Telescope lsp_document_symbols") +map("n", "lt", ":Telescope lsp_type_definitions") +map("n", "lw", ":Telescope lsp_dynamic_workspace_symbols") --}}} diff --git a/lua/core/plugins.lua b/lua/core/plugins.lua index 292c41e..0a52a92 100644 --- a/lua/core/plugins.lua +++ b/lua/core/plugins.lua @@ -1,281 +1,326 @@ local lsp_dev = {} -vim.cmd [[packadd packer.nvim]] -require('packer').startup(function(use) - use 'wbthomason/packer.nvim' - use 'nvim-lua/plenary.nvim' - use { - 'nvim-treesitter/nvim-treesitter', - run = function() - require('nvim-treesitter.install').update({ with_sync = true }) - end - } - use { 'nvim-treesitter/nvim-treesitter-context' } +vim.cmd([[packadd packer.nvim]]) +require("packer").startup(function(use) + use("wbthomason/packer.nvim") + use("nvim-lua/plenary.nvim") + use({ + "nvim-treesitter/nvim-treesitter", + run = function() + require("nvim-treesitter.install").update({ with_sync = true }) + end, + }) + use({ "nvim-treesitter/nvim-treesitter-context" }) - -- TELESCOPE {{{ + use({ + "kndndrj/nvim-dbee", + requires = { + "MunifTanjim/nui.nvim", + }, + run = function() + -- Install tries to automatically detect the install method. + -- if it fails, try calling it with one of these parameters: + -- "curl", "wget", "bitsadmin", "go" + require("dbee").install() + end, + config = function() + require("dbee").setup( --[[optional config]]) + end, + }) - use { 'nvim-telescope/telescope.nvim' } - use { 'nvim-telescope/telescope-file-browser.nvim' } - use 'nvim-telescope/telescope-dap.nvim' - use { 'ghassan0/telescope-glyph.nvim' } - use { 'nat-418/telescope-color-names.nvim' } - use { - 'nvim-telescope/telescope-fzf-native.nvim', - run = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' - } + -- TELESCOPE {{{ - -- }}} + use({ "nvim-telescope/telescope.nvim" }) + use({ "nvim-telescope/telescope-file-browser.nvim" }) + use("nvim-telescope/telescope-dap.nvim") + use({ "ghassan0/telescope-glyph.nvim" }) + use({ "nat-418/telescope-color-names.nvim" }) + use({ + "nvim-telescope/telescope-fzf-native.nvim", + run = "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build", + }) - -- LSP/DEV {{{ - use { - "zbirenbaum/copilot.lua", - cmd = "Copilot", - event = "InsertEnter", - config = function() - require("copilot").setup({ - panel = { - enabled = true, - auto_refresh = false, - keymap = { - jump_prev = "[[", - jump_next = "]]", - accept = "", - refresh = "gr", - open = "" - }, - layout = { - position = "bottom", -- | top | left | right | horizontal | vertical - ratio = 0.4 - }, - }, - suggestion = { - enabled = false, - auto_trigger = false, - hide_during_completion = true, - debounce = 75, - keymap = { - accept = "", - accept_word = false, - accept_line = false, - next = "", - prev = "", - dismiss = "", - }, - }, - -- filetypes = { - -- yaml = false, - -- markdown = false, - -- help = false, - -- gitcommit = false, - -- gitrebase = false, - -- hgcommit = false, - -- svn = false, - -- cvs = false, - -- ["."] = false, - -- }, - copilot_node_command = 'node', -- Node.js version must be > 18.x - server_opts_overrides = { - trace = "verbose", - settings = { - advanced = { - listCount = 10, -- #completions for panel - inlineSuggestCount = 3, -- #completions for getCompletions - } - } - } - } - ) - end, - } - use { "zbirenbaum/copilot-cmp" } + -- }}} - use({ - "olimorris/codecompanion.nvim", - requires = { - "nvim-lua/plenary.nvim", - "nvim-treesitter/nvim-treesitter", - "j-hui/fidget.nvim" - }, - init = function() - require("plugins.codecompanion.fidget-spinner"):init() - end, - }) + -- LSP/DEV {{{ + use({ + "zbirenbaum/copilot.lua", + cmd = "Copilot", + event = "InsertEnter", + config = function() + require("copilot").setup({ + panel = { + enabled = true, + auto_refresh = false, + keymap = { + jump_prev = "[[", + jump_next = "]]", + accept = "", + refresh = "gr", + open = "", + }, + layout = { + position = "bottom", -- | top | left | right | horizontal | vertical + ratio = 0.4, + }, + }, + suggestion = { + enabled = false, + auto_trigger = false, + hide_during_completion = true, + debounce = 75, + keymap = { + accept = "", + accept_word = false, + accept_line = false, + next = "", + prev = "", + dismiss = "", + }, + }, + -- filetypes = { + -- yaml = false, + -- markdown = false, + -- help = false, + -- gitcommit = false, + -- gitrebase = false, + -- hgcommit = false, + -- svn = false, + -- cvs = false, + -- ["."] = false, + -- }, + copilot_node_command = "node", -- Node.js version must be > 18.x + server_opts_overrides = { + trace = "verbose", + settings = { + advanced = { + listCount = 10, -- #completions for panel + inlineSuggestCount = 3, -- #completions for getCompletions + }, + }, + }, + }) + end, + }) + use({ "zbirenbaum/copilot-cmp" }) - use({ - "iamcco/markdown-preview.nvim", - run = function() vim.fn["mkdp#util#install"]() end - }) - use { - "L3MON4D3/LuaSnip", - -- tag = "v2.*", - run = "make install_jsregexp", - dependencies = { "rafamadriz/friendly-snippets" } - } - use { 'folke/neodev.nvim' } - use { 'saadparwaiz1/cmp_luasnip' } - use { 'hrsh7th/cmp-buffer' } - use { 'hrsh7th/cmp-cmdline' } - use { 'hrsh7th/cmp-nvim-lsp' } - use { 'hrsh7th/cmp-nvim-lsp-document-symbol' } - use { 'hrsh7th/cmp-nvim-lsp-signature-help' } - use { 'hrsh7th/cmp-nvim-lua' } - use { 'hrsh7th/cmp-path' } - use { 'hrsh7th/nvim-cmp' } - use { 'https://git.sr.ht/~whynothugo/lsp_lines.nvim' } - -- use { 'jose-elias-alvarez/null-ls.nvim' } - use { 'nvimtools/none-ls.nvim' } - use { 'neovim/nvim-lspconfig' } - use { 'onsails/lspkind-nvim' } - use { - "https://git.sr.ht/~nedia/auto-format.nvim", - config = function() - require("auto-format").setup() - end - } - use 'mfussenegger/nvim-lint' + use({ + "olimorris/codecompanion.nvim", + requires = { + "nvim-lua/plenary.nvim", + "nvim-treesitter/nvim-treesitter", + "j-hui/fidget.nvim", + }, + init = function() + require("plugins.codecompanion.fidget-spinner"):init() + end, + }) - use 'nvim-neotest/nvim-nio' + use({ + "iamcco/markdown-preview.nvim", + run = function() + vim.fn["mkdp#util#install"]() + end, + }) + use({ + "L3MON4D3/LuaSnip", + -- tag = "v2.*", + run = "make install_jsregexp", + dependencies = { "rafamadriz/friendly-snippets" }, + }) + use({ "folke/neodev.nvim" }) + use({ "saadparwaiz1/cmp_luasnip" }) + use({ "hrsh7th/cmp-buffer" }) + use({ "hrsh7th/cmp-cmdline" }) + use({ "hrsh7th/cmp-nvim-lsp" }) + use({ "hrsh7th/cmp-nvim-lsp-document-symbol" }) + use({ "hrsh7th/cmp-nvim-lsp-signature-help" }) + use({ "hrsh7th/cmp-nvim-lua" }) + use({ "hrsh7th/cmp-path" }) + use({ "hrsh7th/nvim-cmp" }) + use({ "https://git.sr.ht/~whynothugo/lsp_lines.nvim" }) + -- use { 'jose-elias-alvarez/null-ls.nvim' } + use({ "nvimtools/none-ls.nvim" }) + use({ "neovim/nvim-lspconfig" }) + use({ "onsails/lspkind-nvim" }) + use({ + "https://git.sr.ht/~nedia/auto-format.nvim", + config = function() + require("auto-format").setup() + end, + }) + use("mfussenegger/nvim-lint") - -- DADBOD {{{ + use("nvim-neotest/nvim-nio") + -- }}} - -- use { 'tpope/vim-dadbod' } - -- use { 'kristijanhusak/vim-dadbod-ui' } - -- use { 'kristijanhusak/vim-dadbod-completion' } + -- DADBOD {{{ - -- }}} + -- use { 'tpope/vim-dadbod' } + -- use { 'kristijanhusak/vim-dadbod-ui' } + -- use { 'kristijanhusak/vim-dadbod-completion' } - -- }}} + -- }}} - -- UI {{{ + -- UI {{{ - use { "akinsho/toggleterm.nvim", tag = '*' } - use { 'HiPhish/rainbow-delimiters.nvim' } - use { - "lukas-reineke/indent-blankline.nvim", - -- config = function() - -- opts = {} - -- -- Other blankline configuration here - -- require("ibl").setup(require("indent-rainbowline").make_opts(opts)) - -- end, - -- requires = { "TheGLander/indent-rainbowline.nvim" } - } + use({ "akinsho/toggleterm.nvim", tag = "*" }) + use({ "HiPhish/rainbow-delimiters.nvim" }) + use({ + "lukas-reineke/indent-blankline.nvim", + }) - use { - 'glepnir/dashboard-nvim', - -- event = 'VimEnter', - requires = { 'nvim-tree/nvim-web-devicons' } - } - use { - 'j-hui/fidget.nvim', - tag = 'legacy', - config = function() - require("fidget").setup { - -- options - } - end - } - use { - 'nvim-lualine/lualine.nvim', - requires = { 'kyazdani42/nvim-web-devicons', opt = true } - } - use { 'AndreM222/copilot-lualine' } - use { 'kyazdani42/nvim-web-devicons' } - use { 'norcalli/nvim-colorizer.lua' } - use { 'akinsho/nvim-bufferline.lua' } - use { 'andweeb/presence.nvim' } - use { 'folke/which-key.nvim' } - use { 'kyazdani42/nvim-tree.lua' } - use { 'lewis6991/gitsigns.nvim' } - use { 'rcarriga/nvim-notify' } - use { 'stevearc/dressing.nvim' } - use { 'echasnovski/mini.nvim' } + --{{{ DASHBOARD + use({ + "nvimdev/dashboard-nvim", + event = "VimEnter", + config = function() + require("dashboard").setup({ + theme = "hyper", + config = { + week_header = { + enable = true, + }, + shortcut = { + { desc = "󰊳 Update", group = "@property", action = "Lazy update", key = "u" }, + { + icon = " ", + icon_hl = "@variable", + desc = "Files", + group = "Label", + action = "Telescope find_files", + key = "f", + }, + { + desc = " Apps", + group = "DiagnosticHint", + action = "Telescope app", + key = "a", + }, + { + desc = " dotfiles", + group = "Number", + action = "Telescope ~/.config", + key = "d", + }, + }, + }, + }) + end, + requires = { "nvim-tree/nvim-web-devicons" }, + }) + --}}} - -- }}} + use({ + "j-hui/fidget.nvim", + tag = "legacy", + config = function() + require("fidget").setup({ + -- options + }) + end, + }) + use({ + "nvim-lualine/lualine.nvim", + requires = { "kyazdani42/nvim-web-devicons", opt = true }, + }) + use({ "AndreM222/copilot-lualine" }) + use({ "kyazdani42/nvim-web-devicons" }) + use({ "norcalli/nvim-colorizer.lua" }) + use({ "akinsho/nvim-bufferline.lua" }) + use({ "andweeb/presence.nvim" }) + use({ "folke/which-key.nvim" }) + use({ "kyazdani42/nvim-tree.lua" }) + use({ "lewis6991/gitsigns.nvim" }) + use({ "rcarriga/nvim-notify" }) + use({ "stevearc/dressing.nvim" }) + use({ "echasnovski/mini.nvim" }) - -- EXTRAS {{{ + -- }}} - use { - "nvim-neorg/neorg", - -- tag = "*", - ft = "norg", - after = "nvim-treesitter", -- You may want to specify Telescope here as well - config = function() - require('neorg').setup { - load = { - ["core.defaults"] = {}, -- Loads default behaviour - ["core.concealer"] = {}, -- Adds pretty icons to your documents - ["core.completion"] = { config = { engine = "nvim-cmp" } }, -- Adds completion - ["core.dirman"] = { -- Manages Neorg workspaces - config = { workspaces = { notes = "~/notes" } } - } - } - } - end - } - use 'jiangmiao/auto-pairs' - use 'pechorin/any-jump.vim' - use 'tpope/vim-commentary' - use 'tpope/vim-dotenv' - use 'tpope/vim-surround' - -- use 'voldikss/vim-floaterm' - use 'wakatime/vim-wakatime' - use 'rmagatti/goto-preview' + -- EXTRAS {{{ - -- }}} + use({ + "nvim-neorg/neorg", + -- tag = "*", + ft = "norg", + after = "nvim-treesitter", -- You may want to specify Telescope here as well + config = function() + require("neorg").setup({ + load = { + ["core.defaults"] = {}, -- Loads default behaviour + ["core.concealer"] = {}, -- Adds pretty icons to your documents + ["core.completion"] = { config = { engine = "nvim-cmp" } }, -- Adds completion + ["core.dirman"] = { -- Manages Neorg workspaces + config = { workspaces = { notes = "~/notes" } }, + }, + }, + }) + end, + }) + use("jiangmiao/auto-pairs") + use("pechorin/any-jump.vim") + use("tpope/vim-commentary") + use("tpope/vim-dotenv") + use("tpope/vim-surround") + -- use 'voldikss/vim-floaterm' + use("wakatime/vim-wakatime") + use("rmagatti/goto-preview") - -- COLORSCHEMES {{{ + -- }}} - use { 'Mofiqul/dracula.nvim' } - -- use({ - -- 'NTBBloodbath/doom-one.nvim', - -- setup = function() - -- -- Add color to cursor - -- vim.g.doom_one_cursor_coloring = false - -- -- Set :terminal colors - -- vim.g.doom_one_terminal_colors = true - -- -- Enable italic comments - -- vim.g.doom_one_italic_comments = false - -- -- Enable TS support - -- vim.g.doom_one_enable_treesitter = true - -- -- Color whole diagnostic text or only underline - -- vim.g.doom_one_diagnostics_text_color = false - -- -- Enable transparent background - -- vim.g.doom_one_transparent_background = false + -- COLORSCHEMES {{{ - -- -- Pumblend transparency - -- vim.g.doom_one_pumblend_enable = false - -- vim.g.doom_one_pumblend_transparency = 20 + use({ "Mofiqul/dracula.nvim" }) + -- use({ + -- 'NTBBloodbath/doom-one.nvim', + -- setup = function() + -- -- Add color to cursor + -- vim.g.doom_one_cursor_coloring = false + -- -- Set :terminal colors + -- vim.g.doom_one_terminal_colors = true + -- -- Enable italic comments + -- vim.g.doom_one_italic_comments = false + -- -- Enable TS support + -- vim.g.doom_one_enable_treesitter = true + -- -- Color whole diagnostic text or only underline + -- vim.g.doom_one_diagnostics_text_color = false + -- -- Enable transparent background + -- vim.g.doom_one_transparent_background = false - -- -- Plugins integration - -- vim.g.doom_one_plugin_neorg = true - -- vim.g.doom_one_plugin_barbar = false - -- vim.g.doom_one_plugin_telescope = true - -- vim.g.doom_one_plugin_neogit = true - -- vim.g.doom_one_plugin_nvim_tree = true - -- vim.g.doom_one_plugin_dashboard = true - -- vim.g.doom_one_plugin_startify = true - -- vim.g.doom_one_plugin_whichkey = true - -- vim.g.doom_one_plugin_indent_blankline = true - -- vim.g.doom_one_plugin_vim_illuminate = false - -- vim.g.doom_one_plugin_lspsaga = false - -- end - -- config = function() - -- vim.cmd("colorscheme doom-one") - -- vim.cmd( - -- "highlight Pmenu ctermfg=white ctermbg=black gui=NONE guifg=white guibg=#282C34") - -- vim.cmd("highlight PmenuSel guifg=purple guibg=red") - -- end - -- }) - use { 'olimorris/onedarkpro.nvim' } + -- -- Pumblend transparency + -- vim.g.doom_one_pumblend_enable = false + -- vim.g.doom_one_pumblend_transparency = 20 - use { - "catppuccin/nvim", - as = "catppuccin", - config = function() - vim.cmd("colorscheme catppuccin-macchiato") - end + -- -- Plugins integration + -- vim.g.doom_one_plugin_neorg = true + -- vim.g.doom_one_plugin_barbar = false + -- vim.g.doom_one_plugin_telescope = true + -- vim.g.doom_one_plugin_neogit = true + -- vim.g.doom_one_plugin_nvim_tree = true + -- vim.g.doom_one_plugin_dashboard = true + -- vim.g.doom_one_plugin_startify = true + -- vim.g.doom_one_plugin_whichkey = true + -- vim.g.doom_one_plugin_indent_blankline = true + -- vim.g.doom_one_plugin_vim_illuminate = false + -- vim.g.doom_one_plugin_lspsaga = false + -- end + -- config = function() + -- vim.cmd("colorscheme doom-one") + -- vim.cmd( + -- "highlight Pmenu ctermfg=white ctermbg=black gui=NONE guifg=white guibg=#282C34") + -- vim.cmd("highlight PmenuSel guifg=purple guibg=red") + -- end + -- }) + use({ "olimorris/onedarkpro.nvim" }) - } + use({ + "catppuccin/nvim", + as = "catppuccin", + config = function() + vim.cmd("colorscheme catppuccin-macchiato") + end, + }) - -- }}} + -- }}} end) diff --git a/lua/plugins/lsp/null-ls.lua b/lua/plugins/lsp/null-ls.lua index 6697074..5c9745b 100644 --- a/lua/plugins/lsp/null-ls.lua +++ b/lua/plugins/lsp/null-ls.lua @@ -32,7 +32,7 @@ require("null-ls").setup({ null_ls.builtins.diagnostics.mypy, null_ls.builtins.diagnostics.markdownlint, null_ls.builtins.diagnostics.pylint, - null_ls.builtins.diagnostics.pycodestyle, + null_ls.builtins.diagnostics.pydoclint, null_ls.builtins.formatting.stylua, null_ls.builtins.formatting.markdownlint, null_ls.builtins.formatting.prettier, -- handled by lsp server diff --git a/lua/plugins/ui/dashboard-nvim.lua b/lua/plugins/ui/dashboard-nvim.lua deleted file mode 100644 index 82586b9..0000000 --- a/lua/plugins/ui/dashboard-nvim.lua +++ /dev/null @@ -1,93 +0,0 @@ -local home = os.getenv('HOME') -local db = require('dashboard') --- macos --- db.preview_command = 'cat | lolcat -F 0.3' --- linux --- db.preview_command = 'ueberzug' --- db.preview_file_path = home .. '/.config/nvim/static/neovim.cat' --- db.preview_file_height = 11 --- db.preview_file_width = 70 -vim.cmd('source $HOME/.config/nvim/static/nvim-dashboard.vim') -db.custom_center = { - { - icon = ' ', - desc = 'Recently latest session ', - shortcut = 'SPC s l', - action = 'SessionLoad' - }, { - icon = ' ', - desc = 'Recently opened files ', - action = 'Telescope oldfiles', - shortcut = 'SPC f h' -}, { - desc = 'Find File ', - icon = ' ', - action = 'Telescope find_files find_command=rg,--hidden,--files', - shortcut = 'SPC f f' -}, { - icon = ' ', - desc = 'File Browser ', - action = 'Telescope file_browser', - shortcut = 'SPC f b' -}, { - icon = ' ', - desc = 'Find word ', - action = 'Telescope live_grep', - shortcut = 'SPC f w' -}, { - icon = ' ', - desc = 'Open Personal dotfiles ', - action = ':e ~/.config/nvim/init.vim', - shortcut = 'SPC f d' -} -} -require('dashboard').setup { - theme = 'doom', -- theme is doom and hyper default is hyper - disable_move = false, -- default is false disable move keymap for hyper - shortcut_type = 'number', -- shorcut type 'letter' or 'number' - change_to_vcs_root = false, -- default is false,for open file in hyper mru. it will change to the root of vcs - config = { - header = { "NVIM DASHBOARD" }, -- your header - center = { - { - icon = ' ', - icon_hl = 'Title', - desc = 'Open Recent', - desc_hl = 'String', - key = '1', - keymap = 'SPC f r', - key_hl = 'Number', - action = 'lua print(1)' - }, { - icon = ' ', - icon_hl = 'Title', - desc = 'Find File', - desc_hl = 'String', - key = '2', - key_hl = 'Number', - keymap = 'SPC f f', - action = 'lua print(2)' - } - - -- { - -- icon = ' ', - -- desc = 'Find Dotfiles', - -- key = 'f', - -- keymap = 'SPC f d', - -- action = 'lua print(3)' - -- } - }, - footer = {} -- your footer - }, - hide = { - statusline = true, -- hide statusline default is true - tabline = true, -- hide the tabline - winbar = true -- hide winbar - } - -- preview = { - -- command = "bat", -- preview command - -- file_path -- preview file path - -- file_height -- preview file height - -- file_width -- preview file width - -- }, -} diff --git a/lua/plugins/ui/indent-blankline.lua b/lua/plugins/ui/indent-blankline.lua index 79ba695..d82b623 100644 --- a/lua/plugins/ui/indent-blankline.lua +++ b/lua/plugins/ui/indent-blankline.lua @@ -1,27 +1,30 @@ local highlight = { - "RainbowRed", - "RainbowYellow", - "RainbowBlue", - "RainbowOrange", - "RainbowGreen", - "RainbowViolet", - "RainbowCyan", + "RainbowRed", + "RainbowYellow", + "RainbowBlue", + "RainbowOrange", + "RainbowGreen", + "RainbowViolet", + "RainbowCyan", } -local hooks = require "ibl.hooks" +local hooks = require("ibl.hooks") -- create the highlight groups in the highlight setup hook, so they are reset -- every time the colorscheme changes hooks.register(hooks.type.HIGHLIGHT_SETUP, function() - vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#ED8796" }) - vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#EED49F" }) - vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#8AADF4" }) - vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#F5A97F" }) - vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#A6DA95" }) - vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C6A0F6" }) - vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#8BD5CA" }) + vim.api.nvim_set_hl(0, "RainbowRed", { fg = "#ED8796" }) + vim.api.nvim_set_hl(0, "RainbowYellow", { fg = "#EED49F" }) + vim.api.nvim_set_hl(0, "RainbowBlue", { fg = "#8AADF4" }) + vim.api.nvim_set_hl(0, "RainbowOrange", { fg = "#F5A97F" }) + vim.api.nvim_set_hl(0, "RainbowGreen", { fg = "#A6DA95" }) + vim.api.nvim_set_hl(0, "RainbowViolet", { fg = "#C6A0F6" }) + vim.api.nvim_set_hl(0, "RainbowCyan", { fg = "#8BD5CA" }) end) vim.g.rainbow_delimiters = { highlight = highlight } -require("ibl").setup { scope = { highlight = highlight } } +require("ibl").setup({ + scope = { highlight = highlight }, + exclude = { filetypes = { "dashboard" } }, +}) hooks.register(hooks.type.SCOPE_HIGHLIGHT, hooks.builtin.scope_highlight_from_extmark) diff --git a/lua/plugins/ui/init.lua b/lua/plugins/ui/init.lua index b92bb44..0dc567f 100644 --- a/lua/plugins/ui/init.lua +++ b/lua/plugins/ui/init.lua @@ -1,19 +1,17 @@ -require('plugins.ui.bufferline') -require('plugins.ui.copilot-lualine') -require('plugins.ui.dashboard-nvim') -require('plugins.ui.fidget') --- require('plugins.ui.git-blame') -require('plugins.ui.gitsigns') -require('plugins.ui.lualine') -require('plugins.ui.nvim-colorizer') -require('plugins.ui.nvim-notify') -require('plugins.ui.nvimtree') -require('plugins.ui.presence') -require('plugins.ui.rainbow-delimiters') -require('plugins.ui.telescope-file-browser') -require('plugins.ui.telescope') -require('plugins.ui.treesitter-context') -require('plugins.ui.treesitter') -require('plugins.ui.whichkey') -require('plugins.ui.indent-blankline') -require('plugins.ui.toggleterm') +require("plugins.ui.bufferline") +require("plugins.ui.copilot-lualine") +require("plugins.ui.fidget") +require("plugins.ui.gitsigns") +require("plugins.ui.lualine") +require("plugins.ui.nvim-colorizer") +require("plugins.ui.nvim-notify") +require("plugins.ui.nvimtree") +require("plugins.ui.presence") +require("plugins.ui.rainbow-delimiters") +require("plugins.ui.telescope-file-browser") +require("plugins.ui.telescope") +require("plugins.ui.treesitter-context") +require("plugins.ui.treesitter") +require("plugins.ui.whichkey") +require("plugins.ui.indent-blankline") +require("plugins.ui.toggleterm") diff --git a/static/nvim-dashboard.vim b/static/nvim-dashboard.vim deleted file mode 100644 index 4cdd9bb..0000000 --- a/static/nvim-dashboard.vim +++ /dev/null @@ -1,8 +0,0 @@ -let g:dashboard_custom_header = [ -\ ' ███╗ ██╗ ███████╗ ██████╗ ██╗ ██╗ ██╗ ███╗ ███╗', -\ ' ████╗ ██║ ██╔════╝██╔═══██╗ ██║ ██║ ██║ ████╗ ████║', -\ ' ██╔██╗ ██║ █████╗ ██║ ██║ ██║ ██║ ██║ ██╔████╔██║', -\ ' ██║╚██╗██║ ██╔══╝ ██║ ██║ ╚██╗ ██╔╝ ██║ ██║╚██╔╝██║', -\ ' ██║ ╚████║ ███████╗╚██████╔╝ ╚████╔╝ ██║ ██║ ╚═╝ ██║', -\ ' ╚═╝ ╚═══╝ ╚══════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝', -\]