From e93a334c70ae195ea49437d80d71e88969a5bf9b Mon Sep 17 00:00:00 2001 From: Rootiest Date: Sat, 6 Jul 2024 06:23:28 -0400 Subject: [PATCH] refactor: :truck: Prefer Lazy Configs Make better use of Lazy and define configs inside the plugin def --- .gitignore | 3 +- README.md | 15 +-- init.lua | 312 ++++++++++++++++++++++++++++------------------------- 3 files changed, 178 insertions(+), 152 deletions(-) diff --git a/.gitignore b/.gitignore index 90e39ce..696bac3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ lazy-lock.json .luarc.json .neoconf.json -lazyvim.j \ No newline at end of file +lazyvim.json +debug/ \ No newline at end of file diff --git a/README.md b/README.md index bc424be..d218333 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Rootiest NVim Configuration +# Rootiest NeoVim Configuration ```none ██████╗ ██████╗ ██████╗ ████████╗██╗███████╗███████╗████████╗ @@ -7,13 +7,12 @@ ██╔══██╗██║ ██║██║ ██║ ██║ ██║██╔══╝ ╚════██║ ██║ ██║ ██║╚██████╔╝╚██████╔╝ ██║ ██║███████╗███████║ ██║ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═╝ + ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ + ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ + ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ + ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ + ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ - ███╗ ██╗██╗ ██╗██╗███╗ ███╗ - ████╗ ██║██║ ██║██║████╗ ████║ - ██╔██╗ ██║██║ ██║██║██╔████╔██║ - ██║╚██╗██║╚██╗ ██╔╝██║██║╚██╔╝██║ - ██║ ╚████║ ╚████╔╝ ██║██║ ╚═╝ ██║ - ╚═╝ ╚═══╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ``` The rootiest neovim configuration you will ever see! @@ -50,6 +49,8 @@ The rootiest neovim configuration you will ever see! - Detects SSH sessions and disables certain plugins for speed and compatibility - ToggleTerm, fzf, telescope, neotree, etc. for quick access to files and terminal - LSP support for many languages and automatic setup for many more +- Remotely spawn a neovim instance over ssh, in a container, or from a git repo +- Dashboard logo adjusts to the size of the window ## Credits diff --git a/init.lua b/init.lua index f781b14..22523db 100644 --- a/init.lua +++ b/init.lua @@ -64,16 +64,44 @@ require("lazy").setup({ "nvimdev/dashboard-nvim", lazy = false, opts = function() - local logo = [[ + -- if line length is greater than 80, use fancy mode + if vim.fn.winwidth(0) >= 100 then + LOGO = [[ ██████╗ ██████╗ ██████╗ ████████╗██╗███████╗███████╗████████╗ ███╗ ██╗██╗ ██╗██╗███╗ ███╗ ██╔══██╗██╔═══██╗██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝╚══██╔══╝ ████╗ ██║██║ ██║██║████╗ ████║ ██████╔╝██║ ██║██║ ██║ ██║ ██║█████╗ ███████╗ ██║ ██╔██╗ ██║██║ ██║██║██╔████╔██║ ██╔══██╗██║ ██║██║ ██║ ██║ ██║██╔══╝ ╚════██║ ██║ ██║╚██╗██║╚██╗ ██╔╝██║██║╚██╔╝██║ ██║ ██║╚██████╔╝╚██████╔╝ ██║ ██║███████╗███████║ ██║ ██║ ╚████║ ╚████╔╝ ██║██║ ╚═╝ ██║ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═╝ ╚═╝ ╚═══╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ - ]] +]] + elseif vim.fn.winwidth(0) >= 80 then + LOGO = [[ + ███████████ █████ ███ █████ +░░███░░░░░███ ░░███ ░░░ ░░███ + ░███ ░███ ██████ ██████ ███████ ████ ██████ █████ ███████ + ░██████████ ███░░███ ███░░███░░░███░ ░░███ ███░░███ ███░░ ░░░███░ + ░███░░░░░███ ░███ ░███░███ ░███ ░███ ░███ ░███████ ░░█████ ░███ + ░███ ░███ ░███ ░███░███ ░███ ░███ ███ ░███ ░███░░░ ░░░░███ ░███ ███ + █████ █████░░██████ ░░██████ ░░█████ █████░░██████ ██████ ░░█████ +░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░░░ + ██████ █████ █████ █████ ███ +░░██████ ░░███ ░░███ ░░███ ░░░ + ░███░███ ░███ ░███ ░███ ████ █████████████ + ░███░░███░███ ░███ ░███ ░░███ ░░███░░███░░███ + ░███ ░░██████ ░░███ ███ ░███ ░███ ░███ ░███ + ░███ ░░█████ ░░░█████░ ░███ ░███ ░███ ░███ + █████ ░░█████ ░░███ █████ █████░███ █████ +░░░░░ ░░░░░ ░░░ ░░░░░ ░░░░░ ░░░ ░░░░░ - logo = string.rep("\n", 8) .. logo .. "\n\n" +]] + else + LOGO = [[ +░█▀▄░█▀█░█▀█░▀█▀░▀█▀░█▀▀░█▀▀░▀█▀░░░█▀█░█░█░▀█▀░█▄█ +░█▀▄░█░█░█░█░░█░░░█░░█▀▀░▀▀█░░█░░░░█░█░▀▄▀░░█░░█░█ +░▀░▀░▀▀▀░▀▀▀░░▀░░▀▀▀░▀▀▀░▀▀▀░░▀░░░░▀░▀░░▀░░▀▀▀░▀░▀ +]] + end + LOGO = string.rep("\n", 8) .. LOGO .. "\n\n" local opts = { theme = "doom", @@ -83,7 +111,7 @@ require("lazy").setup({ statusline = false, }, config = { - header = vim.split(logo, "\n"), + header = vim.split(LOGO, "\n"), -- stylua: ignore center = { { action = 'lua LazyVim.pick()()', desc = " Find File", icon = " ", key = "f" }, @@ -134,6 +162,56 @@ require("lazy").setup({ return opts end, }, + { + "catppuccin/nvim", + name = "catppuccin", + priority = 1000, + config = function() + require("catppuccin").setup({ + integrations = { + cmp = true, + diffview = true, + dashboard = true, + gitsigns = true, + nvimtree = true, + neotree = true, + treesitter = true, + markdown = true, + sandwich = true, + which_key = true, + telescope = { enabled = true, style = "nvchad" }, + illuminate = { enabled = true, lsp = true }, + notify = true, + notifier = true, + dap = true, + dap_ui = true, + ts_rainbow2 = true, + rainbow_delimiters = true, + lsp_trouble = true, + noice = true, -- codespell:ignore noice + native_lsp = { + enabled = true, + virtual_text = { + errors = { "italic" }, + hints = { "italic" }, + warnings = { "italic" }, + information = { "italic" }, + ok = { "italic" }, + }, + underlines = { + errors = { "underline" }, + hints = { "underline" }, + warnings = { "underline" }, + information = { "underline" }, + ok = { "underline" }, + }, + inlay_hints = { background = true }, + }, + mini = { enabled = true, indentscope_color = "mauve" }, + }, + }) + end, + }, { "folke/persistence.nvim", event = "BufReadPre", -- this will only start session saving when an actual file was opened @@ -143,9 +221,30 @@ require("lazy").setup({ "gorbit99/codewindow.nvim", version = false, config = function() - local codewindow = require("codewindow") - codewindow.setup() - codewindow.apply_default_keybinds() + require("codewindow").setup({ + active_in_terminals = false, -- Should the minimap activate for terminal buffers + auto_enable = true, -- Automatically open the minimap when entering a (non-excluded) buffer (accepts a table of filetypes) + exclude_filetypes = { "help", "dashboard" }, -- Choose certain filetypes to not show minimap on + max_minimap_height = nil, -- The maximum height the minimap can take (including borders) + max_lines = nil, -- If auto_enable is true, don't open the minimap for buffers which have more than this many lines. + minimap_width = 10, -- The width of the text part of the minimap + use_lsp = true, -- Use the builtin LSP to show errors and warnings + use_treesitter = true, -- Use nvim-treesitter to highlight the code + use_git = true, -- Show small dots to indicate git additions and deletions + width_multiplier = 4, -- How many characters one dot represents + z_index = 1, -- The z-index the floating window will be on + show_cursor = true, -- Show the cursor position in the minimap + screen_bounds = "background", -- How the visible area is displayed, "lines": lines above and below, "background": background color + window_border = "none", -- The border style of the floating window (accepts all usual options) + relative = "win", -- What will be the minimap be placed relative to, "win": the curre + events = { + "TextChanged", + "InsertLeave", + "DiagnosticChanged", + "FileWritePost", + }, -- Events that update the code window + }) + require("codewindow").apply_default_keybinds() end, }, { @@ -187,9 +286,61 @@ require("lazy").setup({ end, { expr = true, silent = true }) end, }, - { "numToStr/Comment.nvim" }, + { + "numToStr/Comment.nvim", + config = function() + require("Comment").setup() + end, + }, { "shellRaining/hlchunk.nvim", lazy = true }, - { "akinsho/toggleterm.nvim", version = false, lazy = false }, + { + "akinsho/toggleterm.nvim", + version = false, + lazy = false, + config = function() + require("toggleterm").setup({ + -- size can be a number or function which is passed the current terminal + size = function(term) + if term.direction == "horizontal" then + return 10 + elseif term.direction == "vertical" then + return vim.o.columns * 0.4 + end + end, + open_mapping = [[]], + hide_numbers = true, + autochdir = true, + shade_terminals = false, + start_in_insert = true, + insert_mappings = true, + terminal_mappings = true, + persist_size = true, + persist_mode = true, + direction = "horizontal", + close_on_exit = true, + shell = vim.o.shell, + auto_scroll = true, + float_opts = { + border = "curved", + winblend = 3, + title_pos = "left", + }, + winbar = { + enabled = true, + name_formatter = function(term) -- term: Terminal + return term.name + end, + }, + }) + -- Keybinds + vim.api.nvim_set_keymap( + "n", + "", + ":ToggleTerm", + { noremap = true, desc = " Open Terminal" } + ) + end, + }, { "nvim-neo-tree/neo-tree.nvim", lazy = true, @@ -198,6 +349,14 @@ require("lazy").setup({ "nvim-lua/plenary.nvim", "MunifTanjim/nui.nvim", }, + config = function() + require("neo-tree").setup({ + source_selector = { + winbar = true, + statusline = false, + }, + }) + end, }, { "lewis6991/gitsigns.nvim" }, { @@ -408,50 +567,6 @@ require("lazy").setup({ }, }) -require("catppuccin").setup({ - integrations = { - cmp = true, - diffview = true, - dashboard = true, - gitsigns = true, - nvimtree = true, - neotree = true, - treesitter = true, - markdown = true, - sandwich = true, - which_key = true, - telescope = { enabled = true, style = "nvchad" }, - illuminate = { enabled = true, lsp = true }, - notify = true, - notifier = true, - dap = true, - dap_ui = true, - ts_rainbow2 = true, - rainbow_delimiters = true, - lsp_trouble = true, - noice = true, -- codespell:ignore noice - native_lsp = { - enabled = true, - virtual_text = { - errors = { "italic" }, - hints = { "italic" }, - warnings = { "italic" }, - information = { "italic" }, - ok = { "italic" }, - }, - underlines = { - errors = { "underline" }, - hints = { "underline" }, - warnings = { "underline" }, - information = { "underline" }, - ok = { "underline" }, - }, - inlay_hints = { background = true }, - }, - mini = { enabled = true, indentscope_color = "mauve" }, - }, -}) - -- Apply the default colorscheme local kitty_theme = os.getenv("KITTY_THEME") vim.cmd.colorscheme(kitty_theme or "catppuccin-frappe") @@ -517,48 +632,9 @@ else -- SSH vim.cmd(":TransparentDisable") end - - -- Kitty Bindings - -- if you only want these mappings for toggle term use term://*toggleterm#* instead - vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()") - vim.cmd("let g:kitty_navigator_no_mappings = 1") - - vim.cmd(":nnoremap {Left-Mapping} :KittyNavigateLeft") - vim.cmd(":nnoremap {Down-Mapping} :KittyNavigateDown") - vim.cmd(":nnoremap {Up-Mapping} :KittyNavigateUp") - vim.cmd(":nnoremap {Right-Mapping} :KittyNavigateRight") end end --- ------------------------------- CodeWindow ---------------------------------- -require("codewindow").setup({ - active_in_terminals = false, -- Should the minimap activate for terminal buffers - auto_enable = true, -- Automatically open the minimap when entering a (non-excluded) buffer (accepts a table of filetypes) - exclude_filetypes = { "help" }, -- Choose certain filetypes to not show minimap on - max_minimap_height = nil, -- The maximum height the minimap can take (including borders) - max_lines = nil, -- If auto_enable is true, don't open the minimap for buffers which have more than this many lines. - minimap_width = 10, -- The width of the text part of the minimap - use_lsp = true, -- Use the builtin LSP to show errors and warnings - use_treesitter = true, -- Use nvim-treesitter to highlight the code - use_git = true, -- Show small dots to indicate git additions and deletions - width_multiplier = 4, -- How many characters one dot represents - z_index = 1, -- The z-index the floating window will be on - show_cursor = true, -- Show the cursor position in the minimap - screen_bounds = "background", -- How the visible area is displayed, "lines": lines above and below, "background": background color - window_border = "none", -- The border style of the floating window (accepts all usual options) - relative = "win", -- What will be the minimap be placed relative to, "win": the curre - events = { - "TextChanged", - "InsertLeave", - "DiagnosticChanged", - "FileWritePost", - }, -- Events that update the code window -}) -require("codewindow").apply_default_keybinds() - --- --------------------------------- Comment ----------------------------------- -require("Comment").setup() - -- --------------------------------- Hlchunk ----------------------------------- require("hlchunk").setup({ chunk = { @@ -582,14 +658,6 @@ vim.api.nvim_create_user_command("Q", function() vim.cmd.qall() end, { force = true }) --- Toggle Terminal -vim.api.nvim_set_keymap( - "n", - "", - ":ToggleTerm", - { noremap = true, desc = " Open Terminal" } -) - -- Navigate panels with Alt-direction like kitty vim.api.nvim_set_keymap( "n", @@ -647,42 +715,6 @@ require("trouble").setup({ }, }) --- ------------------------------- ToggleTerm ---------------------------------- -require("toggleterm").setup({ - -- size can be a number or function which is passed the current terminal - size = function(term) - if term.direction == "horizontal" then - return 10 - elseif term.direction == "vertical" then - return vim.o.columns * 0.4 - end - end, - open_mapping = [[]], - hide_numbers = true, - autochdir = true, - shade_terminals = false, - start_in_insert = true, - insert_mappings = true, - terminal_mappings = true, - persist_size = true, - persist_mode = true, - direction = "horizontal", - close_on_exit = true, - shell = vim.o.shell, - auto_scroll = true, - float_opts = { - border = "curved", - winblend = 3, - title_pos = "left", - }, - winbar = { - enabled = true, - name_formatter = function(term) -- term: Terminal - return term.name - end, - }, -}) - -- -------------------------------- Telescope ---------------------------------- require("telescope").setup({ defaults = { @@ -701,11 +733,3 @@ require("telescope").setup({ }, }) require("telescope").load_extension("fzf") - --- -------------------------------- Neo-tree ----------------------------------- -require("neo-tree").setup({ - source_selector = { - winbar = true, - statusline = false, - }, -})