[
  {
    "path": ".config/nvim/ftplugin/markdown.lua",
    "content": "-- Markdown specific settings\nvim.opt.wrap = true -- Wrap text\nvim.opt.breakindent = true -- Match indent on line break\nvim.opt.linebreak = true -- Line break on whole words\n\n-- Allow j/k when navigating wrapped lines\nvim.keymap.set(\"n\", \"j\", \"gj\")\nvim.keymap.set(\"n\", \"k\", \"gk\")\n\n-- Spell check\nvim.opt.spelllang = 'en_us'\nvim.opt.spell = true\n"
  },
  {
    "path": ".config/nvim/init.lua",
    "content": "-- Bootstrap lazy\nlocal lazypath = vim.fn.stdpath(\"data\") .. \"/lazy/lazy.nvim\"\nif not vim.loop.fs_stat(lazypath) then\n  vim.fn.system({\n    \"git\",\n    \"clone\",\n    \"--filter=blob:none\",\n    \"https://github.com/folke/lazy.nvim.git\",\n    \"--branch=stable\", -- latest stable release\n    lazypath,\n  })\nend\nvim.opt.rtp:prepend(lazypath)\n\n-- This has to be set before initializing lazy\nvim.g.mapleader = \" \"\n\n-- Initialize lazy with dynamic loading of anything in the plugins directory\nrequire(\"lazy\").setup(\"plugins\", {\n   change_detection = {\n    enabled = true, -- automatically check for config file changes and reload the ui\n    notify = false, -- turn off notifications whenever plugin changes are made\n  },\n})\n\n-- These modules are not loaded by lazy\nrequire(\"core.options\")\nrequire(\"core.keymaps\")\n"
  },
  {
    "path": ".config/nvim/lazy-lock.json",
    "content": "{\n  \"LuaSnip\": { \"branch\": \"master\", \"commit\": \"1f4ad8bb72bdeb60975e98652636b991a9b7475d\" },\n  \"barbecue\": { \"branch\": \"main\", \"commit\": \"cd7e7da622d68136e13721865b4d919efd6325ed\" },\n  \"bigfile.nvim\": { \"branch\": \"main\", \"commit\": \"33eb067e3d7029ac77e081cfe7c45361887a311a\" },\n  \"cmp-buffer\": { \"branch\": \"main\", \"commit\": \"3022dbc9166796b644a841a02de8dd1cc1d311fa\" },\n  \"cmp-cmdline\": { \"branch\": \"main\", \"commit\": \"8ee981b4a91f536f52add291594e89fb6645e451\" },\n  \"cmp-nvim-lsp\": { \"branch\": \"main\", \"commit\": \"44b16d11215dce86f253ce0c30949813c0a90765\" },\n  \"cmp-path\": { \"branch\": \"main\", \"commit\": \"91ff86cd9c29299a64f968ebb45846c485725f23\" },\n  \"cmp_luasnip\": { \"branch\": \"master\", \"commit\": \"05a9ab28b53f71d1aece421ef32fee2cb857a843\" },\n  \"fidget.nvim\": { \"branch\": \"main\", \"commit\": \"b7027a059710fe1ae5726ef7725c2a6020a3d968\" },\n  \"friendly-snippets\": { \"branch\": \"main\", \"commit\": \"43727c2ff84240e55d4069ec3e6158d74cb534b6\" },\n  \"git-blame.nvim\": { \"branch\": \"master\", \"commit\": \"f07e913b7143f19edd6787229f2d51759b478600\" },\n  \"harpoon\": { \"branch\": \"master\", \"commit\": \"867e212ac153e793f95b316d1731f3ca1894625e\" },\n  \"indent-blankline.nvim\": { \"branch\": \"master\", \"commit\": \"29be0919b91fb59eca9e90690d76014233392bef\" },\n  \"kanagawa.nvim\": { \"branch\": \"master\", \"commit\": \"c19b9023842697ec92caf72cd3599f7dd7be4456\" },\n  \"lazy.nvim\": { \"branch\": \"main\", \"commit\": \"96584866b9c5e998cbae300594d0ccfd0c464627\" },\n  \"lsp-progress.nvim\": { \"branch\": \"main\", \"commit\": \"670cd71586f3464f2e341627ea434498fa0de7d2\" },\n  \"lualine.nvim\": { \"branch\": \"master\", \"commit\": \"2248ef254d0a1488a72041cfb45ca9caada6d994\" },\n  \"mason-lspconfig.nvim\": { \"branch\": \"main\", \"commit\": \"ab640b38ca9fa50d25d2d249b6606b9456b628d5\" },\n  \"mason.nvim\": { \"branch\": \"main\", \"commit\": \"41e75af1f578e55ba050c863587cffde3556ffa6\" },\n  \"neodev.nvim\": { \"branch\": \"main\", \"commit\": \"b2881eeb395d2b268de5fe9b5e201a8f1816beb8\" },\n  \"nvim-autopairs\": { \"branch\": \"master\", \"commit\": \"0f04d78619cce9a5af4f355968040f7d675854a1\" },\n  \"nvim-cmp\": { \"branch\": \"main\", \"commit\": \"0b751f6beef40fd47375eaf53d3057e0bfa317e4\" },\n  \"nvim-dap\": { \"branch\": \"master\", \"commit\": \"e154fdb6d70b3765d71f296e718b29d8b7026a63\" },\n  \"nvim-dap-ui\": { \"branch\": \"master\", \"commit\": \"34160a7ce6072ef332f350ae1d4a6a501daf0159\" },\n  \"nvim-dap-virtual-text\": { \"branch\": \"master\", \"commit\": \"57f1dbd0458dd84a286b27768c142e1567f3ce3b\" },\n  \"nvim-lspconfig\": { \"branch\": \"master\", \"commit\": \"48347089666d5b77d054088aa72e4e0b58026e6e\" },\n  \"nvim-navic\": { \"branch\": \"master\", \"commit\": \"8649f694d3e76ee10c19255dece6411c29206a54\" },\n  \"nvim-surround\": { \"branch\": \"main\", \"commit\": \"703ec63aa798e5e07d309b35e42def34bebe0174\" },\n  \"nvim-tree.lua\": { \"branch\": \"master\", \"commit\": \"80cfeadf179d5cba76f0f502c71dbcff1b515cd8\" },\n  \"nvim-treesitter\": { \"branch\": \"master\", \"commit\": \"8f16c39f5b439bd9540336c4d5da705d180e34b9\" },\n  \"nvim-treesitter-textobjects\": { \"branch\": \"master\", \"commit\": \"dbcd9388e3b119a87c785e10a00d62876077d23d\" },\n  \"nvim-web-devicons\": { \"branch\": \"master\", \"commit\": \"3523d6e6d40ab11fd66c1b2732b3d6b60affa951\" },\n  \"plenary.nvim\": { \"branch\": \"master\", \"commit\": \"50012918b2fc8357b87cff2a7f7f0446e47da174\" },\n  \"quickfixdd\": { \"branch\": \"master\", \"commit\": \"cc1adb7e7e9f4827cd655f6b1c05fadedaa87f45\" },\n  \"telescope-dap.nvim\": { \"branch\": \"master\", \"commit\": \"4e2d5efb92062f0b865fe59b200b5ed7793833bf\" },\n  \"telescope-fzf-native.nvim\": { \"branch\": \"main\", \"commit\": \"6c921ca12321edaa773e324ef64ea301a1d0da62\" },\n  \"telescope.nvim\": { \"branch\": \"master\", \"commit\": \"0c12735d5aff6a48ffd8111bf144dc2ff44e5975\" },\n  \"vim-commentary\": { \"branch\": \"master\", \"commit\": \"e87cd90dc09c2a203e13af9704bd0ef79303d755\" },\n  \"vim-maximizer\": { \"branch\": \"master\", \"commit\": \"2e54952fe91e140a2e69f35f22131219fcd9c5f1\" },\n  \"vim-rest-console\": { \"branch\": \"master\", \"commit\": \"7b407f47185468d1b57a8bd71cdd66c9a99359b2\" },\n  \"vim-tmux-navigator\": { \"branch\": \"master\", \"commit\": \"7db70e08ea03b3e4d91f63713d76134512e28d7e\" }\n}\n"
  },
  {
    "path": ".config/nvim/lua/core/keymaps.lua",
    "content": "-- Set leader key to space\nvim.g.mapleader = \" \"\n\nlocal keymap = vim.keymap\n\n-- General keymaps\nkeymap.set(\"n\", \"<leader>wq\", \":wq<CR>\") -- save and quit\nkeymap.set(\"n\", \"<leader>qq\", \":q!<CR>\") -- quit without saving\nkeymap.set(\"n\", \"<leader>ww\", \":w<CR>\") -- save\nkeymap.set(\"n\", \"gx\", \":!open <c-r><c-a><CR>\") -- open URL under cursor\n\n-- Split window management\nkeymap.set(\"n\", \"<leader>sv\", \"<C-w>v\") -- split window vertically\nkeymap.set(\"n\", \"<leader>sh\", \"<C-w>s\") -- split window horizontally\nkeymap.set(\"n\", \"<leader>se\", \"<C-w>=\") -- make split windows equal width\nkeymap.set(\"n\", \"<leader>sx\", \":close<CR>\") -- close split window\nkeymap.set(\"n\", \"<leader>sj\", \"<C-w>-\") -- make split window height shorter\nkeymap.set(\"n\", \"<leader>sk\", \"<C-w>+\") -- make split windows height taller\nkeymap.set(\"n\", \"<leader>sl\", \"<C-w>>5\") -- make split windows width bigger \nkeymap.set(\"n\", \"<leader>sh\", \"<C-w><5\") -- make split windows width smaller\n\n-- Tab management\nkeymap.set(\"n\", \"<leader>to\", \":tabnew<CR>\") -- open a new tab\nkeymap.set(\"n\", \"<leader>tx\", \":tabclose<CR>\") -- close a tab\nkeymap.set(\"n\", \"<leader>tn\", \":tabn<CR>\") -- next tab\nkeymap.set(\"n\", \"<leader>tp\", \":tabp<CR>\") -- previous tab\n\n-- Diff keymaps\nkeymap.set(\"n\", \"<leader>cc\", \":diffput<CR>\") -- put diff from current to other during diff\nkeymap.set(\"n\", \"<leader>cj\", \":diffget 1<CR>\") -- get diff from left (local) during merge\nkeymap.set(\"n\", \"<leader>ck\", \":diffget 3<CR>\") -- get diff from right (remote) during merge\nkeymap.set(\"n\", \"<leader>cn\", \"]c\") -- next diff hunk\nkeymap.set(\"n\", \"<leader>cp\", \"[c\") -- previous diff hunk\n\n-- Quickfix keymaps\nkeymap.set(\"n\", \"<leader>qo\", \":copen<CR>\") -- open quickfix list\nkeymap.set(\"n\", \"<leader>qf\", \":cfirst<CR>\") -- jump to first quickfix list item\nkeymap.set(\"n\", \"<leader>qn\", \":cnext<CR>\") -- jump to next quickfix list item\nkeymap.set(\"n\", \"<leader>qp\", \":cprev<CR>\") -- jump to prev quickfix list item\nkeymap.set(\"n\", \"<leader>ql\", \":clast<CR>\") -- jump to last quickfix list item\nkeymap.set(\"n\", \"<leader>qc\", \":cclose<CR>\") -- close quickfix list\n\n-- Vim-maximizer\nkeymap.set(\"n\", \"<leader>sm\", \":MaximizerToggle<CR>\") -- toggle maximize tab\n\n-- Nvim-tree\nkeymap.set(\"n\", \"<leader>ee\", \":NvimTreeToggle<CR>\") -- toggle file explorer\nkeymap.set(\"n\", \"<leader>er\", \":NvimTreeFocus<CR>\") -- toggle focus to file explorer\nkeymap.set(\"n\", \"<leader>ef\", \":NvimTreeFindFile<CR>\") -- find file in file explorer\n\n-- Telescope\nkeymap.set('n', '<leader>ff', require('telescope.builtin').find_files, {}) -- fuzzy find files in project\nkeymap.set('n', '<leader>fg', require('telescope.builtin').live_grep, {}) -- grep file contents in project\nkeymap.set('n', '<leader>fb', require('telescope.builtin').buffers, {}) -- fuzzy find open buffers\nkeymap.set('n', '<leader>fh', require('telescope.builtin').help_tags, {}) -- fuzzy find help tags\nkeymap.set('n', '<leader>fs', require('telescope.builtin').current_buffer_fuzzy_find, {}) -- fuzzy find in current file buffer\nkeymap.set('n', '<leader>fo', require('telescope.builtin').lsp_document_symbols, {}) -- fuzzy find LSP/class symbols\nkeymap.set('n', '<leader>fi', require('telescope.builtin').lsp_incoming_calls, {}) -- fuzzy find LSP/incoming calls\n-- keymap.set('n', '<leader>fm', function() require('telescope.builtin').treesitter({default_text=\":method:\"}) end) -- fuzzy find methods in current class\nkeymap.set('n', '<leader>fm', function() require('telescope.builtin').treesitter({symbols={'function', 'method'}}) end) -- fuzzy find methods in current class\nkeymap.set('n', '<leader>ft', function() -- grep file contents in current nvim-tree node\n  local success, node = pcall(function() return require('nvim-tree.lib').get_node_at_cursor() end)\n  if not success or not node then return end;\n  require('telescope.builtin').live_grep({search_dirs = {node.absolute_path}})\nend)\n\n-- Git-blame\nkeymap.set(\"n\", \"<leader>gb\", \":GitBlameToggle<CR>\") -- toggle git blame\n\n-- Harpoon\nkeymap.set(\"n\", \"<leader>ha\", require(\"harpoon.mark\").add_file)\nkeymap.set(\"n\", \"<leader>hh\", require(\"harpoon.ui\").toggle_quick_menu)\nkeymap.set(\"n\", \"<leader>h1\", function() require(\"harpoon.ui\").nav_file(1) end)\nkeymap.set(\"n\", \"<leader>h2\", function() require(\"harpoon.ui\").nav_file(2) end)\nkeymap.set(\"n\", \"<leader>h3\", function() require(\"harpoon.ui\").nav_file(3) end)\nkeymap.set(\"n\", \"<leader>h4\", function() require(\"harpoon.ui\").nav_file(4) end)\nkeymap.set(\"n\", \"<leader>h5\", function() require(\"harpoon.ui\").nav_file(5) end)\nkeymap.set(\"n\", \"<leader>h6\", function() require(\"harpoon.ui\").nav_file(6) end)\nkeymap.set(\"n\", \"<leader>h7\", function() require(\"harpoon.ui\").nav_file(7) end)\nkeymap.set(\"n\", \"<leader>h8\", function() require(\"harpoon.ui\").nav_file(8) end)\nkeymap.set(\"n\", \"<leader>h9\", function() require(\"harpoon.ui\").nav_file(9) end)\n\n-- Vim REST Console\nkeymap.set(\"n\", \"<leader>xr\", \":call VrcQuery()<CR>\") -- Run REST query\n\n-- LSP\nkeymap.set('n', '<leader>gg', '<cmd>lua vim.lsp.buf.hover()<CR>')\nkeymap.set('n', '<leader>gd', '<cmd>lua vim.lsp.buf.definition()<CR>')\nkeymap.set('n', '<leader>gD', '<cmd>lua vim.lsp.buf.declaration()<CR>')\nkeymap.set('n', '<leader>gi', '<cmd>lua vim.lsp.buf.implementation()<CR>')\nkeymap.set('n', '<leader>gt', '<cmd>lua vim.lsp.buf.type_definition()<CR>')\nkeymap.set('n', '<leader>gr', '<cmd>lua vim.lsp.buf.references()<CR>')\nkeymap.set('n', '<leader>gs', '<cmd>lua vim.lsp.buf.signature_help()<CR>')\nkeymap.set('n', '<leader>rr', '<cmd>lua vim.lsp.buf.rename()<CR>')\nkeymap.set('n', '<leader>gf', '<cmd>lua vim.lsp.buf.format({async = true})<CR>')\nkeymap.set('v', '<leader>gf', '<cmd>lua vim.lsp.buf.format({async = true})<CR>')\nkeymap.set('n', '<leader>ga', '<cmd>lua vim.lsp.buf.code_action()<CR>')\nkeymap.set('n', '<leader>gl', '<cmd>lua vim.diagnostic.open_float()<CR>')\nkeymap.set('n', '<leader>gp', '<cmd>lua vim.diagnostic.goto_prev()<CR>')\nkeymap.set('n', '<leader>gn', '<cmd>lua vim.diagnostic.goto_next()<CR>')\nkeymap.set('n', '<leader>tr', '<cmd>lua vim.lsp.buf.document_symbol()<CR>')\nkeymap.set('i', '<C-Space>', '<cmd>lua vim.lsp.buf.completion()<CR>')\n\n-- Debugging\nkeymap.set(\"n\", \"<leader>bb\", \"<cmd>lua require'dap'.toggle_breakpoint()<cr>\")\nkeymap.set(\"n\", \"<leader>bc\", \"<cmd>lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<cr>\")\nkeymap.set(\"n\", \"<leader>bl\", \"<cmd>lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<cr>\")\nkeymap.set(\"n\", '<leader>br', \"<cmd>lua require'dap'.clear_breakpoints()<cr>\")\nkeymap.set(\"n\", '<leader>ba', '<cmd>Telescope dap list_breakpoints<cr>')\nkeymap.set(\"n\", \"<leader>dc\", \"<cmd>lua require'dap'.continue()<cr>\")\nkeymap.set(\"n\", \"<leader>dj\", \"<cmd>lua require'dap'.step_over()<cr>\")\nkeymap.set(\"n\", \"<leader>dk\", \"<cmd>lua require'dap'.step_into()<cr>\")\nkeymap.set(\"n\", \"<leader>do\", \"<cmd>lua require'dap'.step_out()<cr>\")\nkeymap.set(\"n\", '<leader>dd', function() require('dap').disconnect(); require('dapui').close(); end)\nkeymap.set(\"n\", '<leader>dt', function() require('dap').terminate(); require('dapui').close(); end)\nkeymap.set(\"n\", \"<leader>dr\", \"<cmd>lua require'dap'.repl.toggle()<cr>\")\nkeymap.set(\"n\", \"<leader>dl\", \"<cmd>lua require'dap'.run_last()<cr>\")\nkeymap.set(\"n\", '<leader>di', function() require \"dap.ui.widgets\".hover() end)\nkeymap.set(\"n\", '<leader>d?', function() local widgets = require \"dap.ui.widgets\"; widgets.centered_float(widgets.scopes) end)\nkeymap.set(\"n\", '<leader>df', '<cmd>Telescope dap frames<cr>')\nkeymap.set(\"n\", '<leader>dh', '<cmd>Telescope dap commands<cr>')\nkeymap.set(\"n\", '<leader>de', function() require('telescope.builtin').diagnostics({default_text=\":E:\"}) end)\n\n"
  },
  {
    "path": ".config/nvim/lua/core/options.lua",
    "content": "local opt = vim.opt\n\n-- Session Management\nopt.sessionoptions=\"blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions\"\n\n-- Line Numbers\nopt.relativenumber = true\nopt.number = true\n\n-- Tabs & Indentation\nopt.tabstop = 2\nopt.shiftwidth = 2\nopt.expandtab = true\nopt.autoindent = true\nvim.bo.softtabstop = 2\n\n-- Line Wrapping\nopt.wrap = false\n\n-- Search Settings\nopt.ignorecase = true\nopt.smartcase = true\n\n-- Cursor Line\nopt.cursorline = true\n\n-- Appearance\nopt.termguicolors = true\nopt.background = \"dark\"\nopt.signcolumn = \"yes\"\nopt.showmode = false\nvim.diagnostic.config {\n  float = { border = \"rounded\" }, -- add border to diagnostic popups\n}\n\n-- Backspace\nopt.backspace = \"indent,eol,start\"\n\n-- Clipboard\nopt.clipboard:append(\"unnamedplus\")\n\n-- Split Windows\nopt.splitright = true\nopt.splitbelow = true\n\n-- Consider - as part of keyword\nopt.iskeyword:append(\"-\")\n\n-- Disable the mouse while in nvim\nopt.mouse = \"\"\n\n-- Folding\nopt.foldlevel = 20\nopt.foldmethod = \"expr\"\nopt.foldexpr = \"nvim_treesitter#foldexpr()\" -- Utilize Treesitter folds\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/barbecue-nvim.lua",
    "content": "-- Display LSP-based breadcrumbs\nreturn {\n  -- https://github.com/utilyre/barbecue.nvim\n  \"utilyre/barbecue.nvim\",\n  name = \"barbecue\",\n  version = \"*\",\n  dependencies = {\n  -- https://github.com/SmiteshP/nvim-navic\n    \"SmiteshP/nvim-navic\",\n  -- https://github.com/nvim-tree/nvim-web-devicons\n    \"nvim-tree/nvim-web-devicons\", -- optional dependency\n  },\n  opts = {\n    -- configurations go here\n  },\n}\n"
  },
  {
    "path": ".config/nvim/lua/plugins/bigfile-nvim.lua",
    "content": "-- Improve performance of editing big files\nreturn {\n  -- https://github.com/LunarVim/bigfile.nvim\n  'LunarVim/bigfile.nvim',\n  event = 'BufReadPre',\n  opts = {\n    filesize = 2, -- size of the file in MiB, the plugin round file sizes to the closest MiB\n  },\n  config = function (_, opts)\n    require('bigfile').setup(opts)\n  end\n}\n"
  },
  {
    "path": ".config/nvim/lua/plugins/colorscheme.lua",
    "content": "-- Theme/Colorscheme (uncomment section for whichever theme you prefer or use your own)\n-- Kanagawa Theme (Custom Palette)\nreturn {\n  -- https://github.com/rebelot/kanagawa.nvim\n  'rebelot/kanagawa.nvim', -- You can replace this with your favorite colorscheme\n  lazy = false, -- We want the colorscheme to load immediately when starting Neovim\n  priority = 1000, -- Load the colorscheme before other non-lazy-loaded plugins\n  opts = {\n    -- Replace this with your scheme-specific settings or remove to use the defaults\n    -- transparent = true,\n    background = {\n      -- light = \"lotus\",\n      dark = \"wave\", -- \"wave, dragon\"\n    },\n    colors = {\n      palette = {\n        -- Background colors\n        sumiInk0 = \"#161616\", -- modified\n        sumiInk1 = \"#181818\", -- modified\n        sumiInk2 = \"#1a1a1a\", -- modified\n        sumiInk3 = \"#1F1F1F\", -- modified\n        sumiInk4 = \"#2A2A2A\", -- modified\n        sumiInk5 = \"#363636\", -- modified\n        sumiInk6 = \"#545454\", -- modified\n\n        -- Popup and Floats\n        waveBlue1 = \"#322C47\", -- modified\n        waveBlue2 = \"#4c4464\", -- modified\n\n        -- Diff and Git\n        winterGreen = \"#2B3328\",\n        winterYellow = \"#49443C\",\n        winterRed = \"#43242B\",\n        winterBlue = \"#252535\",\n        autumnGreen = \"#76A56A\", -- modified\n        autumnRed = \"#C34043\",\n        autumnYellow = \"#DCA561\",\n\n        -- Diag\n        samuraiRed = \"#E82424\",\n        roninYellow = \"#FF9E3B\",\n        waveAqua1 = \"#7E9CD8\", -- modified\n        dragonBlue = \"#7FB4CA\", -- modified\n\n        -- Foreground and Comments\n        oldWhite = \"#C8C093\",\n        fujiWhite = \"#F9E7C0\", -- modified\n        fujiGray = \"#727169\",\n        oniViolet = \"#BFA3E6\", -- modified\n        oniViolet2 = \"#BCACDB\", -- modified\n        crystalBlue = \"#8CABFF\", -- modified\n        springViolet1 = \"#938AA9\",\n        springViolet2 = \"#9CABCA\",\n        springBlue = \"#7FC4EF\", -- modified\n        waveAqua2 = \"#77BBDD\", -- modified\n\n        springGreen = \"#98BB6C\",\n        boatYellow1 = \"#938056\",\n        boatYellow2 = \"#C0A36E\",\n        carpYellow = \"#FFEE99\", -- modified\n\n        sakuraPink = \"#D27E99\",\n        waveRed = \"#E46876\",\n        peachRed = \"#FF5D62\",\n        surimiOrange = \"#FFAA44\", -- modified\n        katanaGray = \"#717C7C\",\n      },\n    },\n  },\n  config = function(_, opts)\n    require('kanagawa').setup(opts) -- Replace this with your favorite colorscheme\n    vim.cmd(\"colorscheme kanagawa\") -- Replace this with your favorite colorscheme\n\n    -- Custom diff colors\n    vim.cmd([[\n      autocmd VimEnter * hi DiffAdd guifg=#00FF00 guibg=#005500\n      autocmd VimEnter * hi DiffDelete guifg=#FF0000 guibg=#550000\n      autocmd VimEnter * hi DiffChange guifg=#CCCCCC guibg=#555555\n      autocmd VimEnter * hi DiffText guifg=#00FF00 guibg=#005500\n    ]])\n\n    -- Custom border colors\n    vim.cmd([[\n      autocmd ColorScheme * hi NormalFloat guifg=#F9E7C0 guibg=#1F1F1F\n      autocmd ColorScheme * hi FloatBorder guifg=#F9E7C0 guibg=#1F1F1F\n    ]])\n  end\n}\n\n-- Kanagawa Theme (Original)\n-- return {\n--   -- https://github.com/rebelot/kanagawa.nvim\n--   'rebelot/kanagawa.nvim', -- You can replace this with your favorite colorscheme\n--   lazy = false, -- We want the colorscheme to load immediately when starting Neovim\n--   priority = 1000, -- Load the colorscheme before other non-lazy-loaded plugins\n--   opts = {\n--     -- Replace this with your scheme-specific settings or remove to use the defaults\n--     -- transparent = true,\n--     background = {\n--       -- light = \"lotus\",\n--       dark = \"wave\", -- \"wave, dragon\"\n--     },\n--   },\n--   config = function(_, opts)\n--     require('kanagawa').setup(opts) -- Replace this with your favorite colorscheme\n--     vim.cmd(\"colorscheme kanagawa\") -- Replace this with your favorite colorscheme\n--   end\n-- }\n\n-- Tokyo Night Theme\n-- return {\n--   -- https://github.com/folke/tokyonight.nvim\n--   'folke/tokyonight.nvim', -- You can replace this with your favorite colorscheme\n--   lazy = false, -- We want the colorscheme to load immediately when starting Neovim\n--   priority = 1000, -- Load the colorscheme before other non-lazy-loaded plugins\n--   opts = {\n--     -- Replace this with your scheme-specific settings or remove to use the defaults\n--     -- transparent = true,\n--     style = \"night\", -- other variations \"storm, night, moon, day\"\n--   },\n--   config = function(_, opts)\n--     require('tokyonight').setup(opts) -- Replace this with your favorite colorscheme\n--     vim.cmd(\"colorscheme tokyonight\") -- Replace this with your favorite colorscheme\n--   end\n-- }\n\n-- Catppuccin Theme\n-- return {\n--   -- https://github.com/catppuccin/nvim\n--   'catppuccin/nvim',\n--   name = \"catppuccin\", -- name is needed otherwise plugin shows up as \"nvim\" due to github URI\n--   lazy = false, -- We want the colorscheme to load immediately when starting Neovim\n--   priority = 1000, -- Load the colorscheme before other non-lazy-loaded plugins\n--   opts = {\n--   --   -- Replace this with your scheme-specific settings or remove to use the defaults\n--     -- transparent = true,\n--     flavour = \"mocha\", -- \"latte, frappe, macchiato, mocha\"\n--   },\n--   config = function(_, opts)\n--     require('catppuccin').setup(opts) -- Replace this with your favorite colorscheme\n--     vim.cmd(\"colorscheme catppuccin\") -- Replace this with your favorite colorscheme\n--   end\n-- }\n\n-- Sonokai Theme\n-- return {\n--   -- https://github.com/sainnhe/sonokai\n--   'sainnhe/sonokai',\n--   lazy = false, -- We want the colorscheme to load immediately when starting Neovim\n--   priority = 1000, -- Load the colorscheme before other non-lazy-loaded plugins\n--   config = function(_, opts)\n--     vim.g.sonokai_style = \"default\" -- \"default, atlantis, andromeda, shusia, maia, espresso\"\n--     vim.cmd(\"colorscheme sonokai\") -- Replace this with your favorite colorscheme\n--   end\n-- }\n\n-- One Nord Theme\n-- return {\n--   -- https://github.com/rmehri01/onenord.nvim\n--   'rmehri01/onenord.nvim',\n--   lazy = false, -- We want the colorscheme to load immediately when starting Neovim\n--   priority = 1000, -- Load the colorscheme before other non-lazy-loaded plugins\n--   config = function(_, opts)\n--     vim.cmd(\"colorscheme onenord\") -- Replace this with your favorite colorscheme\n--   end\n-- }\n\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/git-blame-nvim.lua",
    "content": "-- Git Blame\nreturn {\n  -- https://github.com/f-person/git-blame.nvim\n  'f-person/git-blame.nvim',\n  event = 'VeryLazy',\n  opts = {\n    enabled = false, -- disable by default, enabled only on keymap\n    date_format = '%m/%d/%y %H:%M:%S', -- more concise date format\n  }\n}\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/harpoon.lua",
    "content": "-- List of favorite files/marks per project\nreturn {\n  -- https://github.com/ThePrimeagen/harpoon\n  'ThePrimeagen/harpoon',\n  branch = 'master',\n  event = 'VeryLazy',\n  dependencies = {\n    -- https://github.com/nvim-lua/plenary.nvim\n    'nvim-lua/plenary.nvim',\n  },\n  opts = {\n    menu = {\n      width = 120\n    }\n  },\n}\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/indent-blankline-nvim.lua",
    "content": "-- Indentation guides\nreturn {\n  -- https://github.com/lukas-reineke/indent-blankline.nvim\n  \"lukas-reineke/indent-blankline.nvim\",\n  event = 'VeryLazy',\n  main = \"ibl\",\n  opts = {\n    enabled = true,\n    indent = {\n      char = '|',\n    },\n  },\n}\n"
  },
  {
    "path": ".config/nvim/lua/plugins/lualine-nvim.lua",
    "content": "-- Status line\nreturn {\n  -- https://github.com/nvim-lualine/lualine.nvim\n  'nvim-lualine/lualine.nvim',\n  dependencies = {\n    -- https://github.com/nvim-tree/nvim-web-devicons\n    'nvim-tree/nvim-web-devicons', -- fancy icons\n    -- https://github.com/linrongbin16/lsp-progress.nvim\n    'linrongbin16/lsp-progress.nvim', -- LSP loading progress\n  },\n  opts = {\n    options = {\n      -- For more themes, see https://github.com/nvim-lualine/lualine.nvim/blob/master/THEMES.md\n      theme = \"codedark\", -- \"auto, tokyonight, catppuccin, codedark, nord\" \n    },\n    sections = {\n      lualine_c = {\n        {\n          -- Customize the filename part of lualine to be parent/filename\n          'filename',\n          file_status = true,      -- Displays file status (readonly status, modified status)\n          newfile_status = false,  -- Display new file status (new file means no write after created)\n          path = 4,                -- 0: Just the filename\n                                   -- 1: Relative path\n                                   -- 2: Absolute path\n                                   -- 3: Absolute path, with tilde as the home directory\n                                   -- 4: Filename and parent dir, with tilde as the home directory\n          symbols = {\n            modified = '[+]',      -- Text to show when the file is modified.\n            readonly = '[-]',      -- Text to show when the file is non-modifiable or readonly.\n          }\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": ".config/nvim/lua/plugins/nvim-autopairs.lua",
    "content": "-- Auto-completion of bracket/paren/quote pairs\nreturn {\n  -- https://github.com/windwp/nvim-autopairs\n  'windwp/nvim-autopairs',\n  event = \"InsertEnter\",\n  opts = {\n    check_ts = true, -- enable treesitter\n    ts_config = {\n      lua = { \"string\" }, -- don't add pairs in lua string treesitter nodes\n      javascript = { \"template_string\" }, -- don't add pairs in javascript template_string\n    }\n  }\n}\n"
  },
  {
    "path": ".config/nvim/lua/plugins/nvim-cmp.lua",
    "content": "-- Auto-completion / Snippets\nreturn {\n  -- https://github.com/hrsh7th/nvim-cmp\n  'hrsh7th/nvim-cmp',\n  event = 'InsertEnter',\n  dependencies = {\n    -- Snippet engine & associated nvim-cmp source\n    -- https://github.com/L3MON4D3/LuaSnip\n    'L3MON4D3/LuaSnip',\n    -- https://github.com/saadparwaiz1/cmp_luasnip\n    'saadparwaiz1/cmp_luasnip',\n\n    -- LSP completion capabilities\n    -- https://github.com/hrsh7th/cmp-nvim-lsp\n    'hrsh7th/cmp-nvim-lsp',\n\n    -- Additional user-friendly snippets\n    -- https://github.com/rafamadriz/friendly-snippets\n    'rafamadriz/friendly-snippets',\n    -- https://github.com/hrsh7th/cmp-buffer\n    'hrsh7th/cmp-buffer',\n    -- https://github.com/hrsh7th/cmp-path\n    'hrsh7th/cmp-path',\n    -- https://github.com/hrsh7th/cmp-cmdline\n    'hrsh7th/cmp-cmdline',\n  },\n  config = function()\n    local cmp = require('cmp')\n    local luasnip = require('luasnip')\n    require('luasnip.loaders.from_vscode').lazy_load()\n    luasnip.config.setup({})\n\n    cmp.setup({\n      snippet = {\n        expand = function(args)\n          luasnip.lsp_expand(args.body)\n        end,\n      },\n      completion = {\n        completeopt = 'menu,menuone,noinsert',\n      },\n      mapping = cmp.mapping.preset.insert {\n        ['<C-j>'] = cmp.mapping.select_next_item(), -- next suggestion\n        ['<C-k>'] = cmp.mapping.select_prev_item(), -- previous suggestion\n        ['<C-b>'] = cmp.mapping.scroll_docs(-4), -- scroll backward\n        ['<C-f>'] = cmp.mapping.scroll_docs(4), -- scroll forward\n        ['<C-Space>'] = cmp.mapping.complete {}, -- show completion suggestions\n        ['<CR>'] = cmp.mapping.confirm {\n          behavior = cmp.ConfirmBehavior.Replace,\n          select = true,\n        },\n\t-- Tab through suggestions or when a snippet is active, tab to the next argument\n        ['<Tab>'] = cmp.mapping(function(fallback)\n          if cmp.visible() then\n            cmp.select_next_item()\n          elseif luasnip.expand_or_locally_jumpable() then\n            luasnip.expand_or_jump()\n          else\n            fallback()\n          end\n        end, { 'i', 's' }),\n\t-- Tab backwards through suggestions or when a snippet is active, tab to the next argument\n        ['<S-Tab>'] = cmp.mapping(function(fallback)\n          if cmp.visible() then\n            cmp.select_prev_item()\n          elseif luasnip.locally_jumpable(-1) then\n            luasnip.jump(-1)\n          else\n            fallback()\n          end\n        end, { 'i', 's' }),\n      },\n      sources = cmp.config.sources({\n        { name = \"nvim_lsp\" }, -- lsp \n        { name = \"luasnip\" }, -- snippets\n        { name = \"buffer\" }, -- text within current buffer\n        { name = \"path\" }, -- file system paths\n      }),\n      window = {\n        -- Add borders to completions popups\n        completion = cmp.config.window.bordered(),\n        documentation = cmp.config.window.bordered(),\n      },\n    })\n  end,\n }\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/nvim-dap-ui.lua",
    "content": "-- Debugging Support\nreturn {\n  -- https://github.com/rcarriga/nvim-dap-ui\n  'rcarriga/nvim-dap-ui',\n  event = 'VeryLazy',\n  dependencies = {\n    -- https://github.com/mfussenegger/nvim-dap\n    'mfussenegger/nvim-dap',\n    -- https://github.com/nvim-neotest/nvim-nio\n    'nvim-neotest/nvim-nio',\n    -- https://github.com/theHamsta/nvim-dap-virtual-text\n    'theHamsta/nvim-dap-virtual-text', -- inline variable text while debugging\n    -- https://github.com/nvim-telescope/telescope-dap.nvim\n    'nvim-telescope/telescope-dap.nvim', -- telescope integration with dap\n  },\n  opts = {\n    controls = {\n      element = \"repl\",\n      enabled = false,\n      icons = {\n        disconnect = \"\",\n        pause = \"\",\n        play = \"\",\n        run_last = \"\",\n        step_back = \"\",\n        step_into = \"\",\n        step_out = \"\",\n        step_over = \"\",\n        terminate = \"\"\n      }\n    },\n    element_mappings = {},\n    expand_lines = true,\n    floating = {\n      border = \"single\",\n      mappings = {\n        close = { \"q\", \"<Esc>\" }\n      }\n    },\n    force_buffers = true,\n    icons = {\n      collapsed = \"\",\n      current_frame = \"\",\n      expanded = \"\"\n    },\n    layouts = {\n      {\n        elements = {\n          {\n            id = \"scopes\",\n            size = 0.50\n          },\n          {\n            id = \"stacks\",\n            size = 0.30\n          },\n          {\n            id = \"watches\",\n            size = 0.10\n          },\n          {\n            id = \"breakpoints\",\n            size = 0.10\n          }\n        },\n        size = 40,\n        position = \"left\", -- Can be \"left\" or \"right\"\n      },\n      {\n        elements = {\n          \"repl\",\n          \"console\",\n        },\n        size = 10,\n        position = \"bottom\", -- Can be \"bottom\" or \"top\"\n      }\n    },\n    mappings = {\n      edit = \"e\",\n      expand = { \"<CR>\", \"<2-LeftMouse>\" },\n      open = \"o\",\n      remove = \"d\",\n      repl = \"r\",\n      toggle = \"t\"\n    },\n    render = {\n      indent = 1,\n      max_value_lines = 100\n    }\n  },\n  config = function (_, opts)\n    local dap = require('dap')\n    require('dapui').setup(opts)\n\n    -- Customize breakpoint signs\n    vim.api.nvim_set_hl(0, \"DapStoppedHl\", { fg = \"#98BB6C\", bg = \"#2A2A2A\", bold = true })\n    vim.api.nvim_set_hl(0, \"DapStoppedLineHl\", { bg = \"#204028\", bold = true })\n    vim.fn.sign_define('DapStopped', { text='', texthl='DapStoppedHl', linehl='DapStoppedLineHl', numhl= '' })\n    vim.fn.sign_define('DapBreakpoint', { text='', texthl='DiagnosticSignError', linehl='', numhl='' })\n    vim.fn.sign_define('DapBreakpointCondition', { text='', texthl='DiagnosticSignWarn', linehl='', numhl='' })\n    vim.fn.sign_define('DapBreakpointRejected', { text='', texthl='DiagnosticSignError', linehl='', numhl= '' })\n    vim.fn.sign_define('DapLogPoint', { text='', texthl='DiagnosticSignInfo', linehl='', numhl= '' })\n\n    dap.listeners.after.event_initialized[\"dapui_config\"] = function()\n      require('dapui').open()\n    end\n\n    dap.listeners.before.event_terminated[\"dapui_config\"] = function()\n      -- Commented to prevent DAP UI from closing when unit tests finish\n      -- require('dapui').close()\n    end\n\n    dap.listeners.before.event_exited[\"dapui_config\"] = function()\n      -- Commented to prevent DAP UI from closing when unit tests finish\n      -- require('dapui').close()\n    end\n\n    -- Add dap configurations based on your language/adapter settings\n    -- https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation\n    -- dap.configurations.xxxxxxxxxx = {\n    --   {\n    --   },\n    -- }\n  end\n}\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/nvim-dap-virtual-text.lua",
    "content": "-- Inline Debug Text\nreturn {\n  -- https://github.com/theHamsta/nvim-dap-virtual-text\n  'theHamsta/nvim-dap-virtual-text',\n  lazy = true,\n  opts = {\n    -- Display debug text as a comment\n    commented = true,\n    -- Customize virtual text\n    display_callback = function(variable, buf, stackframe, node, options)\n      if options.virt_text_pos == 'inline' then\n        return ' = ' .. variable.value\n      else\n        return variable.name .. ' = ' .. variable.value\n      end\n    end,\n  }\n}\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/nvim-lspconfig.lua",
    "content": "-- LSP Support\nreturn {\n  -- LSP Configuration\n  -- https://github.com/neovim/nvim-lspconfig\n  'neovim/nvim-lspconfig',\n  event = 'VeryLazy',\n  dependencies = {\n    -- LSP Management\n    -- https://github.com/williamboman/mason.nvim\n    { 'williamboman/mason.nvim' },\n    -- https://github.com/williamboman/mason-lspconfig.nvim\n    { 'williamboman/mason-lspconfig.nvim' },\n\n    -- Useful status updates for LSP\n    -- https://github.com/j-hui/fidget.nvim\n    { 'j-hui/fidget.nvim', opts = {} },\n\n    -- Additional lua configuration, makes nvim stuff amazing!\n    -- https://github.com/folke/neodev.nvim\n    { 'folke/neodev.nvim', opts = {} },\n  },\n  config = function ()\n    require('mason').setup()\n    require('mason-lspconfig').setup({\n      -- Install these LSPs automatically\n      ensure_installed = {\n        -- 'bashls', -- requires npm to be installed\n        -- 'cssls', -- requires npm to be installed\n        -- 'html', -- requires npm to be installed\n        'lua_ls',\n        -- 'jsonls', -- requires npm to be installed\n        'lemminx',\n        'marksman',\n        'quick_lint_js',\n        -- 'tsserver', -- requires npm to be installed\n        -- 'yamlls', -- requires npm to be installed\n      }\n    })\n\n    local lspconfig = require('lspconfig')\n    local lsp_capabilities = require('cmp_nvim_lsp').default_capabilities()\n    local lsp_attach = function(client, bufnr)\n      -- Create your keybindings here...\n    end\n\n    -- Call setup on each LSP server\n    require('mason-lspconfig').setup_handlers({\n      function(server_name)\n        lspconfig[server_name].setup({\n          on_attach = lsp_attach,\n          capabilities = lsp_capabilities,\n        })\n      end\n    })\n\n    -- Lua LSP settings\n    lspconfig.lua_ls.setup {\n      settings = {\n        Lua = {\n          diagnostics = {\n            -- Get the language server to recognize the `vim` global\n            globals = {'vim'},\n          },\n        },\n      },\n    }\n\n    -- Globally configure all LSP floating preview popups (like hover, signature help, etc)\n    local open_floating_preview = vim.lsp.util.open_floating_preview\n    function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...)\n      opts = opts or {}\n      opts.border = opts.border or \"rounded\" -- Set border to rounded\n      return open_floating_preview(contents, syntax, opts, ...)\n    end\n\n  end\n}\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/nvim-surround.lua",
    "content": "-- Add, Change, Delete Surrounding Chars ([\"''\"])\nreturn {\n  -- https://github.com/kylechui/nvim-surround\n  'kylechui/nvim-surround',\n  version = \"*\", -- Use for stability; omit to use `main` branch for the latest features\n  event = \"VeryLazy\",\n  opts = {}\n}\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/nvim-tree.lua",
    "content": "-- File Explorer / Tree\nreturn {\n  -- https://github.com/nvim-tree/nvim-tree.lua\n  'nvim-tree/nvim-tree.lua',\n  dependencies = {\n    -- https://github.com/nvim-tree/nvim-web-devicons\n    'nvim-tree/nvim-web-devicons', -- Fancy icon support\n  },\n  opts = {\n    actions = {\n      open_file = {\n        window_picker = {\n          enable = false\n        },\n      }\n    },\n  },\n  config = function (_, opts)\n    -- Recommended settings to disable default netrw file explorer\n    vim.g.loaded_netrw = 1\n    vim.g.loaded_netrwPlugin = 1\n    require(\"nvim-tree\").setup(opts)\n  end\n}\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/nvim-treesitter.lua",
    "content": "-- Code Tree Support / Syntax Highlighting\nreturn {\n  -- https://github.com/nvim-treesitter/nvim-treesitter\n  'nvim-treesitter/nvim-treesitter',\n  event = 'VeryLazy',\n  dependencies = {\n    -- https://github.com/nvim-treesitter/nvim-treesitter-textobjects\n    'nvim-treesitter/nvim-treesitter-textobjects',\n  },\n  build = ':TSUpdate',\n  opts = {\n    highlight = {\n      enable = true,\n    },\n    indent = { enable = true },\n    auto_install = true, -- automatically install syntax support when entering new file type buffer\n    ensure_installed = {\n      'lua',\n    },\n  },\n  config = function (_, opts)\n    local configs = require(\"nvim-treesitter.configs\")\n    configs.setup(opts)\n  end\n}\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/quickfixdd.lua",
    "content": "-- Adds delete functionality to quickfix list (keymap dd)\nreturn {\n  -- https://github.com/TamaMcGlinn/quickfixdd\n  'TamaMcGlinn/quickfixdd',\n  event = 'VeryLazy'\n}\n"
  },
  {
    "path": ".config/nvim/lua/plugins/telescope-nvim.lua",
    "content": "-- Fuzzy finder\nreturn {\n  -- https://github.com/nvim-telescope/telescope.nvim\n  'nvim-telescope/telescope.nvim',\n  lazy = true,\n  dependencies = {\n    -- https://github.com/nvim-lua/plenary.nvim\n    { 'nvim-lua/plenary.nvim' },\n    {\n      -- https://github.com/nvim-telescope/telescope-fzf-native.nvim\n      'nvim-telescope/telescope-fzf-native.nvim',\n      build = 'make',\n      cond = function()\n        return vim.fn.executable 'make' == 1\n      end,\n    },\n  },\n  opts = {\n    defaults = {\n      layout_config = {\n        vertical = {\n          width = 0.75\n        }\n      },\n      path_display = {\n        filename_first = {\n          reverse_directories = true\n        }\n      },\n    }\n  }\n}\n"
  },
  {
    "path": ".config/nvim/lua/plugins/vim-commentary.lua",
    "content": "-- Comment/Uncomment Lines of Code\nreturn {\n  -- https://github.com/tpope/vim-commentary\n  'tpope/vim-commentary',\n  event = 'VeryLazy',\n}\n\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/vim-maximizer.lua",
    "content": "-- Maximize and Restore Current Window\nreturn {\n  -- https://github.com/szw/vim-maximizer\n  'szw/vim-maximizer',\n  event = 'VeryLazy',\n}\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/vim-rest-console.lua",
    "content": "-- REST Client\nreturn {\n  -- https://github.com/diepm/vim-rest-console\n  'diepm/vim-rest-console',\n  event = 'VeryLazy',\n  config = function ()\n    -- Turn off the default key binding\n    vim.g.vrc_set_default_mapping = 0\n    -- Set the default response content type to JSON\n    vim.g.vrc_response_default_content_type = 'application/json'\n    -- Set the output buffer name (.json extension to utilize syntax hilighting)\n    vim.g.vrc_output_buffer_name = '_OUTPUT.json'\n    -- Run a format command on the response buffer\n    vim.g.vrc_auto_format_response_patterns = {\n      json = 'jq',\n    }\n  end\n}\n\n"
  },
  {
    "path": ".config/nvim/lua/plugins/vim-tmux-navigator.lua",
    "content": "-- Navigate nvim and tmux windows/panels with vim bindings\nreturn {\n  -- https://github.com/christoomey/vim-tmux-navigator\n  'christoomey/vim-tmux-navigator',\n  -- Only load this plugin if tmux is being used\n  event = function()\n    if vim.fn.exists(\"$TMUX\") == 1 then\n      return \"VeryLazy\"\n    end\n  end,\n}\n\n"
  },
  {
    "path": ".github/workflows/stale.yml",
    "content": "# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.\n#\n# You can adjust the behavior by modifying this file.\n# For more information, see:\n# https://github.com/actions/stale\nname: Mark stale issues and pull requests\n\non:\n  schedule:\n  - cron: '41 14 * * *'\n\njobs:\n  stale:\n\n    runs-on: ubuntu-latest\n    permissions:\n      issues: write\n      pull-requests: write\n\n    steps:\n    - uses: actions/stale@v5\n      with:\n        repo-token: ${{ secrets.GITHUB_TOKEN }}\n        days-before-stale: 60\n        days-before-close: 30\n        stale-issue-message: 'This issue has been inactive for 60 days.  In 30 days it will be closed unless you reply or make a change.'\n        stale-pr-message: 'This PR has been inactive for 60 days.  In 30 days it will be closed unless you add a comment or make a change.'\n        stale-issue-label: 'no-issue-activity'\n        stale-pr-label: 'no-pr-activity'\n"
  },
  {
    "path": ".gitignore",
    "content": "# Compiled Lua sources\nluac.out\n\n# luarocks build files\n*.src.rock\n*.zip\n*.tar.gz\n\n# Object files\n*.o\n*.os\n*.ko\n*.obj\n*.elf\n\n# Precompiled Headers\n*.gch\n*.pch\n\n# Libraries\n*.lib\n*.a\n*.la\n*.lo\n*.def\n*.exp\n\n# Shared objects (inc. Windows DLLs)\n*.dll\n*.so\n*.so.*\n*.dylib\n\n# Executables\n*.exe\n*.out\n*.app\n*.i*86\n*.x86_64\n*.hex\n\n"
  },
  {
    "path": ".mime.types",
    "content": "# Treat markdown files as plain text in Firefox browser\ntext/plain    md markdown\n"
  },
  {
    "path": ".tmux.conf",
    "content": "# Remap default action prefix\nset -g prefix C-a\nunbind C-b\nbind-key C-a send-prefix\n\n# Quick refresh of tmux config\nunbind r\nbind r source-file ~/.tmux.conf\n\n# Truecolor support\nset -g default-terminal 'tmux-256color'\nset-option -sa terminal-overrides \",xterm*:Tc\"\n\n# Session management bindings\nbind 1 switchc -t 'My Session 1' # prefix + 1 switches to a named session\nbind 2 switchc -t 'My Session 2' # prefix + 2 switches to a named session\nbind a switch-client -l # switch to last active session\n\n# Split window bindings\nunbind %\nbind | split-window -h # vertical split\nunbind '\"'\nbind - split-window -v # horizontal split\nbind -r j resize-pane -D 5\nbind -r k resize-pane -U 5\nbind -r l resize-pane -R 5\nbind -r h resize-pane -L 5\nbind -r m resize-pane -Z # maximize/unmaximize pane\nbind-key h select-pane -L # select pane on left\nbind-key j select-pane -D # select pane on bottom\nbind-key k select-pane -U # select pane on top\nbind-key l select-pane -R # select pane on right\n\n# Act like vim\nset-window-option -g mode-keys vi\nbind-key -T copy-mode-vi 'v' send -X begin-selection\nbind-key -T copy-mode-vi 'y' send -X copy-selection\nunbind -T copy-mode-vi MouseDragEnd1Pane\n\n# Mouse support\nset -g mouse on\n\n# List of plugins\nset -g @plugin 'tmux-plugins/tpm' # plugin manager\nset -g @plugin 'tmux-plugins/tmux-sensible' # nice set of standard options\nset -g @plugin 'christoomey/vim-tmux-navigator' # navigate tmux and vim in the same way\nset -g @plugin 'tmux-plugins/tmux-yank' # yank support\nset -g @plugin 'tmux-plugins/tmux-resurrect' # persist tmux sessions after reboot\nset -g @resurrect-capture-pane-contents 'on' # capture pane contents when saving sessions\nset -g @resurrect-strategy-vim 'session' # resurrect nvim session as well as tmux\nset -g @resurrect-strategy-nvim 'session' # resurrect nvim session as well as tmux\nset -g @plugin 'tmux-plugins/tmux-continuum' # auto save sessions every 15 min\nset -g @continuum-restore 'on' # turn on resurrect restore\n\n# TMUX Theme (uncomment section for whichever theme you prefer or use your own)\n# TMUX Power Theme\nset -g @plugin 'wfxr/tmux-power'\nset -g @tmux_power_theme 'gold' # gold, everforest, moon, coral, snow, forest, violet, redwine, #HEXCODE\nset -g @tmux_power_date_format '%m/%d/%Y'\nset -g @tmux_power_time_format '%-I:%M %p'\nset -g @tmux_power_date_icon ' ' # set it to a blank will disable the icon\nset -g @tmux_power_time_icon ' ' # set it to a blank will disable the icon\n\n# Tokyo Night Theme\n# set -g @plugin 'fabioluciano/tmux-tokyo-night'\n# set -g @theme_variation 'night' # storm, night, moon, day\n# set -g @theme_plugin_datetime_format '%m/%d/%Y  %-I:%M %p'\n\n# Catppuccin Theme\n# set -g @plugin 'catppuccin/tmux'\n# set -g @catppuccin_flavour 'mocha' # latte, frappe, macchiato, mocha\n# set -g @catppuccin_window_number_position \"none\"\n# set -g @catppuccin_status_modules_left \"session application\"\n# set -g @catppuccin_status_modules_right \"date_time\"\n# set -g @catppuccin_status_left_separator  \"\"\n# set -g @catppuccin_status_right_separator \"\"\n# set -g @catppuccin_status_right_separIator_inverse \"no\"\n# set -g @catppuccin_status_fill \"all\"\n# set -g @catppuccin_status_connect_separator \"no\"\n# set -g @catppuccin_date_time_text \"%m/%d/%Y  %-I:%M %p\"\n\n# Initialize tmux plugin manager (keep this line at the bottom)\nrun '~/.tmux/plugins/tpm/tpm'\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2023 bcampolo\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Neovim Starter Kit 🕹⚡🤖 #\n\nThis is my personalized Neovim Starter Kit.  IMO it is a very well structured, clean configuration for getting started with Neovim.  It uses the [lazy.nvim](https://github.com/folke/lazy.nvim) package manager, which allows plugins to be added simply by dropping a plugin spec file into your plugins folder.  Each plugin file in my configuration is well commented and you can remove any plugin file that you don't need or want.  A lot of Neovim users recommend kickstart.nvim, which I agree is a great resource due to its simplicity, but I believe this Starter Kit directory structure is much easier to maintain in the long run.\n\n> **DISCLAIMER:** \n> These configurations are based on my personal dev setup and may not be right for everyone.\n> I take no responsibility for the endless hours of Neovim configuration you are about to embark on and the unhealthy bond that you will form with your editor.\n> Proceed at your own risk!\n\n********************************************************************************\n\n## YouTube Guide ##\n[YouTube Guide](https://www.youtube.com/watch?v=33NLeHvFKxU) for this Starter Kit\n\n********************************************************************************\n\n## Prerequisites ##\n- [True Color Terminal](https://gist.github.com/kurahaupo/6ce0eaefe5e730841f03cb82b061daa2#now-supporting-true-color) - Make Neovim look pretty\n- [Neovim](https://neovim.io/) - Version 0.9.1 or later\n- [Nerd Font](https://www.nerdfonts.com/) - Needed to see nice icons in Neovim\n- [ripgrep](https://github.com/BurntSushi/ripgrep) - Needed for Telescope Fuzzy Finder\n- [xclip](https://linuxconfig.org/how-to-use-xclip-on-linux) - Needed for system clipboard support\n- [npm/node](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) - Needed for some LSP servers (see commented lines in [nvim-lspconfig.lua](.config/nvim/lua/plugins/nvim-lspconfig.lua))\n\n## Optional ##\n- **TMUX**\n    - TMUX is a way to organize multiple terminal sessions, windows and panels and works very nicely in conjunction with Neovim.\n    - I've included my TMUX configuration file in this repo as well [.tmux.conf](.tmux.conf)\n- **SHELL SETTINGS**\n    - This will set your terminal to use vim motions.  You can put it in your ~/.bashrc or similar file:\n        `set -o vi`\n\n********************************************************************************\n\n> **NOTE:** \n> I do all of my development on a Debian/Ubuntu based Linux distro, so while most of this README will still work on other operating systems, it is geared towards my own dev environment.\n> If you are using a Mac, your mileage may vary (you Kool-Aid-drinking, hipster Apple fanboi).\n> If you are using Windows, I'll see you in Hell!\n\n********************************************************************************\n\n## Setting up Neovim using this Starter Kit ##\n\nAfter installing all of the prerequisites, you can start Neovim by running `nvim` to make sure it works.  This will be the ugly vanilla configuration before adding any themes/plugins.  If you are new to vim/nvim and got yourself trapped, you can quit with `:q`\n\n### Instructions\n- If you are **NOT** starting from scratch and want to replace your current Neovim configuration, make a backup first:\n\n    ```sh\n    # Backup your existing Neovim configuration\n    mv ~/.config/nvim{,.bak}\n\n    # Backup your existing Neovim cache/state (optional but recommended)\n    mv ~/.local/share/nvim{,.bak}\n    mv ~/.local/state/nvim{,.bak}\n    mv ~/.cache/nvim{,.bak}\n    ```\n\n- Clone the Starter Kit (if you didn't make a backup, this will replace your existing Neovim config)\n\n    ```sh\n    # Make git subdirectory in your home directory\n    mkdir ~/git\n    cd ~/git\n    # Clone Starter Kit into your git directory\n    git clone https://github.com/bcampolo/nvim-starter-kit\n    # Make the Neovim configuration directory\n    mkdir -p ~/.config/nvim\n    # Copy the Starter Kit Neovim configuration to your Neovim configuration\n    cp -r ~/git/nvim-starter-kit/.config/nvim/* ~/.config/nvim/\n    ```\n\n- Start Neovim 🚀\n\n    ```sh\n    nvim\n    ```\n\n- Once Neovim is started, you may see a number of messages from Lazy, Mason and Treesitter installing plugins, LSP servers, and syntax highlighting.  You may see some initial errors.  There may be plugins that are still installing.  Press enter if instructed to.  Wait a bit for everything to finish installing.  Press q to close the Lazy UI.  Once everything is done installing, quit and restart Neovim one more time.\n\n- Now everything should be setup, but it is possible that some plugins are not working correctly.  Run `:checkhealth` from within Neovim and investigate any errors that you encounter.\n\n## Starter Kit Structure ##\n```sh\n├── .config\n│   └── nvim\n│       ├── ftplugin                                \n│       │   ├── markdown.lua                    # Add files here in the form filetype.lua\n│       │   └── ...                             # to change options based on file type (not extension)\n│       ├── lua\n│       │   ├── core\n│       │   │   ├── keymaps.lua                 # This configures all of your key bindings\n│       │   │   └── options.lua                 # This configures all of your global Neovim options\n│       │   └── plugins\n│       │       ├── autopairs.lua               # Plugins can be added / removed from Neovim by\n│       │       ├── ...                         # adding / removing plugin files to this directory\n│       │       └── vim-tmux-navigator.lua\n│       ├── init.lua                            # This is the main Neovim configuration file\n│       └── lazy-lock.json                      # This locks your plugins to specific versions/commits\n├── .mime.types                                 # Fixes a Linux/Firefox issue to view local markdown (optional)\n└── .tmux.conf                                  # This is my tmux configuration (optional)\n```\n********************************************************************************\n\n## Additional Resources ##\n- [My Neovim YouTube Playlist](https://youtube.com/playlist?list=PLD3V7KEd2M-tUghtES9iyl_ERa7sc1-HF&si=sLuFUeU_IjGr0S2I) 🔥🔥🔥\n\n## Suggestions / Pull Requests ##\nIf you run into any issues or have any suggestions for plugins that you feel should be part of the Starter Kit, open a PR that includes the updates and I'll review/merge it as soon as I can.\n\n## Starter Kit Variants ##\n- [Neovim Starter Kit](https://github.com/bcampolo/nvim-starter-kit)\n- [Neovim Starter Kit for Python](https://github.com/bcampolo/nvim-starter-kit/blob/python/README.md#neovim-starter-kit-for-python-)\n- [Neovim Starter Kit for Java](https://github.com/bcampolo/nvim-starter-kit/blob/java/README.md#neovim-starter-kit-for-java-)\n- [Neovim Starter Kit with Games](https://github.com/bcampolo/nvim-starter-kit/blob/games/README.md#neovim-starter-kit-with-games-)\n\n"
  }
]