From 5f152cfb5994a1eb626afe55a66bf8db0e0efa0e Mon Sep 17 00:00:00 2001 From: ajet Date: Mon, 4 Aug 2025 02:23:15 -0900 Subject: [PATCH] nvim kickstart --- .../after/plugin/colors.lua | 0 .../after/plugin/conjure.lua | 0 .../{nvim => nvim.bak}/after/plugin/git.lua | 0 .../after/plugin/harpoon.lua | 0 .../{nvim => nvim.bak}/after/plugin/hop.lua | 0 .config/nvim.bak/after/plugin/lsp.lua | 97 ++ .../after/plugin/lualine.lua | 0 .../after/plugin/telescope.lua | 0 .../after/plugin/transparent.lua | 0 .../{nvim => nvim.bak}/after/plugin/tree.lua | 0 .../after/plugin/trouble.lua | 0 .../after/plugin/undotree.lua | 0 .../after/plugin/zenmode.lua | 0 .../after/queries/lua/highlights.scm | 0 .config/nvim.bak/init.lua | 1 + .config/{nvim => nvim.bak}/lua/ajet/init.lua | 0 .../{nvim => nvim.bak}/lua/ajet/packer.lua | 66 +- .config/{nvim => nvim.bak}/lua/ajet/remap.lua | 0 .../{nvim => nvim.bak}/lua/ajet/rusttools.lua | 0 .config/{nvim => nvim.bak}/lua/ajet/set.lua | 0 .../{nvim => nvim.bak}/lua/ajet/telescope.lua | 0 .../lua/ajet/treesitter.lua | 0 .config/nvim.bak/plugin/packer_compiled.lua | 265 +++++ .config/nvim.bak/undodir/%etc%resolv.conf | Bin 0 -> 1364 bytes .config/nvim.bak/undodir/%etc%ssh%sshd_config | Bin 0 -> 4980 bytes .../undodir/%home%tyjdor%.ssh%authorized_keys | Bin 0 -> 2449 bytes .config/nvim.bak/undodir/%root%.bashrc | Bin 0 -> 1454 bytes .../%root%.config%nvim%after%plugin%lsp.lua | Bin 0 -> 27496 bytes .../%root%.config%nvim%lua%ajet%packer.lua | Bin 0 -> 17106 bytes .../undodir/%root%.ssh%authorized_keys | Bin 0 -> 11269 bytes .../undodir/%root%protodash%README.md | Bin 0 -> 3075 bytes .../undodir/%root%repos%datastar%README.md | Bin 0 -> 4590 bytes .../undodir/%root%repos%datastar%deps.edn | Bin 0 -> 39269 bytes ...datastar%resources%public%hello-world.html | Bin 0 -> 6894 bytes ...repos%datastar%resources%public%index.html | Bin 0 -> 17031 bytes .../%root%repos%datastar%src%dev%user.clj | Bin 0 -> 11356 bytes ...t%repos%datastar%src%main%example%core.clj | Bin 0 -> 117580 bytes ...repos%datastar%src%main%example%server.clj | Bin 0 -> 7159 bytes ...%repos%datastar%src%main%example%utils.clj | Bin 0 -> 88295 bytes .../undodir/%root%repos%dstar%app%project.clj | Bin 0 -> 673 bytes .../%root%repos%dstar%app%src%app%core.clj | Bin 0 -> 5424 bytes .../%root%repos%dstar-explore%deps.edn | Bin 0 -> 12769 bytes .../%root%repos%dstar-explore%dev%user.clj | Bin 0 -> 18291 bytes .../%root%repos%dstar-explore%src%app.clj | Bin 0 -> 2647 bytes .../undodir/%root%repos%protodash%README.md | Bin 0 -> 19527 bytes .../undodir/%root%repos%protodash%deps.edn | Bin 0 -> 579 bytes .../%root%repos%protodash%proj%.nrepl-port | Bin 0 -> 1073 bytes .../%root%repos%protodash%proj%deps.edn | Bin 0 -> 49261 bytes .../%root%repos%protodash%proj%dev%user.clj | Bin 0 -> 1822 bytes .../%root%repos%protodash%proj%script%repl | Bin 0 -> 2305 bytes .../%root%repos%protodash%proj%scripts%repl | Bin 0 -> 579 bytes .../%root%repos%protodash%proj%src%server.clj | Bin 0 -> 50737 bytes .../%root%repos%protodash%proj%src%temp.clj | Bin 0 -> 34315 bytes .../%root%repos%protodash%proj%src%view.clj | Bin 0 -> 13680 bytes .../%root%repos%protodash%proj%temp.ts | Bin 0 -> 2711 bytes .../undodir/%root%repos%report%.gitignore | Bin 0 -> 1138 bytes .../undodir/%root%repos%report%app.js | Bin 0 -> 201814 bytes .../undodir/%root%repos%report%index.html | Bin 0 -> 10429 bytes .../undodir/%root%repos%report%package.json | Bin 0 -> 1261 bytes .../undodir/%root%repos%samb-meme%bb.edn | Bin 0 -> 2008 bytes ...resources%public%change-my-mind%index.html | Bin 0 -> 4600 bytes .../undodir/%root%repos%samb-meme%server.clj | Bin 0 -> 597 bytes .config/nvim/LICENSE.md | 19 + .config/nvim/README.md | 241 ++++ .config/nvim/after/plugin/lsp.lua | 40 - .config/nvim/doc/kickstart.txt | 24 + .config/nvim/doc/tags | 3 + .config/nvim/init.lua | 1030 ++++++++++++++++- .config/nvim/lazy-lock.json | 25 + .config/nvim/lua/custom/plugins/init.lua | 5 + .config/nvim/lua/kickstart/health.lua | 52 + .../nvim/lua/kickstart/plugins/autopairs.lua | 8 + .config/nvim/lua/kickstart/plugins/debug.lua | 148 +++ .../nvim/lua/kickstart/plugins/gitsigns.lua | 61 + .../lua/kickstart/plugins/indent_line.lua | 9 + .config/nvim/lua/kickstart/plugins/lint.lua | 60 + .../nvim/lua/kickstart/plugins/neo-tree.lua | 25 + 77 files changed, 2078 insertions(+), 101 deletions(-) rename .config/{nvim => nvim.bak}/after/plugin/colors.lua (100%) rename .config/{nvim => nvim.bak}/after/plugin/conjure.lua (100%) rename .config/{nvim => nvim.bak}/after/plugin/git.lua (100%) rename .config/{nvim => nvim.bak}/after/plugin/harpoon.lua (100%) rename .config/{nvim => nvim.bak}/after/plugin/hop.lua (100%) create mode 100644 .config/nvim.bak/after/plugin/lsp.lua rename .config/{nvim => nvim.bak}/after/plugin/lualine.lua (100%) rename .config/{nvim => nvim.bak}/after/plugin/telescope.lua (100%) rename .config/{nvim => nvim.bak}/after/plugin/transparent.lua (100%) rename .config/{nvim => nvim.bak}/after/plugin/tree.lua (100%) rename .config/{nvim => nvim.bak}/after/plugin/trouble.lua (100%) rename .config/{nvim => nvim.bak}/after/plugin/undotree.lua (100%) rename .config/{nvim => nvim.bak}/after/plugin/zenmode.lua (100%) rename .config/{nvim => nvim.bak}/after/queries/lua/highlights.scm (100%) create mode 100644 .config/nvim.bak/init.lua rename .config/{nvim => nvim.bak}/lua/ajet/init.lua (100%) rename .config/{nvim => nvim.bak}/lua/ajet/packer.lua (53%) rename .config/{nvim => nvim.bak}/lua/ajet/remap.lua (100%) rename .config/{nvim => nvim.bak}/lua/ajet/rusttools.lua (100%) rename .config/{nvim => nvim.bak}/lua/ajet/set.lua (100%) rename .config/{nvim => nvim.bak}/lua/ajet/telescope.lua (100%) rename .config/{nvim => nvim.bak}/lua/ajet/treesitter.lua (100%) create mode 100644 .config/nvim.bak/plugin/packer_compiled.lua create mode 100644 .config/nvim.bak/undodir/%etc%resolv.conf create mode 100644 .config/nvim.bak/undodir/%etc%ssh%sshd_config create mode 100644 .config/nvim.bak/undodir/%home%tyjdor%.ssh%authorized_keys create mode 100644 .config/nvim.bak/undodir/%root%.bashrc create mode 100644 .config/nvim.bak/undodir/%root%.config%nvim%after%plugin%lsp.lua create mode 100644 .config/nvim.bak/undodir/%root%.config%nvim%lua%ajet%packer.lua create mode 100644 .config/nvim.bak/undodir/%root%.ssh%authorized_keys create mode 100644 .config/nvim.bak/undodir/%root%protodash%README.md create mode 100644 .config/nvim.bak/undodir/%root%repos%datastar%README.md create mode 100644 .config/nvim.bak/undodir/%root%repos%datastar%deps.edn create mode 100644 .config/nvim.bak/undodir/%root%repos%datastar%resources%public%hello-world.html create mode 100644 .config/nvim.bak/undodir/%root%repos%datastar%resources%public%index.html create mode 100644 .config/nvim.bak/undodir/%root%repos%datastar%src%dev%user.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%datastar%src%main%example%core.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%datastar%src%main%example%server.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%datastar%src%main%example%utils.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%dstar%app%project.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%dstar%app%src%app%core.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%dstar-explore%deps.edn create mode 100644 .config/nvim.bak/undodir/%root%repos%dstar-explore%dev%user.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%dstar-explore%src%app.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%README.md create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%deps.edn create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%proj%.nrepl-port create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%proj%deps.edn create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%proj%dev%user.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%proj%script%repl create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%proj%scripts%repl create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%proj%src%server.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%proj%src%temp.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%proj%src%view.clj create mode 100644 .config/nvim.bak/undodir/%root%repos%protodash%proj%temp.ts create mode 100644 .config/nvim.bak/undodir/%root%repos%report%.gitignore create mode 100644 .config/nvim.bak/undodir/%root%repos%report%app.js create mode 100644 .config/nvim.bak/undodir/%root%repos%report%index.html create mode 100644 .config/nvim.bak/undodir/%root%repos%report%package.json create mode 100644 .config/nvim.bak/undodir/%root%repos%samb-meme%bb.edn create mode 100644 .config/nvim.bak/undodir/%root%repos%samb-meme%resources%public%change-my-mind%index.html create mode 100644 .config/nvim.bak/undodir/%root%repos%samb-meme%server.clj create mode 100644 .config/nvim/LICENSE.md create mode 100644 .config/nvim/README.md delete mode 100644 .config/nvim/after/plugin/lsp.lua create mode 100644 .config/nvim/doc/kickstart.txt create mode 100644 .config/nvim/doc/tags create mode 100644 .config/nvim/lazy-lock.json create mode 100644 .config/nvim/lua/custom/plugins/init.lua create mode 100644 .config/nvim/lua/kickstart/health.lua create mode 100644 .config/nvim/lua/kickstart/plugins/autopairs.lua create mode 100644 .config/nvim/lua/kickstart/plugins/debug.lua create mode 100644 .config/nvim/lua/kickstart/plugins/gitsigns.lua create mode 100644 .config/nvim/lua/kickstart/plugins/indent_line.lua create mode 100644 .config/nvim/lua/kickstart/plugins/lint.lua create mode 100644 .config/nvim/lua/kickstart/plugins/neo-tree.lua diff --git a/.config/nvim/after/plugin/colors.lua b/.config/nvim.bak/after/plugin/colors.lua similarity index 100% rename from .config/nvim/after/plugin/colors.lua rename to .config/nvim.bak/after/plugin/colors.lua diff --git a/.config/nvim/after/plugin/conjure.lua b/.config/nvim.bak/after/plugin/conjure.lua similarity index 100% rename from .config/nvim/after/plugin/conjure.lua rename to .config/nvim.bak/after/plugin/conjure.lua diff --git a/.config/nvim/after/plugin/git.lua b/.config/nvim.bak/after/plugin/git.lua similarity index 100% rename from .config/nvim/after/plugin/git.lua rename to .config/nvim.bak/after/plugin/git.lua diff --git a/.config/nvim/after/plugin/harpoon.lua b/.config/nvim.bak/after/plugin/harpoon.lua similarity index 100% rename from .config/nvim/after/plugin/harpoon.lua rename to .config/nvim.bak/after/plugin/harpoon.lua diff --git a/.config/nvim/after/plugin/hop.lua b/.config/nvim.bak/after/plugin/hop.lua similarity index 100% rename from .config/nvim/after/plugin/hop.lua rename to .config/nvim.bak/after/plugin/hop.lua diff --git a/.config/nvim.bak/after/plugin/lsp.lua b/.config/nvim.bak/after/plugin/lsp.lua new file mode 100644 index 0000000..673eb2f --- /dev/null +++ b/.config/nvim.bak/after/plugin/lsp.lua @@ -0,0 +1,97 @@ +require("mason").setup({ + ui = { + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗" + } + } +}) + +local lspconfig_defaults = require('lspconfig').util.default_config +lspconfig_defaults.capabilities = vim.tbl_deep_extend( + 'force', + lspconfig_defaults.capabilities, + require('cmp_nvim_lsp').default_capabilities() +) + + +vim.api.nvim_create_autocmd('LspAttach', { + desc = 'LSP actions', + callback = function(event) + local opts = {buffer = event.buf} + + vim.keymap.set('n', 'K', 'lua vim.lsp.buf.hover()', opts) + vim.keymap.set('n', 'gd', 'lua vim.lsp.buf.definition()', opts) + vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) + vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) + vim.keymap.set('n', 'go', 'lua vim.lsp.buf.type_definition()', opts) + vim.keymap.set('n', 'gr', 'lua vim.lsp.buf.references()', opts) + vim.keymap.set('n', 'gs', 'lua vim.lsp.buf.signature_help()', opts) + vim.keymap.set('n', '', 'lua vim.lsp.buf.rename()', opts) + vim.keymap.set({'n', 'x'}, '', 'lua vim.lsp.buf.format({async = true})', opts) + vim.keymap.set('n', '', 'lua vim.lsp.buf.code_action()', opts) + end, +}) + +-- local lsp = require('lsp-zero').preset({ +-- name = 'minimal', +-- set_lsp_keymaps = true, +-- manage_nvim_cmp = true, +-- suggest_lsp_servers = false, +-- }) +-- lsp.on_attach(function(client, bufnr) +-- local opts = { buffer = bufnr, remap = false } +-- +-- -- if client.name == "eslint" then +-- -- vim.cmd.LspStop('eslint') +-- -- return +-- -- end +-- +-- vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) +-- vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) +-- --vim.keymap.set("n", "fs", vim.lsp.buf.workspace_symbol, opts) +-- vim.keymap.set("n", "vd", vim.diagnostic.open_float, opts) +-- vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts) +-- vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) +-- vim.keymap.set("n", "ca", vim.lsp.buf.code_action, opts) +-- vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) +-- vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) +-- vim.keymap.set("i", "", vim.lsp.buf.signature_help, opts) +-- end) +-- +-- local cmp = require('cmp') +-- local cmp_select = { behavior = cmp.SelectBehavior.Select } +-- lsp.setup_nvim_cmp({ +-- mapping = cmp.mapping.preset.insert({ +-- [''] = cmp.mapping.complete(), +-- [''] = cmp.mapping.scroll_docs(-4), +-- [''] = cmp.mapping.scroll_docs(4), +-- [''] = cmp.mapping.select_prev_item(cmp_select), +-- [''] = cmp.mapping.select_next_item(cmp_select), +-- [''] = cmp.mapping.confirm({ select = true }), +-- }), +-- }) +-- +-- local cmp = require('cmp') +-- +-- cmp.setup({ +-- sources = { +-- {name = 'nvim_lsp'}, +-- }, +-- snippet = { +-- expand = function(args) +-- vim.snippet.expand(args.body) +-- end, +-- }, +-- mapping = cmp.mapping.preset.insert({ +-- [''] = cmp.mapping.complete(), +-- [''] = cmp.mapping.scroll_docs(-4), +-- [''] = cmp.mapping.scroll_docs(4), +-- [''] = cmp.mapping.select_prev_item(cmp_select), +-- [''] = cmp.mapping.select_next_item(cmp_select), +-- [''] = cmp.mapping.confirm({ select = true }), +-- }), +-- }) +-- +-- lsp.setup() diff --git a/.config/nvim/after/plugin/lualine.lua b/.config/nvim.bak/after/plugin/lualine.lua similarity index 100% rename from .config/nvim/after/plugin/lualine.lua rename to .config/nvim.bak/after/plugin/lualine.lua diff --git a/.config/nvim/after/plugin/telescope.lua b/.config/nvim.bak/after/plugin/telescope.lua similarity index 100% rename from .config/nvim/after/plugin/telescope.lua rename to .config/nvim.bak/after/plugin/telescope.lua diff --git a/.config/nvim/after/plugin/transparent.lua b/.config/nvim.bak/after/plugin/transparent.lua similarity index 100% rename from .config/nvim/after/plugin/transparent.lua rename to .config/nvim.bak/after/plugin/transparent.lua diff --git a/.config/nvim/after/plugin/tree.lua b/.config/nvim.bak/after/plugin/tree.lua similarity index 100% rename from .config/nvim/after/plugin/tree.lua rename to .config/nvim.bak/after/plugin/tree.lua diff --git a/.config/nvim/after/plugin/trouble.lua b/.config/nvim.bak/after/plugin/trouble.lua similarity index 100% rename from .config/nvim/after/plugin/trouble.lua rename to .config/nvim.bak/after/plugin/trouble.lua diff --git a/.config/nvim/after/plugin/undotree.lua b/.config/nvim.bak/after/plugin/undotree.lua similarity index 100% rename from .config/nvim/after/plugin/undotree.lua rename to .config/nvim.bak/after/plugin/undotree.lua diff --git a/.config/nvim/after/plugin/zenmode.lua b/.config/nvim.bak/after/plugin/zenmode.lua similarity index 100% rename from .config/nvim/after/plugin/zenmode.lua rename to .config/nvim.bak/after/plugin/zenmode.lua diff --git a/.config/nvim/after/queries/lua/highlights.scm b/.config/nvim.bak/after/queries/lua/highlights.scm similarity index 100% rename from .config/nvim/after/queries/lua/highlights.scm rename to .config/nvim.bak/after/queries/lua/highlights.scm diff --git a/.config/nvim.bak/init.lua b/.config/nvim.bak/init.lua new file mode 100644 index 0000000..479b466 --- /dev/null +++ b/.config/nvim.bak/init.lua @@ -0,0 +1 @@ +require("ajet") diff --git a/.config/nvim/lua/ajet/init.lua b/.config/nvim.bak/lua/ajet/init.lua similarity index 100% rename from .config/nvim/lua/ajet/init.lua rename to .config/nvim.bak/lua/ajet/init.lua diff --git a/.config/nvim/lua/ajet/packer.lua b/.config/nvim.bak/lua/ajet/packer.lua similarity index 53% rename from .config/nvim/lua/ajet/packer.lua rename to .config/nvim.bak/lua/ajet/packer.lua index 584f2e4..66b7069 100755 --- a/.config/nvim/lua/ajet/packer.lua +++ b/.config/nvim.bak/lua/ajet/packer.lua @@ -2,6 +2,12 @@ vim.cmd([[packadd packer.nvim]]) return require('packer').startup(function(use) use 'wbthomason/packer.nvim' + + use({"williamboman/mason.nvim"}) + use({'neovim/nvim-lspconfig'}) + use({'hrsh7th/nvim-cmp'}) + use({'hrsh7th/cmp-nvim-lsp'}) + use 'nvim-lua/plenary.nvim' use('nvim-telescope/telescope.nvim', { tag = '0.1.0', @@ -14,27 +20,6 @@ return require('packer').startup(function(use) use('theprimeagen/harpoon') use('mbbill/undotree') use('tpope/vim-surround') - use({ - 'VonHeikemen/lsp-zero.nvim', - requires = { - -- LSP Support - { 'neovim/nvim-lspconfig' }, - { 'williamboman/mason.nvim' }, - { 'williamboman/mason-lspconfig.nvim' }, - - -- Autocompletion - { 'hrsh7th/nvim-cmp' }, - { 'hrsh7th/cmp-buffer' }, - { 'hrsh7th/cmp-path' }, - { 'saadparwaiz1/cmp_luasnip' }, - { 'hrsh7th/cmp-nvim-lsp' }, - { 'hrsh7th/cmp-nvim-lua' }, - - -- Snippets - { 'L3MON4D3/LuaSnip' }, - { 'rafamadriz/friendly-snippets' }, - } - }) use("folke/zen-mode.nvim") use({ 'phaazon/hop.nvim', @@ -78,48 +63,9 @@ return require('packer').startup(function(use) }) use('lewis6991/gitsigns.nvim') use('dstein64/vim-startuptime') - use('github/copilot.vim') - - use { - "rest-nvim/rest.nvim", - requires = { "nvim-lua/plenary.nvim" }, - } -- clojure things use({ 'tpope/vim-sexp-mappings-for-regular-people', requires = { 'guns/vim-sexp' } }) use('Olical/conjure') use('PaterJason/cmp-conjure') - use({ - 'HiPhish/nvim-ts-rainbow2', - config = function() - require('nvim-treesitter.configs').setup { - rainbow = { - enable = true, - query = 'rainbow-parens', - strategy = require('ts-rainbow').strategy.global, - hlgroups = { - 'TSRainbowGreen', - 'TSRainbowBlue', - 'TSRainbowCyan', - 'TSRainbowYellow', - 'TSRainbowOrange', - 'TSRainbowViolet', - }, - } - } - end - }) - - -- use('nvim-treesitter/playground') - -- use('EdenEast/nightfox.nvim') - -- use('mattn/emmet-vim') - -- use('dcampos/cmp-emmet-vim') - -- use('evanleck/vim-svelte', - -- { branch = 'main' }, - -- { - -- requires = { - -- { 'othree/html5.vim' }, - -- { 'pangloss/vim-javascript' } - -- } - -- }) end) diff --git a/.config/nvim/lua/ajet/remap.lua b/.config/nvim.bak/lua/ajet/remap.lua similarity index 100% rename from .config/nvim/lua/ajet/remap.lua rename to .config/nvim.bak/lua/ajet/remap.lua diff --git a/.config/nvim/lua/ajet/rusttools.lua b/.config/nvim.bak/lua/ajet/rusttools.lua similarity index 100% rename from .config/nvim/lua/ajet/rusttools.lua rename to .config/nvim.bak/lua/ajet/rusttools.lua diff --git a/.config/nvim/lua/ajet/set.lua b/.config/nvim.bak/lua/ajet/set.lua similarity index 100% rename from .config/nvim/lua/ajet/set.lua rename to .config/nvim.bak/lua/ajet/set.lua diff --git a/.config/nvim/lua/ajet/telescope.lua b/.config/nvim.bak/lua/ajet/telescope.lua similarity index 100% rename from .config/nvim/lua/ajet/telescope.lua rename to .config/nvim.bak/lua/ajet/telescope.lua diff --git a/.config/nvim/lua/ajet/treesitter.lua b/.config/nvim.bak/lua/ajet/treesitter.lua similarity index 100% rename from .config/nvim/lua/ajet/treesitter.lua rename to .config/nvim.bak/lua/ajet/treesitter.lua diff --git a/.config/nvim.bak/plugin/packer_compiled.lua b/.config/nvim.bak/plugin/packer_compiled.lua new file mode 100644 index 0000000..e477311 --- /dev/null +++ b/.config/nvim.bak/plugin/packer_compiled.lua @@ -0,0 +1,265 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +local time +local profile_info +local should_profile = false +if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end +else + time = function(chunk, start) end +end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/root/.cache/nvim/packer_hererocks/2.1.1719379426/share/lua/5.1/?.lua;/root/.cache/nvim/packer_hererocks/2.1.1719379426/share/lua/5.1/?/init.lua;/root/.cache/nvim/packer_hererocks/2.1.1719379426/lib/luarocks/rocks-5.1/?.lua;/root/.cache/nvim/packer_hererocks/2.1.1719379426/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/root/.cache/nvim/packer_hererocks/2.1.1719379426/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + ["Comment.nvim"] = { + config = { "\27LJ\2\n5\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\fComment\frequire\0" }, + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/Comment.nvim", + url = "https://github.com/numToStr/Comment.nvim" + }, + catppuccin = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/catppuccin", + url = "https://github.com/catppuccin/nvim" + }, + ["cmp-conjure"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/cmp-conjure", + url = "https://github.com/PaterJason/cmp-conjure" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + conjure = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/conjure", + url = "https://github.com/Olical/conjure" + }, + ["gitsigns.nvim"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/gitsigns.nvim", + url = "https://github.com/lewis6991/gitsigns.nvim" + }, + harpoon = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/harpoon", + url = "https://github.com/theprimeagen/harpoon" + }, + ["hop.nvim"] = { + config = { "\27LJ\2\nX\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\tkeys\31qwertyuiopasdfghjklzxcvbnm\nsetup\bhop\frequire\0" }, + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/hop.nvim", + url = "https://github.com/phaazon/hop.nvim" + }, + ["little-wonder"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/little-wonder", + url = "https://github.com/VonHeikemen/little-wonder" + }, + ["lualine.nvim"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/lualine.nvim", + url = "https://github.com/nvim-lualine/lualine.nvim" + }, + ["marks.nvim"] = { + config = { "\27LJ\2\n3\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\nmarks\frequire\0" }, + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/marks.nvim", + url = "https://github.com/chentoast/marks.nvim" + }, + ["mason.nvim"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/mason.nvim", + url = "https://github.com/williamboman/mason.nvim" + }, + ["nvim-cmp"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-lspconfig"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-tree.lua"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/nvim-tree.lua", + url = "https://github.com/nvim-tree/nvim-tree.lua" + }, + ["nvim-treesitter"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/nvim-treesitter", + url = "https://github.com/nvim-treesitter/nvim-treesitter" + }, + ["nvim-web-devicons"] = { + loaded = false, + needs_bufread = false, + path = "/root/.local/share/nvim/site/pack/packer/opt/nvim-web-devicons", + url = "https://github.com/nvim-tree/nvim-web-devicons" + }, + ["packer.nvim"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["rose-pine"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/rose-pine", + url = "https://github.com/rose-pine/neovim" + }, + ["rust-tools.nvim"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/rust-tools.nvim", + url = "https://github.com/simrat39/rust-tools.nvim" + }, + ["telescope.nvim"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + }, + ["trouble.nvim"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/trouble.nvim", + url = "https://github.com/folke/trouble.nvim" + }, + undotree = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/undotree", + url = "https://github.com/mbbill/undotree" + }, + ["vim-repeat"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/vim-repeat", + url = "https://github.com/tpope/vim-repeat" + }, + ["vim-sexp"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/vim-sexp", + url = "https://github.com/guns/vim-sexp" + }, + ["vim-sexp-mappings-for-regular-people"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/vim-sexp-mappings-for-regular-people", + url = "https://github.com/tpope/vim-sexp-mappings-for-regular-people" + }, + ["vim-startuptime"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/vim-startuptime", + url = "https://github.com/dstein64/vim-startuptime" + }, + ["vim-surround"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/vim-surround", + url = "https://github.com/tpope/vim-surround" + }, + ["vim-transparent"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/vim-transparent", + url = "https://github.com/tribela/vim-transparent" + }, + ["zen-mode.nvim"] = { + loaded = true, + path = "/root/.local/share/nvim/site/pack/packer/start/zen-mode.nvim", + url = "https://github.com/folke/zen-mode.nvim" + } +} + +time([[Defining packer_plugins]], false) +-- Config for: hop.nvim +time([[Config for hop.nvim]], true) +try_loadstring("\27LJ\2\nX\0\0\3\0\4\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0005\2\3\0B\0\2\1K\0\1\0\1\0\1\tkeys\31qwertyuiopasdfghjklzxcvbnm\nsetup\bhop\frequire\0", "config", "hop.nvim") +time([[Config for hop.nvim]], false) +-- Config for: marks.nvim +time([[Config for marks.nvim]], true) +try_loadstring("\27LJ\2\n3\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\nmarks\frequire\0", "config", "marks.nvim") +time([[Config for marks.nvim]], false) +-- Config for: Comment.nvim +time([[Config for Comment.nvim]], true) +try_loadstring("\27LJ\2\n5\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\fComment\frequire\0", "config", "Comment.nvim") +time([[Config for Comment.nvim]], false) + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/.config/nvim.bak/undodir/%etc%resolv.conf b/.config/nvim.bak/undodir/%etc%resolv.conf new file mode 100644 index 0000000000000000000000000000000000000000..8e31dbde2a6641f5e23cc50633bb54535af57623 GIT binary patch literal 1364 zcmWH`%$*;a=aT=Ff%(wy4q*uoKbaSd0fnja|1w^T*=%Qd>ZzUN>R3O)C*Cs{7#O&K z7#T1EIZRLi5Dmi&=|?s1vw&oo8R9P>DS$E=AW~4?e;@#hz+^{hDu)0tIxc~ugOTB@ z1kh||AZ7z%b|3~t1wxb+$N|YPm^Ok{f|Y{!FaTB#lGYVjv;Y H#^Ex=`2h$CZukReZ&%_Lamx*t2%dM&9LG+x0dc*jb?kZPo%j1|&Pz4? z?1kPof2&=-^V{y#zkKrNt6%)8b!+qJoj?5k%Y_d=)Ahgp>1pR5-+J(+uGMOn@uBBZ z`4zsu5r5Nn^{Mqg-&^`7VO^>neKCa)e};ncpymy{zE< z&v*Y7+)=Cjb1?!dzg34n;;b`Jj^V!_NaoxiWlq`?X_*^4FNdoml}eTv-BbO-3a^Z2 zJ(bBiV{Iux^*tU=9hE5eHt(~Zv219pWJ=@bFr2AJ{+~vEfze1fP#)$Wm$H%a1J-JE z9)Gx2IJ=gaL}Y8OtMt~?da^v-2%vH~+3ky=bdlp8afD_b!pr`c6%NcuM3a*;P+bSr zQ`r+m=BJfmZlLl!$_8>U*0WsdcKdO#mtiiKiRz6fq=F8xqq3|bcOtSvve7_VG8Tl% zjdQA-$raWuJj~Jo85*8 zUfAIKdTD}+&bK+q$u>3sSl~0#GNH$S-sCgFvWNBX4?FW`cD6`5dhYVa#`yy|p7GJq z0Kg;b#L=-N!aukGOD5?A@4bug(v8i{^$#LN;(eX7rpghH4)UiAtl$j57x{CE#i1H1 zU-_A7qbbzrnd9ux^vQErT<7hv%S?Y)Bq~#W%o;B`j{(2JfpaKNWXATN?mnY)c;-24 z6bK*fRT6@#vcm$QE4^n$B0Fj**~Sp)cX>-%Nb%elANE;p%|LaPU(JPcBV);f*Ld4o zmG~znMJS9zx?kl_#4BReu?oN+11*5sh_I0A>kk2r3eZ&bh_Le9cwevA)u)Y-wqMl6{x&t46Y5fKR`%QRX}Ak z?yvS;2>G5PgcFxeDcs^K`i#2F>iImEHK$oKmiorp9%Adv{wL09Z;a<&~9 zSSiv_&rs*=vLjZOG%FK?7?&&RdZf*KB>KDrm!StZwTF(Om=GxM%okcqYHSH=JZvdn zc~-@*TZu)CG}eYucen!zORX5-=b33S=Ecr1_u~pNDnsl)IcrAHmO99SikW2+7Dfeh zIhvk46@}gF%8{UM?OXxlQx5~R@1w07q-3k{1kF4xpnE77en9qe_X*{oo9?4wA$`#< zM6BgD*9(Qj|DDO$% z*ll;rF*;oEIf;Y5xz}ztTKiMNEbj})Ds(on3*j}k)MLZ8(OmyCD?`hhhmH(oFjuk1KCXji<905 zem!>gzjl?oRIax+5eIUgv;rE0PjqRoz5>J zlU922AK`}uyuvcl@UeJ86Zo14k4e&YM26H2ty)ozMkBx zgY?yJ3W;qwhy?vHAM%zxxm4PYiJY literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%home%tyjdor%.ssh%authorized_keys b/.config/nvim.bak/undodir/%home%tyjdor%.ssh%authorized_keys new file mode 100644 index 0000000000000000000000000000000000000000..c22cbe002953c27726d7b5a481b3f32767836ad9 GIT binary patch literal 2449 zcmeHIy>HV%6n8)V1O^sXFUW0dCvjZKLUx>wHffr;`EnM^an6pN*lyw^PO=q7B*cHf z0CZr02{D6^5M^OwWGe6nz=RO^oZ4}z)CHKxlkV=l-+S-QdcS+;x^6zGS-gFQY}|O% zd%b@9;m5OUcRFu3f6$Mgnjc=w?%wA<-Fx%=JM|7hkPUA@3D)(94zXY$+R4{fn`<7j zj!5sl1qyUR2ntLLbmXTe;g-I8HT~TRXeZBfpN=);+x6eJ_G$3ZkPsM=IKC7aCYD2O zsRUT!*e4tk9F-{f3&Jm)77bnLe_jEv|6ZQ=pHE|yjwRuclu-P*{|AX)zhyIDr)e1@_fhQKEv(FCHia#`y{{DCh0AFcvfPz{7$ASM3(9&Ogz; z_qFA>8?ty`Vd+CA{p)ZUfgcjYc;2}+qluDhk#w$=w*ifwK?KpraHTS{LC z)`(H{AyDlp*2ZwGgF1>V0cXNc38Jl#icGf&(8ei%I#Xw;GHkwTrRIZ?P@!XD(`vQt zl2kZMk85L|68U1>tnAp@wm_`8CY_z1HLC| zJu8`>%}gyPjWYFYsWIW)nX+q}biOZOX4xf+h9DRO(MZdslBkPBvOLoyQ*?B0sOHIL zbpi@%JxjAzlLOf}o2uGWww`mQ^Ehtty{0@9`PP2lE~z-;|Vjz)vFP xnLKD31vOO}6|^GID!Unh<;s4hm;|L%xSvN8AyUYY!-R(%1S@KphQ2fEHhU(Co`|KLbt-gEZ)pS tKPfX$36_XqR-va9Si;hW`2|Wt5;05{OcJIWrVCvhyDpF_{E7JaDgbI;P~-pr literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%.config%nvim%after%plugin%lsp.lua b/.config/nvim.bak/undodir/%root%.config%nvim%after%plugin%lsp.lua new file mode 100644 index 0000000000000000000000000000000000000000..de712e5e9abd9d020656e5c4669db215a6686f07 GIT binary patch literal 27496 zcmeI5e~esLb;s9^^Mg1EPzRC#f#;3wUH{rRiQ^^Q-MIFOLUA|*D-dc6B~J@M?! zGBayP+?1FWkxCF1qy|AFsM@Nug-WHOgcdB$!RFFzrRc$3wl~kotTUDU`prz+? z?>#f`9N)KbY*y+YbEE6`-g)PHKX2|m_r7=U%)UI(T=?`m+xt5IFm}$v*M8~Xw_o_o z#YZ@dkcu&dk)si_Ey(f}oi)`_Z)=Amf zEE#LG5PVq3LqDwelEIo1^1<>2JGYKdF5pN)#k_lbV<0mst56j@c3o}m;~ zRc+W$Rbf3ZWmRD#9gLf#qB-!?bdKy?DEV*P6&_9wkwpXHr3n?4d`q<`IlebJL={02 znj%@LVLr=;ol4QypA3TyZU8hP;Q~UGj0PL6mX+GdV6!z0HmhUE3_7R)X_{+dm*2j< zc(Ainw99g~xToyM2v8i~F?G$3qTeZ&dS$_oKu2FJ``QyJiKIO(9?8Ec9vC>PDa8Zr zuOY%|VuR2M-DVUIRLNPSH;HyU={HpNAJBb?hucCtq=AQ4(whP;x#e_kDVw)xAW%eg z(4!by`9U`@=qQi^fkQmjNG1^!dLtS=g@h_Oi+@fh5Z+P^1gf4u;3;Hqx5ZdZ+Sd=( zH0|(Cp(+A_L@TSRYUA9gDvb%ws;X+kp2CQ*IiKT{xH6uoLK=-HS`%luec53|)!!`n zMu4GVu@G3nqGQIOg>aLk@pMRcqIqmbin!F+oV_5OVnf3ZiW)U`rDo1#_jDTjjxc7N z6PuRdL90JBls2!98#-R-)o5S#_SC#I=PT4#wlwwY({^-As8q}u?QRm4R{Wq=#m2Ki z=v4A-@WIf$Yhv@hPEK%R-!1tf$**g5W*RLfnljz&mhV|=cFV~LIhS0>u>Bpy={c>SaK5nYEz#57lsTH@&_w}>lT}r*P>0%M<1JR&X#YSHaH7tGksnD0tjeVKwzeF;98R7b(XwDTgt!CNoPqiBh zWwCpAF<$ms&31ph=pQZH;&df}#MEzQVRq{6y~P9l&f?@mbP9bwEEsjA({^!}=qcN? z8aFzS>t*WpyW&Z@FK)&jO4}4S$krwk8$O+e;3#e?6>~)tC(15wwnu$)&%436|!bn z_NPTNeXM*`mMnWx6oXJYxzK1g=F7odpmOq!qFkDvFMClfi<`&GF6y~Ps~6-lZV6$d zls(mHPdEDg#>~;lxuy0@zu9R|#&F+O99f!ccX8ZN6!G(P7W|bkfq+zDjTz9ch6kUmGIt9 z_gIhn?sV_bg(IETu&{kK*Pulm*AFt=Y|OViy?%3Ms1uHtkI`&$I}d3Wu|kwlS3Z~df9{KR72XTJw*a7|LTehQK2rQHG)dTtjw-N!jrj3*rUyG zmd#6ZuB%)+O+9MfN`$RYTg>S!+~zFP>0% zz)&wOpr3Z4ikiYp6CaF^@st|Ub}DVta7KJzD*4Bfnb?1YF#Eh<{C?_eh3rFr!Zu( zAm%by?vhMFyF?VesF|Nm!rs(OW3h3h*^=eGFu7)xr+-AgpeoD7X<6oyMVZM^I`PMo z5@p5G>AP6=OAa9w{9xjXHTn^9SniZO^uvnpTO|*=BF1V8?qc{#)hPRFkKNF zQRXhmU#%Kt|FLu&SzIz+n&^t_CEuu*luq26woyfk;-v{^@{>-b4P( z?HSUj18YsJ)K)t1H$w+r7X!Hv&<4rVl4-ctaIn*7C;W^N?&;4g7!awiNwJS9B-{K84{lydrC%Ut;+Q$rKcxUNjg&DWE6`k5~%* z7s~<3Xf7)X`QbzBNMq($bwRQW^4EyNYm;-7b05cYpJe3G${<0(Sfhm@0?Ruj5B;!G zLb%W9lk{LTkrSlgF56G)POuK`;mU?%kUP7)N(Z+j8nAw0S(ZM$sEX$vmhzr)s)NZP zULhY}7yLM(&spDhswX%pDXM7G>T?#(+*OYQt)zR?epJ!UcvTbi`n*$VT@O|CB~7r_ zOa2R|vMizpuWF*)P27hn$+A#gQ#lK3ujE}$by#eqc!fmwUJg^@!cacFtcre%mnPl+ zzEj!H#aQDLpWzM~u9EEMLZud*V9{+Ja4O59*72$)O8Hf%(vo9spxRiGDC>((Wm$zN za;)>xBD5B0S*WTkYM%UBr`jntQhHn<=t+zbB*K}?3>{(gxImSxWE%WATQt76D#v<@Q&|>e#(|~t!1$Slw-{}m1UvIv6@b0 zS*#o7SS_crEL1sG*QqRv)utS4$*C+0RgQJSsVs|$Pmc9dPGwoBa;%?mD$8QoFvt3k zQ&|?O9P1-aWm&Af@3H6-l;4LRgU$iPGwn4IdiN(b1KV1m1BL&sVs}xW{&k&PGwoBa;(2|D$8Ofn`3?3 zsVoasj`gBbSr)VB9P6K)%Cb=9SpVu&mc?^mj`i%VIGo$NGU&Sr)1s zYqfi{wJes9a;$Tm%Cb=9SZkfivRLQMu`Y2c%R-f7UFuYp#UfXZb(vFH7OEWUN~f|c z7P)e)!l^6^RgSgEsVs{{t{iK#Q&|?O9P4VQvaF(pb*)ob7OEV}fB$A#>uXpyFUvxe zW8LOdmNj0(+UHdEbD_$y?s6*2x~hhCw^LabsvPTpQ&|@C$6RbY;8d1{D#v=aQ(4x= z8rHN^Sr)1st8^;M+El|j>Qt76D#vO&m1RxTu-@ZTmW3+EdaqMi)?^LqF{iRDR5{iY zPGwn}Ygj++RF;J*$NE{PvMg34a&h=!r?MtCG8vQXt%-*YOI+bOi%CTPMRF-v94QriKSr)1s>k6l` ztRJsoy}_w03ssIa?o^g_a}8^wQ&|?O9BZpnSr#km&LMoqFy)Mvg(}C|=~R}ryM}dx zQ&|?O9Ba2zS=OE!)?TNwEL1tx9ZqFge81ovLLKgRM$1B#W4*(vENgEK>wc%QEL1tx zyPV3hZmVG(aw^M0m1F5&?8)hnEbDf$xne^d&N`!Ip~|ryaVpDta}8_3sVoasj@5H2 z%i34N@;^?pEL1txPcF;i8!P7!>hS%}Xj!OotPeVs{akm{u%2`(%R-f7J>^uE_0}5J zN1e*DP~})3cPh)evxfCar?M(`yivhJ#3ea@*Y3ssKw z+fHR!Z>wSbj#F6{svPUfPGwnduVH=FsVoasj`fF5Wm$LEu>Q!YEDKeR^>wGRtb1x$ z-*75rRensy!Z}|Gu&B*~{Y8>_NFDtx9F?%5Y5w`$_l4h{ryppn6&l}3HYD?ie(Rb2 zDMv9e*OAvKOblMKO1aDhC{qK1eO*u0Si(k1(Lpp+6Olr6P}C?osDu?w5*_#FqT{eo zX{p0!86Cw-=uPZ2!?+VcMc=*!&iv+*g;;=%O{VVq5t`-A`1*0}%HHo`Y$I%kNL` z=p0{Y^g8YF&HAPuZFcb)ByBg{azgiYo0|RNfhhh#1@}8#!XPpl6)Lr}BD>P;Cv(lN zi!Ez-HJy;R$TqyNRc;c};Ri2ll|%oszG^`DTfv}ZrAQ3~-NxUf@+lcXG^wI$FuW-g>5t-NVb%ZP3~Q~dfwG1duZxvlwGd7(_tj!A z|Nn*|knj@J_y?w;KhO`kq}wFN%VP0VEkycNRM(lk!EDQEz79FQ&$sd#Uz)6%LN618 zzLHzdX|If3yQK*&YA@ literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%.config%nvim%lua%ajet%packer.lua b/.config/nvim.bak/undodir/%root%.config%nvim%lua%ajet%packer.lua new file mode 100644 index 0000000000000000000000000000000000000000..1d08c372a2886e6d8e237d4b2484e35c4c37af3d GIT binary patch literal 17106 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 literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%.ssh%authorized_keys b/.config/nvim.bak/undodir/%root%.ssh%authorized_keys new file mode 100644 index 0000000000000000000000000000000000000000..281b3a9d4ec4b8c850253e57e8ed9a2d026793b4 GIT binary patch literal 11269 zcmeHNJ!lj`6y98Z{6#DS79Jde5RT*$j?;)>NOF=Nf=Hs#CLGBnmrHV@2PRPvt`Ka} z+lj4}Vqs@(rx+9j8xc_(J8OO4%zS&3xg?6X-Fq-QyWhMwGxxstW;T<(vb^?arZ#fp zOVs`#bG~uBQOYjkfg{_^vS)B zqW?J{9JQdbQwk2TA)wijuhbfkBzh5QPy5uu^`HQhnADB`%K+5mAXk8xC24>#(--Yy zd?jvIfY1tRz(OnPxiG=VUC?!c`B6nz0D2{{TEe7fuP}*MfS3qLc5!@iqdKuTStt~1Go{LWt*_i$D(A}cYOZ1L)BaiTCgUbuwcX+jC{$B!csMfi@AZ^CE`0?N!Yj56j(Gd9K0 z2)9-|Frs}7xV3^Ws!|xqXo0+Q69{n^(Ht78NGxc_sv6O7OOhgQWT*UX7h}Qw@k=p7 QDV#*iQP4m<-}w6EH_gcpbpQYW literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%protodash%README.md b/.config/nvim.bak/undodir/%root%protodash%README.md new file mode 100644 index 0000000000000000000000000000000000000000..0ea2d974542697d89adcb4d743c5511b62349ac2 GIT binary patch literal 3075 zcmeH}Jxc>Y5QaBjf=SdgepC{;-;l~ei_{_nZ6z8=g6LtQAXo+L{1IYfp@oWKEm+y8 z2sW02iuQJX%{#kuw{Ff#)7`-4cHWuU+uXBr$y{@JXLhCRKdO}XJ~>`LKYS|R-tT>E zZQM;wS3YwSXN}|S&4-tZlUJowl18>xZ8sMDYOB^Z3SCr!Mg|iyTxF>GZsj_yqw_Z$ z*2|bF7b48|MW#~X#n=CT0)*p$aVYgR<}A+`N}Vn}NCSS?L@RX|FV?UDA`Few7;gaE zT`Bhe{sai`5#von<4t;=4OrmGjk7d~(hxU*5l+K52G~HFgC7INQ|P4;;8O;i>;?=p zdCx1(wEQ(6Z)t3VyV>qJo_DE)SNFZ0ihA(};8-SlbQKZ{G~6m^u&_$j8PWm%95i!V zgA`VogkX2@)3XXj_>40AoIi4>DVWZ`v4bYlm>dp!4H4#*^x$Q5#=!8>ciz`}ARM{mJ^RF|j=y z5BE?(gBj3rlC-Fy$DrkD^!!SouNZVD8gyZGy}7tl4F6L{;g+{1PKMyNHGGTkZ6M!C Q&eX6~WoyVQb)NUX0p<>IqW}N^ literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%datastar%README.md b/.config/nvim.bak/undodir/%root%repos%datastar%README.md new file mode 100644 index 0000000000000000000000000000000000000000..0bd280c2b180c50611250ff28ed975450899afb0 GIT binary patch literal 4590 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 A%m4rY literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%datastar%resources%public%hello-world.html b/.config/nvim.bak/undodir/%root%repos%datastar%resources%public%hello-world.html new file mode 100644 index 0000000000000000000000000000000000000000..e8147a81e8b96f11de932f85221270a527299b5d GIT binary patch literal 6894 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 literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%datastar%src%dev%user.clj b/.config/nvim.bak/undodir/%root%repos%datastar%src%dev%user.clj new file mode 100644 index 0000000000000000000000000000000000000000..df9daa8f5229c6952133cdbf9199034c124436a1 GIT binary patch literal 11356 zcmeI2&1)T16u_r_N%K)#;}-}bnUIK$HHnc1q!mA)V*df%lpwF^gILn{!fPzn&_#6B zzd~>+{S#cdaaEA6+z2UB6zi&3T)3#`cjlb;PNuKPkn!#Af&1>gXYSlLbIxzh{h0am z^Q+%}(mvn0pEYjZy1RVq!}jev?WqqQzA^Upy;uI&{_fWcAAR-e`HOc~&aP%z_MD`- zJkKw-zHDCI+-NOcYjv-;y7}4WwY<5xxlmMB=jWx}h@^(3Ba&W{gphm6*0;Y|7~$w- z_Sw%I6**dD`pco?k|wA<7SXP#BpHGQ*0;a@QQeVck6xDkG5twN&r8A;eeDUUKti^% zqb;>5br)?el^XS1k87eL8f!kfTlt z!R$S29d)RT4!<00rDPEMR1zI-iDBhJ$1gFaFu*)3$?50~G#n@k5BhFN=?{Ma1!n;p z;=zO#_f@l3hsvNJJa|W_=>jO8p^~7$3d0nE;x~ojXc02XP@Fi`pK&hr1{GSVgTkdv zO8Ku)r-%;e6XJ7JCxrRWBW=?s1RY|8K*YEtk3rA^A-SYP2u2vH2q6!Ykj7v_W+EZo z)}>BoYvD?3YwL!sQ)c#1lb5blhYE+mj`{Fm{>R@w+Ry?P(y)Og{tv;Dv({11s#3r1 zos0h;s{cm@`+x2r|L5B`=QRM(y$?782b($j&t=JXtsHfz3<@Cd=zIjx(^hbJDl`>Sd=o+mDo~xFs$dUaP*v zg@4@T(SPrV9*H{Y=5E~U1fZrF7se)5T329%I#S);W5tkx2RRAxzz{v`dTn4o{y_VA ze#|_KN7+Jm?C>@LYgSV7Fh-~&RXjW%A86d+^M5@2ZkQA-)tMEjKczz-1-Pq*RiX~P zp#ciKb8!KagoazAZeAUY@q_1!PeY^1O2WzT8v;QmBkCykH>nowkd6dWhM|)NQqy>D`t zT`OF0h2=&GROqbO)DYvBnT9bl%AvC=l;lduL_b!!`SrQ>Sqi}g@rS*r^|!LhdUG%C zWHsc1tGOs9M9IAvp^o${DVrlV!@MC8bD!5$Xs=_myBoB5pv8#z;_Juf$Evr%g(Ie|x{} zZFQ$yOdJo6TP5na*%BG3oC?U8MUesoR;VFW$QY?hMwQ8-x>If>QsB##sN-IZ42CKf x-jwo|95T{}dTy1W=JIy*&;7`F?SLhOyd2HdjcUC#|DGNW+yf_c!_Q7I0o6~^P1#K9LKR8J2tjS{%~@B=blq_UiIrY zHLpg=m+!mh`|90$Pt~pEoL`-L>sGz02Nw=}?17~_mj7t%_^-U@^1FWVz&n5U7vKM_ zH~z@mcYfxN-*kQVjeEZFvU@H)Jo)%{Kk~t`v9XuShZhAnWMr6kPSD$`~P|64>g6tWz>1xiawRq}V(Dh^4i7M?%6;RJQZ*x27(EXpaF zw#jt2Ot|8%0(p4PqX&Dv<)z{cd*)_(Gtf&7SrpG&-mFeY`&eGJ>le-V=>UI6PVOjT;GP!&g(1=7G<=uys5_aWy z$|ev~9$Tiw%`#$ITGFgKh?0|(lH&$bGTDrh!5H{XpDP*1AnM2)2Dsfo(Ir5Fo!>$! zV}KQ&Ntr)<>LtU1#hzvuOpbRuy<+2m?*3w;*Xi~qYVkq6DaXM{@ABQ|_NZf?fdL37 z`m&O;G+;1gFfhV1Dgwr33dZq+kuj=eW_7G(j~x2bhO+>qs2 z?|nnJ6>IrkaByBL>R72E34*7{bP_rd@Z{( zI{S*py3+@H3yae;OA7~PdJD@-Q_dyJd(5H7f>8f{Vbg_N52EDmND1dUm(otjvxz86#nQ~7 zh5a+VPIdA8@WIu^y?ud2JtkEV4+#f`HbVHhE>u{m)$*bt10tt|df-D8(~V|if@Ma@ z5+fWL@`I3hVMGQmg3OC$!Ue|{#gsN2_{3+FT_cuue@a$`(6CZddblv3~pNpLYnye<->e_b20kpS{Xz@L;WdfJik9;XhaO|Rn@3qpIc$@JMbsVAbfd4&!p@t23;7BqL7@>_c;o+6a z!wKo~q24^~9LB?b8C#3v@O2#2hqC(~3c%rAweVp5O~(QEpB0W6G+2#>j2s?AJLDi-k^-sa^{mQq}VH#8KDVZCg>- zUrSdaKVF-%Z!7B1TPy;$vniVZ;zpS=d~T68X=zEb>TX-vAxYK3at%Bi;RC!)GQC75 zJa#=pyN&M;uFUN3Oz#Tg{j5&6Bk7b(E~|!8)G^PX0D^OTSxEteL(%?ij!3~Wqhy;v z(HREC8GTTAh{D(Eps-I|EWg%#?P_#L3O3ZbRLj+vDVH+eYqdNyp+k%ii14vE)X>6l zjZ?^kV1*Xagpk!?glz63nzN*7X*@a4ocO6ryLSk?&mf|Y5 zUJD&!umFcQL8t*|LME=la?rpCZG`jRJAC8^bvS=OVL2%U4F|$uxhTO>e-f>H!i?qB zRbelQ4i8y~aJ3gJR-6N;i!0<;+G0`18md|aMG;@(1j*0TYN12c*77-w{Clmaqn2^$ zx5-f&?Bm zlRH5!xSB~HmdoySvy7N-lzQGOkss75eK~evFg;hL-YO-hqrF6?zRnBEDDL zNNGt~2l-oUU57j`gR)OYU~pNpLYnyech%<`QctAr^JDUK2`g29N*Zq;|F)qKbsVgr0SfWSHZb9UPLwI5 zff3qB6Eyx%(Ks!kQEx14^v%zIX1jRor@4Qx#r&vaIdd{jeKuti9L}n=LK`V9DJvoW0$W+^8h$%A{tkj)OC+zCARO8KY{0J>$h-Ta z4!yY_cNdgRKw+~?IS#l*+N4d~|2OLXGgBNO1~5eA?r(U@ZC7>6jWzhyYxMbVS{R5r z4$U~g@7`BHUC6}VYa5Z<1F=LKX~4l5bIQS4{q2EsaAkjcFtibf%{n_xWAF*{z8{1) z5a}9%pu>bXAN)(@hilBBL#kR^lcKCe@w2sBwuqBfNSTd|n;zzju&m#4 zz^b07!O{Hu;WOSH8yws~B`59KM%s!$-rilc zvy7NF@%?+^iSMVPpZMOy%q<*p_xC!l>lG8c`5~P7)br-!1l!r;BwYjnk*K4b8jDzq zrIA=G>X>KDz{qCGCh)_No=7<}gB4mx6K38&j2Vv?_Z^WK-%B4@!h!pYn5bj9iWqNM zoGIq+uW^PBscNNi)s>;_+wwK~GR7HP(eHMFIjp0SIde;lm^R_;1H(9zaIn_BzB639 zxO=0Hytx;5PWn7aaWy-oaV)zxSZ0)L6Zd{d-FtRAOKA*tdOKC}26VE|$7YX5tLoF;<9G{CP_cbzu1@S)3{&V`TZR<}8u6b!)cjk%d`2~3b zOX^;(b&Cnn74r*4Z@K6k>a0GoywsW4TVAWMLH2~$AMbOXsJmzP(`25DVFM<9eakEm z+9Z?K%0UB@w2+7mc^`w0*rX@4tZB#eoXIa`quw5%jN;Av)5k|`)fGssNWB)z(#5FP z@@_{}%hw-Q?;~qb#~Q0zln}2?-nSKX=nXz#+eX<05X+8mhR@A1VoLbY(^yjSgW&so zj9CyvJn$APITwe3B-)`!5_R0+EQ{z}d`ZpWIQVMxCOAJk+^x|zy-rr(4ktgz;a{vf z9M}3o7}u7!V4Am2>jfzehK8?BgkJ+25fCuVvL?`xiEwMQO`8z$B_-mVbg~lyA`!cX z{Ev41KFc5`-0!goiaHL}n1F#Dluh7+9aG88f?Hz5vHm zp-lt3S`P%?Cs^BqU}@wOnd-IBAyuuDlA`Q)&_nqh>!$cNyw_rY0n|>Jwp&$Tqv6wD zeFn^|GHOEjb~nX5onF<;wbIWI1ME})dw7qG(e70@6OiaCI)IlkzZiTyq!sX`S17q; zE%CxgiptD2-T_7-;>=WpZAdf9ITU}tMwl()Aq=9pB6EQ@c0eT)=9U;SjjqJk?$!rA zFNFP)5_WFYhjk!mbZ&s35js0kwb8|R*@KY^ju&z24~&|q6SYON5)jd_G{OmUku4r| z%(G|)TU=baz+Jg2Wz9Q5mfUnH$5piCAY(E_I8}>t+tDEOxffF0Xb( zcUn+=5z+4iHW%QJJc;y&O0xNUbr zkEYnSx_qGM&3B6ZvW;HxXh((#=f)?VEH|NcUH8qOvK{$uLjCHm`oE~Y$cwjNq~npr z$1Y=^m(0YqKLW|@>xQi^eV{|u*Z*M-XW$fZ9faVxbJ>hCQ_>^a)5R#|DI(V|1v|;>Y81$!zF2Fl^#oVq{e9O66I6L>9jx< zl{x)hDzjysz2&)Oi77J&IudywU)cAA#+I2Ux)Rhj7iBOiy1j$@_H~&lkzjFAm(u;| z%}e9J#&2hPWpuL^Yhs7&&r)Z$H&Gn)?6kzvaVgF%bZw?;Qjol|IwJYN&+6(9-S<^H zMn#WiW?wNsvoyCT=eRB-yD;sFRH20QY&po)&dOr3&?^qE6gSagpCVQ|a6phFUsU#! z;@DQTT6y4WqwoUeT6(=iTv>X{k(cg0krtK65ySgCk3_5z*#_`>4iba`OqOzL_+ z0Yiyjq%X47kFI~#@+`aE*FKIXQ|~@(y;Z+4hA|O(uJp0aq>!(SutEzdEh+0De}k=y zYj3si{NXeE-rKlYW^f60uS{I|j(nfe$NX5KZb{O3WARVz(kJR<5xe@uR4RA?Yjm=?(C=|pT<-oB0k!(A=HYx{#xf! z6!Gil^CbTlwQFj0h{YQ~@;|qu2C@stAQ`M=hmn8Ff78kuN~=nqk(deAD)HvSajfrr z(fNWWv4F_`7ndZCJO_aI&Zm+DP`jD&VOLmc7=qpPVHQXNE^#+wh!NTdL@92PI$f+U zV)!Y=@PZVBa27%2g)$Lt9+KYaGcf|=)UZ8uwWKa*NoLUtmZC#aprjU84u}Uu1_WQP zntmOss@7a>iPNQgcz_O7RcpDn1lxbd039mh8jig+K@H<@eJ6z+Ua>+8X~K1SgyX`B zYesvW>nDye*K3A(*1RLt#~vg33WMyGGmJ$Z~Tk4A;*P#KqS z=x;PZ4WsP9ITSLNSfPbnBz2uj@-C6fuPT=p_s7;3%aZu_PJyz0pCQIcb*!!3cW1k0 zoG8~Rb%|I!5%h?-o4}_jS~fPt6OpJUV#8 z!y`K1F+!q_T1E&&JeRTww3N@bWJ265Bc@FV`Lh@~=nUXVj~p%Tm3ru4mFx#%ENK2` ztPpj~Ffah&7F{s?0103)rk0x&jL=4!fbr)F#^ve!b}u>@`n9F?A4n)49tk(mC*-Df zghD-O2jS7-t2G*2pJELDuL}X>YqeVF5JL%co~MfR16GXa>IFcKF~KsUWJ^m*<#S~6 zZY*6`&Cee``=l6SsK5&xUn*0A3k{=Qs&Pb6MsXi+J1%O+#@=Z~b2iSsH7tSS%T;A( z2g{6-#gcyAyq>d9t~>iesq`|oww`PKEU&xP_2yb!c^m67xm8kjg7xPn0VA}LCaz6a z8CRsU_H5bOxiY<6COkFtDNA=fmDFF7x^O~&!F_E?Kgm;%CCIuVT z2%d>3XPEEdIk3!jck$?vqX zIUDER6&Atqgd<&Dc6PALC|NA&k(B(PK)*Yl(9l6QgUehzDE}asl!xN0bD9O}u0Bh2 z-{+f=Jc15M(VkimgZSV&kGj6aYDFE(RJDAM9VfQ^KC2aV)H0+%=x)j;;Kge6jUpK- zH_M1AmULf}cL&A3!%G#Z@#IE)&vQ(U)ObQF{m-Ja*x|n_-SJ}L=9OD+-m!9vjIMe} zp{6=bQpElJ5#N4Nm-n#wR}0F21R^O6g0bEHCcaYysxg4x^ytz`%x!qZy@kC&q29BLiWB}qix#6`+Xm0 ztb3n7JNNyQx$l3M_~b z2*EE~A?i3Db3V?#hq4JE;QZ4l=Tjdmw2&sw|NUXk*B4_Aa(?)-0ZoOvOVU$qXHS>( zr_JS2$87UFp1zl|2^8RYu5`2KF+v+@;`#qL%=7wolRnS;yGu6Ke6J3ZeU0J$>*o8Y z<8aLP`1(G|CUB5LzFVVh+Qj$&b(rt9n6{?|D3}BL{YbP>?;}%H5%I6VLz2u#^5${_HW}q;Kzd9L=?a3lL<- zyEWRTO&tH<)bUphzP!6+9miK+t)qwMq270w@a~~L>d2=t-&o5V1MW9?t*Gm-bp=Hc zUxGo(U$6BjeBjcW6_~o8IwtT2WBOIcd>!Ft88L0b*msn%jmi0#{#u!E30|z;@a%Im zAo#cu$|&ymr~RtYX1YEBR2WALCMgS_90-sthpp_aW+-aAXXU za2F+Cu3&^V(g3h68x*ijg8^H6xgu{|Tank)%}p0oAcGinSlCx?UjBKFGryT?zQ@zxD#!kmqB9}e|!JnL3O@(CX- zGfK9Jv$w0Ww^XjBKS>LW2RYvdUai(YxXlUbr?tCYRAb*VWz?ZJ_v7wYQ8obu+@CKe z+#+q#ChosZ-9K5mAM+!4OrJ#Xl?#KQft^LM&bMIZgc)EL+FX}ibg8-+$IvgZGWC(&mT4kFLv4X@bD>hP4Gpd+qN8_?~l}?*v30d20w>BiTnOn?M5u6qNI& z09I%rO$fMk7y-i@f?{IJmU?HPsO>HftNgWJB-lK3h%tcAXH}7Y-~k3UQOpcrg%;9; zfjg9eZG#(vYmU$mY)PLoO5b`~!-G08?EbSP?{AiJH9Ew2!2ffqNI$Rv5Bd5q7-i&a z6CUm#7872(9085U-&-7Ub**6mf&D&DQt$u?9;V1h zV1zc(1c`2pBbfd=nS9*2dXB;8^xbSg8O5Eufe;eJ^(lJPYq22DEYxeELo9lL#=I)h z57;n5qR->z=n*V4O123quUAy2Q}l2k9F?_CQZ6j@&^3cdLdMS0z9vPWX}i7jFN5Q`F9Ts5^Kk&-Sfr7wrv}=sR&P10)d~}9vIl~jRrx~ zp*IL{`eT$$03t)+)@YlyhG5g0&O?CUSTTUl9}kBL4=^x}E(Zdv&_bFp@E#2W+XpuR zYsaT61_mOaehYidb;H(LTj19cRo`L4Y8)5RZB{Glm|fNKZTb3G(zg|L)UuERUW=4X zKre?Jw?^BPF8(RDk{y!z5G1c-;1;NS`EJWoqqaKvmJz90@DfS`~m#~h5% zMw&qIg<%j3Yj?Egv4(-d_V-y~zo&-xJ@ENbSR5WQ1HmAzvaJ~y*6t(*YGI(T{XGf< zaQSjLOmN6;K`=jgrmn$MQHu%cMmd5Q6P`1?S%84ohJ%IHGOnQc$kPtc$kPf4%5N}2=u~XgGWXp7^GFUH4)xt?6C%F|p2_Q0E|a6`X^pZN9Kp_2l=DCZR%jtj*y(#2oSkBFVQF@%7>JO1&{iXf%GJY1C~*E8Y*7-x0EQ_F83wG-LYlzvpEQu{8r;{M zZU95Yf`$dW=RCEi_&rJU^<$F z3ZrAHHo!eXp9AMV84egQfIW+9NRgUaLj|f?#(Ig&cygLJMhv-M1CH>jt++!$-#KKSWd7gAJi* zc&~--aTFN4X`Nn6#nwiv;zUxM9v;$Q>CG%>0%x$LJCNCOvy7NFVJp2=b$1K4`p~L( zd7Pxkgp(9?9HGS<7&sh`_|1}siB0G-6Ih{zG+<(~?`yC1OXaoqZ{w(I`Jctm^9g@i zWM%5da0En%?G`3n?Zqm%Y_VAm4UN=JTP*5W%s_gxWWSHH2~Yu&UXx{z+$AY@bwV3R7dgJ}gSBo`m__zgKjvQE_g*4$~hw^d#;BLw7 z&H3;yZ+|D{$-Tq-zt5{39eCXBZIaD%WU3}gFNkEW&tbtmwI<3cdmsX=f8aVvfez4a zK$k(o3N54wXnimLsy9(b4_ZHGwMe914aY;PbZZT(T1y2GZw*y|1wd{`mjS^FEu;w` zw`nB0VQ?h6`=}#P0z{gtp5ITJ;;kOTENevv2I#oQn$!hr=ig#G8s6%fJ zA9%fkvI*#MQd~_rw_VtxcB^z*6m>Zz6D4SVKh zdNb4h8AbUtMY#V&HKcyxdqB7{%`Sh<`8fNXr80q#ogWO+D%-^QpRGHe)ASWG;mM}o zOvn3rzDjz6Ob9)VS6Ooqb<8vGbK1X~vI!*MeX8bDA0xDpCf-kf#lAT;2Y4}hf1KV& z|6AwmtLgQBU{X_^CaL@SILW`L=6`fZ>O@eBC!!FK8>BC;bs~J8Q3EAEAk({KLLi8? zr;sUAgAv+D6KaNja#^Vv@NI)>g{Ih9y*-Le6}GSLV~XD}grW|;`5%A3hq4JQ(2Kc? za_&T8g%;Ap|9_}$#&fGqB$tfdX0*9xDSMUWH4BdQwF>|#aB#NYT{}i#@xN*LECPL+??op9GjQ@E3YinE&_Wt;GIeU~lybJyRqz1wV(pgn_e+iiDe7K3 zFpnIUTUW%7*Y(vXh|lr#a>-m#tA!4!YMqx9W%q}F3;FFv?-HRys#=#OMcG-pP|7#d zI!ovfV;OeeuZr{o*TmEOl8a!Jk+V%$E+Wf>5m>%oCRozHrq=q{ePb>YwO7ACxwnjN ztjk|=Az76(<+na^hYm3!AmD?lNI%d45jRrI(G4rKkS0WI97e=#1ESk7BDQxAKHBZA zE-cA=FZ3NKeSD}><#0T1abyqHB8DHW@c|DXlIa7chZXqH;oi)LS!L9u2_Jo*3av+s zTSw+&03L&e@LxF`4{-QMIC@Y4k3Hxz9$2A;G{Iw1!^f?uUr@*6c`fje;oQF9p)L&v zvqAC?)w(w55DOmA@KKpQj7|hnpd(+KV~w`bgpQkrH7eiYq}s&Sdzd9`0-)iF`u z%Av(JW^Q;80gHbctN}7~^Yt!44kE!aqhy<4aABuvvA6*M|IFt}3LLCkB?IA>7%|0?h1De*d;USs&mW$;MS-|I z0pXY20HNdf16q|4FS%uncMVuuvo3Cb6msU+TbFnj!f!lB9m`c0)PrjIC4aq^kqVg~ z^Lmm(?e#KUh%S?g6Z!{ljh_CvHC$0A zi+KMAZ-1P!2_$evT|qf}A1kzwCf-jEu-HjVh3jN;@83ye>1(*!#1+=Ajtz&jN%A)u zBd$h=ScHIyf3Ax3^KnUFW5XFKA9AYtzQsiR{Nluv z472o)%2kUFZlKr&^?o>RIzac=KthKYNFSH%Cn%c$6(H&3dKn})%ZO3X*O^mr243Eu;xai%QaH&DQ!MDUeh> zR>AJ5W5Xfw0j|BZXoC)^y2E}?-S3Ms*RSNG4!w~DNuQ)_0%e&jw?^Bv30bdIvhErj zqh8WFM){~uc+htcU|c2E0YirvDxmQxRiq!Vp;gqFm4i^Q%qZE?l4eyOyglR=mTUYU zj6sO2CTW$C^l6N`%q?C&~G{y!j z{IEKy_*n2%ZCQx^9orQPhPJG93?*eP^c$mRo)FDocw`75p|;Wm;wYpLfHgB z*nPSuxzmdg+DH>9J~9l7=NuIj>EU6CD*affFXb?x%;i5D7E#AMixpt-qrR-9Ad;~N z25FUTjl~V4V9}lmDEM?ZatO&(1cS87HlgC98Z7Qk*D>A!8Lb6L!D1aK{6Gi~9x9@a zyoCxN_>9k!6hO+GtGQPiEHg^B2^0hWY2sHb)yM4p1~#~e^Qv3XalgDhc*^?=Hq-Tk zYq8K}GSzFLLktzr_%T(aAF$!Rq_#yFm0+1svRsRJ50w0%9_U}j&V~cwsI2{%efk?~ zce)xkqmFeQ%5ElXeA#$$Y}WGPwR{dsdabAvwetcWpQUU9JMeM|<;)9KXdz8_`CH}X zg{i$+hnJPrj$iB!=H+bL$qkmCE9ut^l&E92MG8Fq3hrwsKo^%E_qCqou9Vb#jcZ{G`rEKY&9c zcPYgj7_dSMX#&enC@l9USh#4VlEZR^4Oi8lH|&2q4z<)_VOR0on525FUT4Z!#s0FH4JfWN;Iju95J|ARqVWt;fF@8O1e zF97$;CBTUz%C$N<*Me zpwtNPv)}g`Z~NIFb>!2%1Y(VI5bQrzGu%YFt0FZ)!^Vlp=N1R;2u@yxS?OLoerdZV~tcEUadGCZo9kUE65c&mM zlmxukt4RtODXh>!njn?l)BRA24E0XP5s@m13V-8aCF;Mh=k!SazSb(CLktC6|BEvH zJUS7u00qS^qku_TNNGt~2l-QMT?|TVUIwNAWLR{u??^^I0g~w?1Ys-u4~_8&Ka$>WD~o>;<-) zQHMVDFk&sVzLeKOhqyk~f}^_d2j#omBsLQrVn~AEFRLQ`fM-TB7^GDeSGxVl4?^-n zMe@6n^I3=|Sss)L|6ZQPM#JD(cx%)k%%qMA&ra5X@#iTk%r@H6juPoTH8_1(P#>q0>X|xZ7AeS+7YqU+9V0N`)_V8fL>>k`;%(m~|x${7G7;HGb z4x58u0O0UnmFZXPSb^a}%jc%g4KZrU$cT@QlvWiTVMNdI`NP-zyaMp51i%F{!x!{E z%axOJoqaR2y#@J$a{u4ci-)`2&R(e^W3`iWTX(F?^k(O$JBytIouyuPyqLIo<(8Xw ztlTmoi(IO=bJqO4;mN7;sXsQ3_=ZzyZ0upXPE3GvJ*K7H~KF9-Si@cXQN{H#g(ff9LZg#pRPSX@is994s?RwzQ;F=8njDwh~Tt z&Ceg+b-cRy)yd6UWX4vRUM3U4`DEO@cWO$*IcsAr%&ZniL&HK`-;$_UzhR+GnchW} zi&(Un*uPx#mJ8Iyu8F;}CFhAf0Rr~oe3@J>R5DU5a2;uCaJ-h!@!DR?^&BH&6hhr^ zs3QG9Bs-}i9?2wju=VOHwN`BX@7+S3CRkeAlay^37|6d3Bbg8*Eok zmUP@49(ByF8V7Gm?D|!km(5ly>ZoP3K*!URO(2II(6O~li<@P{v9H6S#a?lKw7*wbNHXPt76f!DUp@rae z_Zr;;?ZHYKd$V6xRA#Ecg832rzJb7U(@n*`g*qKhg)S;T?&nioVX67~mxKE2lK&N% z7$e_=KKmIfw2*71u8%d5*Rw~`FhH?=dkhII6mP|BOAW~2G4e+qnLD^TBSWWa2g}uc zvaU$Oy|yP&CyRLF@N?u%enC>66xk&cd}b0bLL0%cg{^@6xaA?i|F-z~NWwKTg9Y!G z36JSFCkH;W>VIvv=NIK~%LA)Qz$p7lpyuG^H0UHasQjFW9UvOZs`4hz+-+ z%dr6~w2&L6F4jcI->tb68#a@lKfHB+Bmx?U4G+i!5y#-m%e$sTswbY=f;v}H7q;Z@ zsgFAHsfQ73u{08EMIG~uE@=89WfMr_@LohY(}fjUNE5mqQ@ZX+ZUn{aWpcXiUDNXP zeU!z6&SZo4DF|g1V{AuV91adbp7P*hdZ)%{fsQYQDv-l5(n4igFhUz?LQDEn{k@46 zM&0+w4ieCH--k zJ}1*gnetPRVuaR$&pGW7@`L&^cf`KTRk9El!48T(awh-Bo!?bVbUUkuI;%x@VXjl` zJGiuG!Y^^Dgul3Qo{-7q-8LHjE>~D;O~)sL`csnsA(^nZ}JgI zKP(fgx)5DP0xPr-u4jFuV~6BVw{;zoR71BQaYICckii-0Na(OR|IU|j^SPPc%yjx3 zq0}*M!(bHquFr3 zkNz2S`M6*0GwAA4S+_?34(!2NR6vIq9q&mc{e7SOzE>u8QDMqaLG3d7PZK&$iF6Pu zI5}S-lX}rl{@DF{vF#9^{U#j)k*K4bhAF7!FxZ039P{rDM;-dA7A3@MllN^!9eP9Q zo#aj4Eh$|SP@)Ty0}V!KBMnfR{H=%*rgxN*W1|Ki9`nE9uz@HJihrou=e^J}2F_ch z_;#88p-k_P>1{GyFVn>`WpFS;8)*VgdV9d0go*b|bfX@BP$KTqR2mzbwdSR8g{9_N zTp0y7v#OI(=H>+}w2&sQ{j|n}o04nkcyMN^xNA`&b=TfuuDvqNE`P&W`;SbCn>l;) zSzB7EWu}R1KODoopS9kv^wEWI8`VBAU%RBxC@XvGeE~3dgSkHHI3RO9uKvfAO~3%x zUqU&b)mWj0G;w`;)z6Ln0oz?a&In}xd!fzsI^0aIb`}?3O#>O6!^Z}VNMrM%KNfV6DUk@YvJGG{P=*MVdYAA-#!!a;MRHw%W zA&mq49t9@gU=zw5POw4?X~Mz9!#L1SSg!v8iHXEPc-&!91|4fus4K%koGJP5)S?4A z#Hg4~CH-Zve7j7WWzqrkOoiHI^qiJA3ozNkqSJxMW*{?B08L&8V}{7 zy!#N{?B3;Mf7)(DMxChL)dhJITBmWD%KwaJSG#FOOiN3eRdrZJ^0->_;_Bt-YHlSz zTc&$t!qw*{SIcktr*R(^(5D1s5rjn%(!aJ2Ow=(i^%tmBpF{cEN33NF^ws{GBi1td z`fB~{5okU8Fi2=F&jB zX8BYTOFW}8fB3Y%@ps1FxhUqrKfHJrZ~Z7%mk;(j-D0tG(9biL^WL*$Rp4_a`culz L?C!&V{G@7dY5J4c^<+xYz0kyrCqA7=)8Z_Je5^n89j_jG>{1Z`ps#+a<6jbh8i zmWizw1Egv}@yg7n25K9Fffv*Y=%Ao#s}{Zs>`>}R)4x0e#Y@*pmX09!vPH&b>RZKj zh(SfoyIl&@1l?1%WsN1A0^3~Dn?9YM|4({t;{h?WNcmRmS@=NsEPAO3wIToVt}FOH zdUa1(Nzx=k*@0%feG}zWlFUMq5J^^iNx~v>+$jb%%^ibUcIA9U$mzd6QIuBnph=L1hvOhhFWjRvV&%30LraG;_kC$!f|DhzQ~2D5t_<7LtSr z=Vd+N99~p79mAtTLxoD$WF_2u@^%q*L~?oS&L3BsAH|y4doD( z+wi4oVHT2vsAb+)3nvAR14ay{c8Oa0Dy8yJXMQk0RxMOI!(He=e%#nx?Fvg*%bKKs z?%-6IM8E0}cc8^~U`9F}wGT6TgmJP#ChNQ=NJzimrLyrRCYh|r=B+OqSVT7P55M-4 zswEgwv?hubG*?0;YeBa&F0YA7#gPulgc$__V0=4N8Y^^Kl1hd2_w`6`lvt4szg+w> z>wLG3vyKlq*8OFU8wD^vm#TEBGYN@8SpR5QZw&9U@ul7x?GWK{(y%pz+5Xz~gkF{~ zNp)58x2yaJd>>`UJv=M8bP!26eWWX1XC={8xPRua_yq?)8{S!rdK84igQ5m^VE9=M VOS#J;7#{?M<1v-g0>y_%KLDOsKOpEny`Nl3cY65fq1ZE|_|)(rN-J5~m1S#R+H6L&w%L7$(_~L~ ztGkDf5L8Sf2(pNcdV4S0jVcKq5TfRhi2 z1LQ+;epTn(TYaae+3a2#QB()GU3Jf`s#|@|zfQgDzSUU!^5U-a7 zeEOl}CwKg-zy0f9`ge^p|Dja>(ck~`KmPBtU;fUCul?!F%*;3BGTJ7dkI3~!W#HO1 zvwHnlYYR{J&Ajt%aiH70<9>OxN3LDm{U0Hh6gQD>fdp2sZ~yyF9Wyik<8etJ(eIV( zt8$@=oI5W!Ux9P@x(n%oa&P2<%S~yEalC8%$zmP8?qEV9w+HD08FJ((!o(zTt6YJ} zmqVB!`u%eKEH8A5g#&OL#~_kvh+sl@dS_;50U|%8d{s8e4MU*#EUBn$71k|tMA<(b zD!Uwr-xX$4FApFq;r?!BW=@q?(&L&B+Tx+(^uXodhdbM9&INxixlBH@d z!EuC7JHp$qhDz@T4|4V;Y0ega_Ur4 zu6Ns=k z1tOIYB2UQ!u=KuM6zV-mQm%-?8|}qz+H0?OYiUyItet z(%E+XimMG6oua$KQ(r$YObF)} zSgW@xwR4Td##;4Uy13Hru2uUdtLy#tzDtdIf7QK?%IFxrqKikXy-buUm5w=j0J@BAAc3kptWbW5wl8UtC;#ByB}0 z8?Fn>hdg)PvIoSq@&OO}E8g+%b*(Z&g>=8%{7o%Y#)k*F_q$lLp5cCPlV2JIf3FY= z+Yk9z{2gmLz;*f*_ns}><@Ba{eJrH>YW~p0qV``d#2S1TS|F4W?|MkCZxv!atO3+o zU>#@{8(}#zj7Mu>VwupTAU~*aLqE+5$Co%)!)=!So`kb~D zP<7=LJ(Z0JaJB+lPUT{7p14?X6L`Z<{zZ6Uc zJjk0TAZNzWp73;sn!=C=Um*v?EE;U!N3PtvBIFRs6f_RxUJM~uM9#xQkdw7U32d0K zW+j>Zt};U&d{sFr4y#(!PevV3qRK@Q)6h67e`%D;x1w?^#DJcyK@%3^-&H+_JhHBO zMz2=O!A9p%&q(6?K~w8ldK}63L(Ql)tS(UbUb*h%U&i8$6sDj|l9C4gXEm*h;yMXS zQ}GAF;!Jf;AglWqM9o4rJ+5DXXzP-9>?o`WGNov1f1CT_5x-KsR()%wY| zOQ+AJ{qmkg!9y#p_4mxbT{?AQQNo?d$Dc^kka1Wufb&OM8-zUgiVTqO2=_{$grw*) zM>ByCrlE0=@yQSw#fIKpf(+{X(cJ=T1z1+mwY3659)8t3dVbWNi3kk((l5zHna?T?djN#8io*;CJjkrXAB?Oxim`}Egkmg9#8)@Oa;?a~ z74OU+YA|~S4^n)AryY*rf4~|^xvWNf1(KP>OBdAYcl^Vun|Frc>t9OXq4)xLw*X&c zu81#qP>!$No{`}gTXnZ~g$>&U`vsmprqOV~8VSc?PNXp{Ws;PH@E_F#=?Xgu%ecsu z5MS7?eR3JTPDpcxL6Mv82Ztl0Bx-#k`a(ueDKtVJ&(!n)1?EePfC;s5goa6E8h0FM zTn(Xt)kl*+gUaHNKx27{(UGf5;rIx1uIc4YHz_krl9X(iq%=Q&?F?~~#9GHBc}Om7 zLsGB!Cn{ zhqZ64W>Iv229~=RffUdI&>}hz!Zd^=&0gbgXkuZFa&4H|py3NTo}a{QxIs6GOz&DK zM9A~P1_9QL67S3owI7@Gu0cdXI3>`+e>ui|v>!-e3Yr)p48Ko}5a#QI@+lhXm1HD#_AW| z6Oz_1iSSARAC#~p%#pJmYJH3s-J6iWILP?x4jFf8$1_MAbUaXQ^^){*b*1*1!JxdO!OKw!Agkv{0W8ANx%R?y2_@g6ZOASvS1U zZZ+DiPPJ95UPyZjwbg2`*ATb8)@d};u8Xx=BgXuVVsuj&X{PPJQIOZ#cJ=fZc_9HU1xmLG@Fe1I;GO70O!A(91ILf>h(dj6GN+4|S( z5NeT7tchMp>uI;zm;dJW1iEF?Ca-Fz;S#RzB}#RyDD`Sba_s&~B6?U6(Jaf_yk1(# zaw4;Q{lD{5g1MV6A%N>%&JOG4_ zm+NV*DH3NmU&2@G^-9`I*JNp6Z#E(8t?I?bxoSV1P3n!F&IMQG!K@{5-|^$gxn}!p zwV4l~)%DAn~`$A1klcq$lQZDIB+nCX6GC8hDe?Q$gDOREm-O zMUlQ=6-kZ-OKvMh@b=;gTM6~B*k_mLt4qyl>s(SwTcvBlcT4zJ(`sG(A46$Ng7T&; zwOCD?&31CB-EG#B`rZ<6a^-ZXSL-%9ed%TT74>WF`g$|P0-u%WIk8?|Qqkr8vY=mf zvewgP<6?KAmG&3Utu78C+wA~=b$YGZXf2*yZ%GmBWn76}a{bjua)Nc)vT$1Wc_RykBV zdhq$PE7g^i^w^Q=k(HHN?O^pt{piv3VD0eXLr0Gu+`qE_VEyQ!+JOVr>Y*e1pWFZZ z;pdOk4;(viVC87_;6kT$PW~-2&$d{If1Bi56)$&7a(B~pF5^H&XjS_aMh2EU@<%G| zZlzko((rPzt7X6WBGE+_yLx-(OJcm&yUk=Ue4gxX5Sv^`(~dVGSC_CPpI=Q|uZi6h zo6_&Dr`HPjw$fX12B%TGkSxnP$V52_Ml@=&!RSI^NaH;TD1#Z6;0|A4{J+?koQ#v? z10==dI_+LRA-&|iEdN2$pOJ#U(zv{ktc$JIMM<9#7^I0<;TMv2H|ebRR+COUx@t zQk}iKo{EfoJyB0CHquLp#6eL4&$9C6j$MOdmj)^ojV(_xB}KZbb&foKs`!livRLY6 zNso6uJ1l?%sqbC9)ab7|;9>l!86^1O;lU*W`7`XfdL${k|8(`56GFISX&{aAh6*St z7Zr#sg(M}D=d)g({q%Cb;#9i1RQZ=;(Q?zC8UKL{KH_ub8x8Ema}5cJyT?B$>l3vb z6>qf3fUAv4-<vPQqO;nOmywU9bmNmwXnaPL>*6_J*geIyK{qCiC&!rJf{M z6PuEh*xXn0ML}~rSYQTo`|&AqtLAjN?9z15?8@Jsc~BI3wkwMSYl5*%r`xm;cCXM^ zlm_2&eQ#yO>uYyX?VfXzmmWg7-@THQFGU?k5pKyCsWi#WF~Hx?JtI*OECkdy>-3{a#F&{16uV7?)RoJe`|zT{;Hu zy2fZLIqlNnkw}z>BD~pT#U<|{kC|9rLBL5a<`L=a^y&B`4uaHN3SRWt-+A0;mOO}D zT(du`D;}5k_Ab%H_kUG>&pWk9Udd?I+?RqlC|qxJB$!pvMVVT4RD6Ym%U(hIJbT3u z4dyS=5|&Ba42~EZ%p|fEt6t8Y&q@<4usGf>5i%3Y#|k>EoR`kh^7&px8s{V@ZOAaW zK}$5O(Vnkf%RjyO#O33V5wbE^` z_fsn-K`GHZBRLmD{y0^mD9o7F4q}ors5;PngnWTyDwGL#20RP0AC78i`AxDK}}&yWF@s$4?k9mJ$n& zP%5r)$xjx}HJ3E37_CzNWS)eb{raL$n-8&RO%$gh#L8-wfrRdyWOc9QQ`}9E)vY#q zsfQN>4LMoQhI9(OlR_^?#g#{uGUnU1#C0ealDOE8I#tTix;t!h%h6j+1Y~5t&U6G$5+enoG_9FfabZ z?Eyo)Hdn3yK;b)s5YFVtJ!^|200O~G<9fSy>v4tN-hFb0MK%QXNn6ofqd ziUPE5>v&;<2vFb_fyc!$h-3;H2L-=9sy2`&hr5JDdRO@V;oEgEb< z0T5ze0clK2;{f5i4hVPq#ZMGxQwOJ%F^4eNMvz4yG!;ulAV}a{zMmQX4qviiGYN%| zehtU4QM8eZI`)Ohn16ZmRUSPHGu*vZ%RY2EbMU3Z*MaOG3^aJR$-ujhmuFF20NB@W1nl6w0VA3>q%Z{`O@kW#VNm-M2eqx< z&Y;CaF19?P-=Md&p{MTjjx9{&B7#rCjE5!hsSK_gJQMb-4BouS;Y3^mBiYz{C%=O{ z?sK5ps54xM*e?};YAGsE5nqL{N`Mw=xgB;9s3w*P-En~WJqOfnUX2(jum{R$g0qvz zk++G$VGobe2Iyv83bS=6+bk1)vvv1~A1Z(W@_p zBg1kx$lGN2|JMdX4ZHhbOahDokWK|;xZU_K^9g}BH$F7ZWX)HttaLYX+;W;7$`!Yq zvLaR&!3s*^mQyQeMK^9ajayFRmQ&q$Ya3+amQ&doGW))cwDlx*zeAx@eI|5cBFEmC1%|cd^`?c^x&+U|ZmaPb*~8 z#PZnBBFHXgrBRax`B3qQIf7M7DR6Jqlt4baJ$wdWSC9wq-DJT3Ya0Wu%0Z|}c3>sP z=*a0Q)$W3vE4wJiS5|808vd}yMSmpX$?AH)z3)<^-e3KTI}S3?qz>ncaZt)f?@t+P zk^>@x75t#`t8%dp;4VRB`Nm83u~~pvjuk0K6c0bbG@{t>xx6$2#V=T>$xxiFcEP?< zwXu`rgj`1VX!ZDcUCeHLzhEk?Tf+cWw}w1oZj1%j-f6MmLH14`i^|vNF7=S(hc$;G zkH`6vE)DEIOe#0TdTwN_Z~?t7fMwavCpA{cBX$3-1h3Loby;urmc|NsJod3>H6%_L z;^N3yr686qMQ0K4-_ckhkD&ftb3v@|UH^OJyLJY#Y`esE;XQ&Ng+dh6;BmS3!xN&F z$W9KIwb(L5Bva5BEyE-0VMl=Pjj|<%N)>xE>J)M76A%aOQfDjlo&Q(WU@2@IPlA}{ z(ez2~l|TWScR-1nH?d6U&PzO7+lRlQ=>&`4Rr8PfVsDyf!v%_y6LF>aPp?4S8=V{< zLg5jK3=~4Oe_NrTwx9?FRDVh?t1E%U4of0JK_oE^VVMmI_=iE^dT0a?Jq?7PmrF{k zuN7d1go>eit;qY^Otr&f5eQ%uV;NZTSeAa6{C2$wd8C-f;tsOd`0ZUG55Cqwfb9kD zl>j15F-H-6CW#5%aqQ5K6~SlXcN!}Ku&Blxs26pf4l<9bN#7wZsyC3#B;Ijs%U>I% zUVl{XCVT6%4wV_7&2-P$Wk_1I(e+CK|Frm@lq>2!5X!_}`UzIA;2&16_%Ai7g+}xg zy>H0nZ8jWq>o``>VTP0`y8kA066fP`y{K_fd{njyV`^udg8rqjpqsL71Mh7~ z;;L!m4>T^uRk=aISNO$P{7E-(Q2>hL$uk8Cz<8OkN`MAfx>_gJ2qu;Z-Ek`XzcmUd z4ExH5EBr|<))X}qjjk>nEKnn@SE3BGUSWm=n06JQvJqgq$8n%Vd8fv*(3YwK3_!hN zJaGXV<>z^L5nxDR3c6{46*1(_Vcv9V%j1svj29X1j{A|}iFP75RHA=NFheD8S&}Ox zF!h4!YP4J%8GkeM5T#kLU$Zg{@u{*nHCLUqb-}Y zjfiF7Fv~=aKdQP9dGOUDq3c(L-EnmPlTP=K`DSlX_wEY<<&C?iN7rYD z1Dg-vZx{|j9{k*LxW12YZi6jENSl`mc|23}fR@*|R{}|{vBbTz9F`Rg5S^Qlz&Pmn zDTkiNRgFR7SdaL@+w42JAEpo9#$DL@rQ2OYXDX5jKW@th$E5oq<;r~%aD!2n2gT)5 z&U_DF2PNN~7RnYu>1NqcE1>i%AtRPQrM@ki|K6&#PkJul@P$wLdM=ldO;$aa zaa(fy5^nqwuB;iO!5(~UH+~5>ehJr|l@-5)d&c)QX6*B!10UjyU&8Hm+O7JW|2S{3 z*EoI&H+~7X((a@!_kHU4C0zMDF^1&B@FiSkHa?+76Ngz3CTrZJNt`1^Bva5hGadiH z&2$9I!#ed~Eh%84=hpG;5QjtP5fyl*w_O7j=GHwqa9XHhHeoTqygKav1>x zl<($Lqw-BG6S^#bu+@V28=6kIA>khnQ$7pDP`+#D_q!X_F3%XE&G&wWIABLf5eN2F zhD~sQ-d~r?2uy$jl8VcB5W+OXnis^dlgrDxDG_!PzHKJ&8&QH*6#K8yzNHiB0 z7cvBx1@K&(Cg+V#*~+$17Ry2#Kc8H;C+6NI9{Xxi$iuHz2Xwt*&%_0J*-EuIxgJPn z67M)x=VzSNd1~Y2I+iC+uE)vsZnfWNw-z{{!JW@gYqrm?chiLr!x87Zs8}~_1Dten zeN-JTCnq|}>v1W5acW&A&HGn6X;NyeRnMi1mn#jKh%Sj};?%kvx|!DcrTO`5XU_2b zLaiX;)Ows+S6h-facVtIt*d$1Rj#Kit)wH?lrOlvyPo#?NjG(a!HM9+jR!N}#ZkVE z755nq4JOQB6wIA$m3Di=4HiR{&!v4i0$1A#6^&WKIJpI7TFISEO8xG7D#lA5xKHGk z<)p`o%T+N`7aQp%az@Z+iC^xgm-`iWV%Me-a(j5+@#9H-Z&K|vlJ$P0>GEqb=+{;& zy~ep#wb`qr_13ITD%V>GU{T&w-@DkU2BBs->p3Z(@3mWtm%5F9Do0jz6N#F??-`$X zwO+5Ja%i@E@408`+8Nrib}>&m4@A=3^^&=z`rZY5aCOONVXa-4da&A&q1ie$;EP%D z9?P@TlLTx1whSS#va58>$zF4d@LSc3jdRt0TFh-c@jIUQEk`3ckd^!0E3?T8s{!MQ z-<@uw)o-@qiQh>np7vZ@1Q$Y>hQNt|3;!^1eZhh28Lvizk%8+0KM9n5 z8Ml<31U5|H+vF8ReZzxP-{|*Kj^TgMJ^Fr>+h|OX!W1-)zJJ2$JIVEp_#sN@lLdV* zFLjdAO1oV;GoW}2j%#G*ffYI-sp3)ervpA9AgEgx78M^zW)d$tw1SSmp^1dG$Uh8g z5ti22iar#->4b2&hRfFQJ))`O+^)=!2Vd2Wnm^0E5)c?XvZ7cqSjgz!SOVjy{U15C z&-(I?+O2-)TMfk>^gFEeIeZuWefButNiVCwj7III4<=?t?5J;8QlWdRcGcTv40+e^ zo%OrJTzLN`O8~w;B;*I;qavX~b(g(B!szNXfru>!5oW&gKL0?&WM61-ZAJs*Kb5y& z1#VB0{IEHU1P^lD!ug6^tU;Ba!1y-(VhI%qYxQXT0&C0jz!H{-?WQbV(M2l}+nZwh zw80;{P;XpJt}eMx0<~L}X1iKv9-0MbN%^#!VP0egYGC<`RhiZjqCd^)$3|PU%Cs+m z7~glKC>21Q5)syow`nY^gonp6uD#P@8UIa^7V_`19KyMqA0ZZF+fmLTk7qtsR(}g; zD{LWpd3J_l$m5xhMfo(cP5~?W59l8Xd4%(^>}**$VTezSj1_+AhDQuwa#jC|LuMG@D!#Ehl=H;onY2!LzS%V{E({Nb z549HH;4jPdm-MfL5g_Y~O2maqWm4y5iFlVr#&4#Y+Q<1p(J-c*oK84>?_zy$vYpT9@Yf zQ^DtL#KE~3FwT)k%CAOKWUr*(X` z`p4O?su{JO$(UZ{B;|TRQO$v5Ch_i-NTz1|!_@pvSRK&mMa^_ZXsH!W1s$*$W-zkZ zDk9$_7Z9-80{^$Qq+7*g5K#zF%6~*IBj5l8NGkS65yCV?OVJ>Je;5R+!yxbt2@C}M zP_F-kFxw)#)k~S?BkG9|oGU z4m5jx^?(*>GyI%fXz~qLJq!oUS7T<+%+RSZ1BYL35{8pJO(YEY!FX2h$kBq zKX5$h$p*z04e{WD|Gy3{xJ6ArvBSFZniCAvM8^XR;sFMJOdiCO^yMpFC_JDyVGg3&M_Fonk-HWOVVz)-CZgr zDb@OHp3u;YWOe_O0K46)r7o?W{I`C4Et$LO539fe-0z`(wkwOmYH}ditnfG(b$Nw> zAljYfdb^jt8@~;p%gf`p0R$y-5Dlvc6t8vWIHfWe3I0E2LfO{!2gwZY6toSsJ-(^4V{FsB8v zNS#(K#3~Fo|0Jt0*4%W)zTwksPtw93KFen7GDzQPOWbgN?BD1-R>+ee!JL`Jf@`5H z7CgxKo6ngs-SuzvT`r3J*c6z~nXx3$h$Ukz4csMHTkRP^NNNFkni-Z*~O0IsfYQqrd6^H|N!8 zpfbSeM#v!QvRpaBb8Vs^xvmz&+6ASu}HS$7b&frR9pX2pdJBv0Sr@9o$4-jINY zB2oPmH_X6;6k4zQJNNsB{QjU^WWd2ZLd(fz@*hxQ(850iT1S4{L2JjLApu(GR}NY* za))ckNM&D6<}IBuuwYTlJeg{#GoDhgggjvfwN7zGGxr7-gO-KK>#9ddM94zmpVxPV zJopN+)A*HM68A;9Sk2_Bwg@qm%%sjZ5c?aU^?Fj?#Ck4+*fRj^LR;5GZumM^)+!=i zu{A<-!}ceO*O6<2h)=bDT-i7${q}?XEUtnxs=%X?NFTQYJ$I@tx|#wen6S`E6Bu$P>1qU{SmWxEETIYrkA1^?+Ov z1qfjp+AEQ*n!!J;n%V78@UX7{u;LU#>jcT%6Nl@&qv=m^GW_!HffZF*bwfm_GjWa3 z{8y~hE7NY(2%zrgEWEft0Tjk6AP~yL-f`4F@6`WMuYOdIIXCrlM!L?%uGZv)inUIo znOX~jz(u>iRe0Yr9g81=2l=)Fv8-L<8qx0A%*=0StdPee1q#48q(N~24M1^;$F>3@ znS$meuGtCv4NdE!xZ2Y>QgJ}JHwOw$H3Q1dVL%zM6hT!11lT7@m0$qE|6PTEb!V)~ zPza!MGI>xg2sltxL|cJ0rloNp@LJelu&Tm_Hr$6d#;hqqty{)_TD5OlH@<2gZ67h7 zxF8{FKM=@N-f^`538(%01{(^d{hj$d<9Lk)gMek5LT?ZVdH59qsQjos6Bjtd#zG*F zsl4Mr;Ij?__vdv0jRk|i)6@ZZGhvkVH|5_MHq8}Vy%B7GGl=AmZZ!#c2;dD9+vWe!cm1k^2gQ`C);{*W;B(;^BsD7j{ z1&uQ-xdHn9}OD;53kl4Hl75FnJJFf;KWZikPsmv zl9+~&q(KD#ZcQwNh#wr%F+Kuubn5#AbfbPx1sp)b*kB?tGJ7HI#^VFJJQ_Cz`(!( z#7qhbK$0EA0%Are22yY~NQ@z)>`V;{L^l2cNB|9hq}X6$|A7Fk9VReJQ#k~H(NPVJ zj;|6xvq3=*icJs(MFlWc!Q!BJg^4qus07I{m^OmN5HSZ51OjlB18FrF11yRV$F2*c QNEeGPkQfM7>L~_O6p~!*dHU1lEf<+1; z+6n#-{u5$jYhx4V^LD=L%fvKE)@mN?&g|Qn;qktoc{}@PTyH*{+@5|9{gvgP@5b+| z3!7h7?qAuu^ZNYVuft3Ajhox|KJ0wlef&Fwa3)^fdhuZ?IcRl-joIhn;6(Hc!t-xw zKtHy)FeaX|UcBu_Yv0IO+GEVX#_ZFo$q~Y@i*emH^|5b~?DK}v+q!hI`hs&!76-&dH)4HzLCvUF{ zDu$RkDK5dYmc=Q50~MO)hW6{36CalF0Ed(2Xl|gwQnq-(!)2zEZjJ}3*LMO5dR1le z%5Pi~dM6;Mb?mli>pcu@2;5h#o82S;=; zLYrL#5aDVH)BA8Gouz9UWtu~s6^Wv=($ZBMb$(+y_nK2HyVVzjg{m69noiqO1@C?R zCN7kp&~c`%n^YD)8o^Fxnaene%4FdPhG067(bqPd#r^}iwcnKI`qQmHZV!*W`RD59$>TQ;U;O61#w+KZeEf+cqm4`^b5P3Z zK&4Q+zR_696-#UD!DhYjdVaZ5zxqa_G^us4S*SK^lg(0Nyv+sx4JDR!tBYQ;#!pd#gMR9UlBr|BOwC=wLR+=Bb?ZR;&^Vd-s zp7@y%hVzC*SQn~Gu%I2!sAX{sc)++hsYOzwTm86}^Rm;UdEP!3b=be!+A>{R4;k zK!_2cFx=^UMzUH+=yK(%==;lo5upsvbujc}L1C}Cbj!e||4Au`T`uD;I7_<~tJ)f!r3Lt4G;Ts9tiudosEZL}3g1~KX}bMh2OJn^5106F1+ z9Bj{-BXV{kHV|yO@DdWjgk3_{%0U)#?8rk>I`P7WXvi50;7u5plI9@uNRm48qzpo| zF6&@T(1z>2x9Iye>>7QdJxW^z z64L0KH)$5(k+D9~nBB5ci|D=xBRU(6Ll-v9exL-!0``uZ@Zg(XbQdJDnlifB<11 zrg6*6X#X#_F=n4XXw+{)Jfr9ZDXr%K2UPvHuKv;Dk9PAFlLf2g2e>2^v*DLGc z7cg06wtY99%FFxMQ}Pm{wZ!CtTxh+UVwU*IYoprCp_D+yz1|@Z10@e&ODVw%2_*8Q zjDbF{WASw9^p)nPbN-CMK_)~hnlX$PuMS^z2?8#4_-{VD6ZgFJZCiNmow)FP{*_9~ zX+5zxa^%vd?LMS_M|IzZX=g92-1xW@>xB(@Ijpo77r;@zOi1Gw-yk|RM1cqJ!_E+H zfS;jK;6118Tg8)s_Kv(NZGd+k7T}+Az>l;b1ziepKi3t~U5V}ezmjfP`fDQt%(uxk z7%HG~A8i$|;X2a?Y4b>uIu0uH4wXY8Ds(Ubl_;MXGF~13Gk`aRaspdu5oePhRPk+? zG^2pU{dx!$$S_oaMmmM!g#?1rAJ+cpCsZe+I9>i2_N70C4#^G?#5;j>YI9Zz75mN_OBoP4UGXX9RL6T literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%dstar-explore%dev%user.clj b/.config/nvim.bak/undodir/%root%repos%dstar-explore%dev%user.clj new file mode 100644 index 0000000000000000000000000000000000000000..e925977f042c53fa3d41dcdc54ed4d5828982330 GIT binary patch literal 18291 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 Wu!m7IAGJL!oKtMs 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 Nk4N#bSHJUX{{uGb*TMh* literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%protodash%proj%dev%user.clj b/.config/nvim.bak/undodir/%root%repos%protodash%proj%dev%user.clj new file mode 100644 index 0000000000000000000000000000000000000000..5f37ef675edb1a5804ad573dd4a2134f15563de6 GIT binary patch literal 1822 zcmWH`%$*;a=aT=Ff%&Y}fp1HSZ}J+4oND~^TYWiqQ;J8d@7{Gc{Qd@*{dG}hU|?Vc zVr0Mw zk{F1o1Ld1Gf>SI=8FDazQZJkjPO&IHgK8e7s1yRg0^|)i#X_SI6!f6dhYg6q0S}H` zm?*ehf+a3^EJ2+Dizj<1A4b8%5y=E51EWE4j;;$6;HeU;)W8GsItjDnQl@k^*5c_zwgK9!zwUrd|jDqvH}dIv5zf zN}w4FiU#iFoGb-hU#p_jf*jLE3?*P4@aV##A0%Yj2##rxGEg#L0*L_uDAwUxM`Ics zCNv~~F?|&r(~O9i21Nx3gQEdg^n%<3i!%@#24G@{L;;IUWEz~WZf_^gf5tB7>%qNSqvnO&;{aw089lpgo{-Sn%I$xG>|$_!Ut*R0&zwY zJ17)r34n?HKD3qrMoe5Su3(OO*wSLS$Eg#L&fIeAC9~s{k>LQ&s=~ literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%protodash%proj%scripts%repl b/.config/nvim.bak/undodir/%root%repos%protodash%proj%scripts%repl new file mode 100644 index 0000000000000000000000000000000000000000..5c3fb7edef2f650ee833f26afbcaf8d836f979f2 GIT binary patch literal 579 zcmWH`%$*;a=aT=Ffmv_X+uYZ@vwq)l-)#{j=f3>Y1_lNY z1_5Lmoek!vZ$7w{1;k=vh`#{Vf=Ym-U>X_z0|5gws)A7-HA4Ux9b2H$@l^uNU~n{; UHe!gwm2tya2nI~dwDI{W02T)&y8r+H literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%protodash%proj%src%server.clj b/.config/nvim.bak/undodir/%root%repos%protodash%proj%src%server.clj new file mode 100644 index 0000000000000000000000000000000000000000..459b14e608234aa77424c4a8b109045993ae9afa GIT binary patch literal 50737 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 literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%protodash%proj%src%temp.clj b/.config/nvim.bak/undodir/%root%repos%protodash%proj%src%temp.clj new file mode 100644 index 0000000000000000000000000000000000000000..45c27ac70ff7412e2944320a8311b3a5d138a3ed GIT binary patch literal 34315 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 b#doFs#PPJX-XRa@;4g}3BRX^Ek9+?CJ9_Am literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%protodash%proj%temp.ts b/.config/nvim.bak/undodir/%root%repos%protodash%proj%temp.ts new file mode 100644 index 0000000000000000000000000000000000000000..437d89b0e11d3db958e7c87de7af3095b0102e49 GIT binary patch literal 2711 zcmeH|Jxc>Y5QaCovoQ%4f><7cA7Ev1mD)&38;hioVB-gZdKR`8*9mrliZ)vN2W-XK zB7Z_euoJ;9&O5hrH@PfUxo!uJoq2C(8RprK?&0x6=cJvyo8V%uy|Q@u`uo!BzHJ4| zkDEzraQeOUwQ)Ybu)Ef&8Dr}7!DNIs!Ads5=lJ0H^FGAi(CqZ>1W7`OU-;MtWG0Zv zkK^wE;kaTP#{A5dmS+rcI-=*(nz>gvqQxoW#TptQP(zzU2II|PL-97=4iMh!|L``C z_RgaHB#G9ecvYijK2(dQLA@f;14yrP^A&+TP9t1lWrBHw|hgZ8IURs5M3IkSl0SPLq-Z%Pa*KE z(S<6FSl==0Fk`LnWA^!V)+&L^UhE-}YLs}oRIljnEKJ58C}+vOD6-_4m-VnyW{^&% THN>M?`aY2?tsyH;Kc4;oJf~j# literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%report%.gitignore b/.config/nvim.bak/undodir/%root%repos%report%.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..3f2f8344d2c98bc40054e165c479b5938365dc57 GIT binary patch literal 1138 zcmWH`%$*;a=aT=Ff!TeM)Kp>ioY4EvU8Wqq*)%o8@9g%iQn#Ylb{()`vHLKQfq{Vu zh5ddbMsS5b5e_e0*pWm0w5Zs00clZ3^QbOY${;^$ucvE< literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%report%app.js b/.config/nvim.bak/undodir/%root%repos%report%app.js new file mode 100644 index 0000000000000000000000000000000000000000..dc8d4d279e74544f716c1f0c589b71bd5ab52186 GIT binary patch literal 201814 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 Yd4^UPH6eVlUm6c9MY-v%fAZ=72k3BtP5=M^ literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%report%index.html b/.config/nvim.bak/undodir/%root%repos%report%index.html new file mode 100644 index 0000000000000000000000000000000000000000..7b5259ba9b19f6532aa54b579fd996b6d28f3056 GIT binary patch literal 10429 zcmeI2O>Z1U5QfJeaqJ`{fB*qWq?JkJB*d{IVF}_7DI^y@gajx7MS^JYuDl!ByAV4T z9DVU0Ku81*TsUz+9O2G^8~g`A`~f%-3F_(Tccwf$Hj6iVo07)U{Z3VHZ`U)`rEIW&%#ty8wQ4@(6=?0e_aLMrN&b4eFm_18 z{C1C?xlLrPydf=*l7f#i>ou>ZQS!=1O%fswd%@ZoC6783Jv73&^^cWkNO@FrNIZx7 zEU)1=za6mU13Z|xp@j(qY&8WFD|^^0(As%_#AC~1lWS5!d$d*y>7|VpvM7{`nNeRU zH~(PLdqI)Mq&13BXjmR41(h+G%n3Tq#8MjNp;P;)c|RH>yoS^p#bRK1D#~kIizwrw zOUO)xBTTzOnI##f8OjqLWtN`8MkNWfM3m9dLaKx^qBkM?tQV~qsnf8=@_MxMoyzN7FRV>7Uj9~qd$+UGxH58tK{*2T70zzq4$@?0RX?&-HSMN!!}*zj z^GKR}(m^HRpa31C^4SJAw_a~|tba7^eb8-ulI?lQs9nwofX6umGhG*>DKDZ24_)CC zuOOItjeg{Xuu$sI%=m`-fU5k3B^lsHKfIhSmOrH=RIh4uUF6;-z*-%4ji;ebHt=pMh>((1f({n4W zdS|sc`(fRFY-}{AJvkw9ZpwV@+pbR&4T}trbKWP&D0?svw2A>O%K^{*FfbPw7)x(u z9$0)~xY!p1%ZqacNw%{vh|ejLM|+8eGc+usKr@Xd1 z>Lgt=eJ4C$3CeB_DgUfm^w4ae`Hd0{Dc%G?|44M<#0|k03$M1Sn}8)5z~EI6*8Ya@ z57w`So8VCSP2l&$Mt!qBYa3&`v)R16RbN}0o-QebdMBw_L(psL#IvZ%$x)Q9@RD9p zUSohf>Ove(yy5w7iH4L%oiBL6_B$mSQlu0rk4G0y5DTSYsESgSWB}`j(p!PjiE>I` zbh~yhr7PXeMt7}wX|20@?#xQ}UT5=s8MwkiUj&$hh1Y2J!X!vNOkUd^bukX8V$Z#K zt3*SJ2!fpctd9(iAhW_}lA_OZ!3TyYjyV*)wq_$KBVJi)0|6X%15Hc0ZgQ?n>2$)!GZLY5^ zTWiwZRJEG*2JI={TB*Z@@XpFE9090B-e=+V<^XstM9yl@FV!wDsPx&OmrDlS+<{1En;W-PfDqUQ(p`DE5j{?Wq z=IoQ;m@JZpkvqlwni#es&RL>Lv_gJyC%5D|3#;z} KY4h8EeDg01)R#U0 literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%report%package.json b/.config/nvim.bak/undodir/%root%repos%report%package.json new file mode 100644 index 0000000000000000000000000000000000000000..d3548b4587b1d85f47ac3bd05eb451d0777fd2b3 GIT binary patch literal 1261 zcmWH`%$*;a=aT=Ffw^^IPH)nk^Dzf`A0M#&ICI&=%ifHl%>J_tPTshx#JRzTfq_8+ zh?x`=fFv7;1;mU{8c2cpATbbT$Y_h_X93AFGsIs22>=0D0>T7qWQDRB{sRG61ST*_ zQ#k~H(ZK?a4n~HrpjZS2Jv$JC*x)!+P(TqE2Z}S8HiE^#ia~rB0BHb$PzVJlnV~F% zF60;oNrJ2mhpK{6uvCE11rvek<^d{=f+|NA0|_B?aY0ppyafWBKpYQdLA(kR1JS09 z;6w@Y2vij~fr3)D5J+G&QNn_SRx~hC@BrIN~mR3$3~rQH0K(wtN! cJ>)bAjwYbvV9^Mo)1i(<76S>HHa=ek07lU`lmGw# literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%samb-meme%bb.edn b/.config/nvim.bak/undodir/%root%repos%samb-meme%bb.edn new file mode 100644 index 0000000000000000000000000000000000000000..25b63ba9812af24338994acd177719990936d92d GIT binary patch literal 2008 zcmeHIziSjh6rPyN4>f{;6oSo=YB{(&vu6liC#15niQ0L4cazJS>e06efd+tf^@y5dO%GR^ZaQOOT{y{0VOxDzb&L}E&bx;^PHnwFRn!XMa zV~0jR>g1Un>9uxygB0h<>SQxy=g0tzVru93#@ia+&Z_(G@RlG%%<&4w_(>q*8UEW2 zP&wXkIcC)NE0pE3mkDK9)_P#ZRAg6wyPq-*%`pLcmL`v`ev4Y?HYFjyz2v=hi7t2^ zBnqU{{xJ6U;zq{tE_!Mg4~-{4ym=Rg*?um^UJxpcU@uLwcC2B|qQ`KWn&*Kg)VdR= z@kj>)v#oh;`KZtV&02Y63)9H(T<>Q|5~YL2UhMX6&WqzBBbos7HCat&hs|Epi;A7y zs6}yUJCkwRq9a(uS*lmBHN$4uUOhPACHu$71(u)~ISKRpbZY&GeLj=typG?zN$tcGO5k^tRu;#Am4umn({e@?|wj@@!}D%8yHGJNhlS$*nzlQkCs5`m_mBhyX<*!qYA;Q$j0J(559+t)Q Lec-GgeL49Bu+5sY literal 0 HcmV?d00001 diff --git a/.config/nvim.bak/undodir/%root%repos%samb-meme%resources%public%change-my-mind%index.html b/.config/nvim.bak/undodir/%root%repos%samb-meme%resources%public%change-my-mind%index.html new file mode 100644 index 0000000000000000000000000000000000000000..7941920c4705c4de7b2c2bb7b377230f06217514 GIT binary patch literal 4600 zcmeHLJ#Q015Z&0$2OtPd#D^kuvY%>_cT$WaVuUE&(7Hf~ zf`Sf-G>Ct|PoUu+5D=6I8XA~4x6e1WPePIG?nYYO?%SEYy?O6ueZC#H-mE{m*4}f) z4=;kfh0k~Xy!-j(u-mP?oVk4N$Kvx}^9wg$eO>#0>!WjSTH1|3>|)$%20M>8R?1PQ zv%OOfLjfLc#oJ38?N%6v_o~(Alk?@^X}sBqR?3y-Uol;hKzQ%GW>75+Zou$rI2B;l zb}*US7&0INTvq`W5*m^0k~C0)ejx~yUi5(}ixlNBGaQq0@mC{0DinImNoP0;7%Yt< z0u*avGxHc2qn45=D?0WMiT6<-VKG3XQAh?1o{X{>=Dd{Q!YRPamp)i7Wu#=1CQ|OH zl#2e1S#5 ZESRimBZf+t6oVR^g [!NOTE] +> See [Install Recipes](#Install-Recipes) for additional Windows and Linux specific notes +> and quick install snippets + +### Install Kickstart + +> [!NOTE] +> [Backup](#FAQ) your previous configuration (if any exists) + +Neovim's configurations are located under the following paths, depending on your OS: + +| OS | PATH | +| :- | :--- | +| Linux, MacOS | `$XDG_CONFIG_HOME/nvim`, `~/.config/nvim` | +| Windows (cmd)| `%localappdata%\nvim\` | +| Windows (powershell)| `$env:LOCALAPPDATA\nvim\` | + +#### Recommended Step + +[Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repo +so that you have your own copy that you can modify, then install by cloning the +fork to your machine using one of the commands below, depending on your OS. + +> [!NOTE] +> Your fork's URL will be something like this: +> `https://github.com//kickstart.nvim.git` + +You likely want to remove `lazy-lock.json` from your fork's `.gitignore` file +too - it's ignored in the kickstart repo to make maintenance easier, but it's +[recommended to track it in version control](https://lazy.folke.io/usage/lockfile). + +#### Clone kickstart.nvim + +> [!NOTE] +> If following the recommended step above (i.e., forking the repo), replace +> `nvim-lua` with `` in the commands below + +
Linux and Mac + +```sh +git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim +``` + +
+ +
Windows + +If you're using `cmd.exe`: + +``` +git clone https://github.com/nvim-lua/kickstart.nvim.git "%localappdata%\nvim" +``` + +If you're using `powershell.exe` + +``` +git clone https://github.com/nvim-lua/kickstart.nvim.git "${env:LOCALAPPDATA}\nvim" +``` + +
+ +### Post Installation + +Start Neovim + +```sh +nvim +``` + +That's it! Lazy will install all the plugins you have. Use `:Lazy` to view +the current plugin status. Hit `q` to close the window. + +#### Read The Friendly Documentation + +Read through the `init.lua` file in your configuration folder for more +information about extending and exploring Neovim. That also includes +examples of adding popularly requested plugins. + +> [!NOTE] +> For more information about a particular plugin check its repository's documentation. + + +### Getting Started + +[The Only Video You Need to Get Started with Neovim](https://youtu.be/m8C0Cq9Uv9o) + +### FAQ + +* What should I do if I already have a pre-existing Neovim configuration? + * You should back it up and then delete all associated files. + * This includes your existing init.lua and the Neovim files in `~/.local` + which can be deleted with `rm -rf ~/.local/share/nvim/` +* Can I keep my existing configuration in parallel to kickstart? + * Yes! You can use [NVIM_APPNAME](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME)`=nvim-NAME` + to maintain multiple configurations. For example, you can install the kickstart + configuration in `~/.config/nvim-kickstart` and create an alias: + ``` + alias nvim-kickstart='NVIM_APPNAME="nvim-kickstart" nvim' + ``` + When you run Neovim using `nvim-kickstart` alias it will use the alternative + config directory and the matching local directory + `~/.local/share/nvim-kickstart`. You can apply this approach to any Neovim + distribution that you would like to try out. +* What if I want to "uninstall" this configuration: + * See [lazy.nvim uninstall](https://lazy.folke.io/usage#-uninstalling) information +* Why is the kickstart `init.lua` a single file? Wouldn't it make sense to split it into multiple files? + * The main purpose of kickstart is to serve as a teaching tool and a reference + configuration that someone can easily use to `git clone` as a basis for their own. + As you progress in learning Neovim and Lua, you might consider splitting `init.lua` + into smaller parts. A fork of kickstart that does this while maintaining the + same functionality is available here: + * [kickstart-modular.nvim](https://github.com/dam9000/kickstart-modular.nvim) + * Discussions on this topic can be found here: + * [Restructure the configuration](https://github.com/nvim-lua/kickstart.nvim/issues/218) + * [Reorganize init.lua into a multi-file setup](https://github.com/nvim-lua/kickstart.nvim/pull/473) + +### Install Recipes + +Below you can find OS specific install instructions for Neovim and dependencies. + +After installing all the dependencies continue with the [Install Kickstart](#Install-Kickstart) step. + +#### Windows Installation + +
Windows with Microsoft C++ Build Tools and CMake +Installation may require installing build tools and updating the run command for `telescope-fzf-native` + +See `telescope-fzf-native` documentation for [more details](https://github.com/nvim-telescope/telescope-fzf-native.nvim#installation) + +This requires: + +- Install CMake and the Microsoft C++ Build Tools on Windows + +```lua +{'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' } +``` +
+
Windows with gcc/make using chocolatey +Alternatively, one can install gcc and make which don't require changing the config, +the easiest way is to use choco: + +1. install [chocolatey](https://chocolatey.org/install) +either follow the instructions on the page or use winget, +run in cmd as **admin**: +``` +winget install --accept-source-agreements chocolatey.chocolatey +``` + +2. install all requirements using choco, exit the previous cmd and +open a new one so that choco path is set, and run in cmd as **admin**: +``` +choco install -y neovim git ripgrep wget fd unzip gzip mingw make +``` +
+
WSL (Windows Subsystem for Linux) + +``` +wsl --install +wsl +sudo add-apt-repository ppa:neovim-ppa/unstable -y +sudo apt update +sudo apt install make gcc ripgrep unzip git xclip neovim +``` +
+ +#### Linux Install +
Ubuntu Install Steps + +``` +sudo add-apt-repository ppa:neovim-ppa/unstable -y +sudo apt update +sudo apt install make gcc ripgrep unzip git xclip neovim +``` +
+
Debian Install Steps + +``` +sudo apt update +sudo apt install make gcc ripgrep unzip git xclip curl + +# Now we install nvim +curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz +sudo rm -rf /opt/nvim-linux-x86_64 +sudo mkdir -p /opt/nvim-linux-x86_64 +sudo chmod a+rX /opt/nvim-linux-x86_64 +sudo tar -C /opt -xzf nvim-linux-x86_64.tar.gz + +# make it available in /usr/local/bin, distro installs to /usr/bin +sudo ln -sf /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/ +``` +
+
Fedora Install Steps + +``` +sudo dnf install -y gcc make git ripgrep fd-find unzip neovim +``` +
+ +
Arch Install Steps + +``` +sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim +``` +
+ diff --git a/.config/nvim/after/plugin/lsp.lua b/.config/nvim/after/plugin/lsp.lua deleted file mode 100644 index 3516483..0000000 --- a/.config/nvim/after/plugin/lsp.lua +++ /dev/null @@ -1,40 +0,0 @@ -local lsp = require('lsp-zero').preset({ - name = 'minimal', - set_lsp_keymaps = true, - manage_nvim_cmp = true, - suggest_lsp_servers = false, -}) -lsp.on_attach(function(client, bufnr) - local opts = { buffer = bufnr, remap = false } - - if client.name == "eslint" then - vim.cmd.LspStop('eslint') - return - end - - vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) - vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) - --vim.keymap.set("n", "fs", vim.lsp.buf.workspace_symbol, opts) - vim.keymap.set("n", "vd", vim.diagnostic.open_float, opts) - vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts) - vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) - vim.keymap.set("n", "ca", vim.lsp.buf.code_action, opts) - vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) - vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) - vim.keymap.set("i", "", vim.lsp.buf.signature_help, opts) -end) - -local cmp = require('cmp') -local cmp_select = { behavior = cmp.SelectBehavior.Select } -lsp.setup_nvim_cmp({ - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.select_prev_item(cmp_select), - [''] = cmp.mapping.select_next_item(cmp_select), - [''] = cmp.mapping.confirm({ select = true }), - }), -}) - -lsp.setup() diff --git a/.config/nvim/doc/kickstart.txt b/.config/nvim/doc/kickstart.txt new file mode 100644 index 0000000..cb87ac3 --- /dev/null +++ b/.config/nvim/doc/kickstart.txt @@ -0,0 +1,24 @@ +================================================================================ +INTRODUCTION *kickstart.nvim* + +Kickstart.nvim is a project to help you get started on your neovim journey. + + *kickstart-is-not* +It is not: +- Complete framework for every plugin under the sun +- Place to add every plugin that could ever be useful + + *kickstart-is* +It is: +- Somewhere that has a good start for the most common "IDE" type features: + - autocompletion + - goto-definition + - find references + - fuzzy finding + - and hinting at what more can be done :) +- A place to _kickstart_ your journey. + - You should fork this project and use/modify it so that it matches your + style and preferences. If you don't want to do that, there are probably + other projects that would fit much better for you (and that's great!)! + + vim:tw=78:ts=8:ft=help:norl: diff --git a/.config/nvim/doc/tags b/.config/nvim/doc/tags new file mode 100644 index 0000000..687ae77 --- /dev/null +++ b/.config/nvim/doc/tags @@ -0,0 +1,3 @@ +kickstart-is kickstart.txt /*kickstart-is* +kickstart-is-not kickstart.txt /*kickstart-is-not* +kickstart.nvim kickstart.txt /*kickstart.nvim* diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 479b466..669a514 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -1 +1,1029 @@ -require("ajet") +--[[ + +===================================================================== +==================== READ THIS BEFORE CONTINUING ==================== +===================================================================== +======== .-----. ======== +======== .----------------------. | === | ======== +======== |.-""""""""""""""""""-.| |-----| ======== +======== || || | === | ======== +======== || KICKSTART.NVIM || |-----| ======== +======== || || | === | ======== +======== || || |-----| ======== +======== ||:Tutor || |:::::| ======== +======== |'-..................-'| |____o| ======== +======== `"")----------------(""` ___________ ======== +======== /::::::::::| |::::::::::\ \ no mouse \ ======== +======== /:::========| |==hjkl==:::\ \ required \ ======== +======== '""""""""""""' '""""""""""""' '""""""""""' ======== +======== ======== +===================================================================== +===================================================================== + +What is Kickstart? + + Kickstart.nvim is *not* a distribution. + + Kickstart.nvim is a starting point for your own configuration. + The goal is that you can read every line of code, top-to-bottom, understand + what your configuration is doing, and modify it to suit your needs. + + Once you've done that, you can start exploring, configuring and tinkering to + make Neovim your own! That might mean leaving Kickstart just the way it is for a while + or immediately breaking it into modular pieces. It's up to you! + + If you don't know anything about Lua, I recommend taking some time to read through + a guide. One possible example which will only take 10-15 minutes: + - https://learnxinyminutes.com/docs/lua/ + + After understanding a bit more about Lua, you can use `:help lua-guide` as a + reference for how Neovim integrates Lua. + - :help lua-guide + - (or HTML version): https://neovim.io/doc/user/lua-guide.html + +Kickstart Guide: + + TODO: The very first thing you should do is to run the command `:Tutor` in Neovim. + + If you don't know what this means, type the following: + - + - : + - Tutor + - + + (If you already know the Neovim basics, you can skip this step.) + + Once you've completed that, you can continue working through **AND READING** the rest + of the kickstart init.lua. + + Next, run AND READ `:help`. + This will open up a help window with some basic information + about reading, navigating and searching the builtin help documentation. + + This should be the first place you go to look when you're stuck or confused + with something. It's one of my favorite Neovim features. + + MOST IMPORTANTLY, we provide a keymap "sh" to [s]earch the [h]elp documentation, + which is very useful when you're not exactly sure of what you're looking for. + + I have left several `:help X` comments throughout the init.lua + These are hints about where to find more information about the relevant settings, + plugins or Neovim features used in Kickstart. + + NOTE: Look for lines like this + + Throughout the file. These are for you, the reader, to help you understand what is happening. + Feel free to delete them once you know what you're doing, but they should serve as a guide + for when you are first encountering a few different constructs in your Neovim config. + +If you experience any errors while trying to install kickstart, run `:checkhealth` for more info. + +I hope you enjoy your Neovim journey, +- TJ + +P.S. You can delete this when you're done too. It's your config now! :) +--]] + +-- Set as the leader key +-- See `:help mapleader` +-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used) +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' + +-- Set to true if you have a Nerd Font installed and selected in the terminal +vim.g.have_nerd_font = false + +-- [[ Setting options ]] +-- See `:help vim.o` +-- NOTE: You can change these options as you wish! +-- For more options, you can see `:help option-list` + +-- Make line numbers default +vim.o.number = true +-- You can also add relative line numbers, to help with jumping. +-- Experiment for yourself to see if you like it! +-- vim.o.relativenumber = true + +-- Enable mouse mode, can be useful for resizing splits for example! +vim.o.mouse = 'a' + +-- Don't show the mode, since it's already in the status line +vim.o.showmode = false + +-- Sync clipboard between OS and Neovim. +-- Schedule the setting after `UiEnter` because it can increase startup-time. +-- Remove this option if you want your OS clipboard to remain independent. +-- See `:help 'clipboard'` +vim.schedule(function() + vim.o.clipboard = 'unnamedplus' +end) + +-- Enable break indent +vim.o.breakindent = true + +-- Save undo history +vim.o.undofile = true + +-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term +vim.o.ignorecase = true +vim.o.smartcase = true + +-- Keep signcolumn on by default +vim.o.signcolumn = 'yes' + +-- Decrease update time +vim.o.updatetime = 250 + +-- Decrease mapped sequence wait time +vim.o.timeoutlen = 300 + +-- Configure how new splits should be opened +vim.o.splitright = true +vim.o.splitbelow = true + +-- Sets how neovim will display certain whitespace characters in the editor. +-- See `:help 'list'` +-- and `:help 'listchars'` +-- +-- Notice listchars is set using `vim.opt` instead of `vim.o`. +-- It is very similar to `vim.o` but offers an interface for conveniently interacting with tables. +-- See `:help lua-options` +-- and `:help lua-options-guide` +vim.o.list = true +vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } + +-- Preview substitutions live, as you type! +vim.o.inccommand = 'split' + +-- Show which line your cursor is on +vim.o.cursorline = true + +-- Minimal number of screen lines to keep above and below the cursor. +vim.o.scrolloff = 10 + +-- if performing an operation that would fail due to unsaved changes in the buffer (like `:q`), +-- instead raise a dialog asking if you wish to save the current file(s) +-- See `:help 'confirm'` +vim.o.confirm = true + +-- [[ Basic Keymaps ]] +-- See `:help vim.keymap.set()` + +-- Clear highlights on search when pressing in normal mode +-- See `:help hlsearch` +vim.keymap.set('n', '', 'nohlsearch') + +-- Diagnostic keymaps +vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) + +-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier +-- for people to discover. Otherwise, you normally need to press , which +-- is not what someone will guess without a bit more experience. +-- +-- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping +-- or just use to exit terminal mode +vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' }) + +-- TIP: Disable arrow keys in normal mode +-- vim.keymap.set('n', '', 'echo "Use h to move!!"') +-- vim.keymap.set('n', '', 'echo "Use l to move!!"') +-- vim.keymap.set('n', '', 'echo "Use k to move!!"') +-- vim.keymap.set('n', '', 'echo "Use j to move!!"') + +-- Keybinds to make split navigation easier. +-- Use CTRL+ to switch between windows +-- +-- See `:help wincmd` for a list of all window commands +vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' }) +vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' }) +vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) +vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) + +-- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes +-- vim.keymap.set("n", "", "H", { desc = "Move window to the left" }) +-- vim.keymap.set("n", "", "L", { desc = "Move window to the right" }) +-- vim.keymap.set("n", "", "J", { desc = "Move window to the lower" }) +-- vim.keymap.set("n", "", "K", { desc = "Move window to the upper" }) + +-- [[ Basic Autocommands ]] +-- See `:help lua-guide-autocommands` + +-- Highlight when yanking (copying) text +-- Try it with `yap` in normal mode +-- See `:help vim.hl.on_yank()` +vim.api.nvim_create_autocmd('TextYankPost', { + desc = 'Highlight when yanking (copying) text', + group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), + callback = function() + vim.hl.on_yank() + end, +}) + +-- [[ Install `lazy.nvim` plugin manager ]] +-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info +local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = 'https://github.com/folke/lazy.nvim.git' + local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } + if vim.v.shell_error ~= 0 then + error('Error cloning lazy.nvim:\n' .. out) + end +end + +---@type vim.Option +local rtp = vim.opt.rtp +rtp:prepend(lazypath) + +-- [[ Configure and install plugins ]] +-- +-- To check the current status of your plugins, run +-- :Lazy +-- +-- You can press `?` in this menu for help. Use `:q` to close the window +-- +-- To update plugins you can run +-- :Lazy update +-- +-- NOTE: Here is where you install your plugins. +require('lazy').setup({ + -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). + 'NMAC427/guess-indent.nvim', -- Detect tabstop and shiftwidth automatically + + -- NOTE: Plugins can also be added by using a table, + -- with the first argument being the link and the following + -- keys can be used to configure plugin behavior/loading/etc. + -- + -- Use `opts = {}` to automatically pass options to a plugin's `setup()` function, forcing the plugin to be loaded. + -- + + -- Alternatively, use `config = function() ... end` for full control over the configuration. + -- If you prefer to call `setup` explicitly, use: + -- { + -- 'lewis6991/gitsigns.nvim', + -- config = function() + -- require('gitsigns').setup({ + -- -- Your gitsigns configuration here + -- }) + -- end, + -- } + -- + -- Here is a more advanced example where we pass configuration + -- options to `gitsigns.nvim`. + -- + -- See `:help gitsigns` to understand what the configuration keys do + { -- Adds git related signs to the gutter, as well as utilities for managing changes + 'lewis6991/gitsigns.nvim', + opts = { + signs = { + add = { text = '+' }, + change = { text = '~' }, + delete = { text = '_' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + }, + }, + }, + + -- NOTE: Plugins can also be configured to run Lua code when they are loaded. + -- + -- This is often very useful to both group configuration, as well as handle + -- lazy loading plugins that don't need to be loaded immediately at startup. + -- + -- For example, in the following configuration, we use: + -- event = 'VimEnter' + -- + -- which loads which-key before all the UI elements are loaded. Events can be + -- normal autocommands events (`:help autocmd-events`). + -- + -- Then, because we use the `opts` key (recommended), the configuration runs + -- after the plugin has been loaded as `require(MODULE).setup(opts)`. + + { -- Useful plugin to show you pending keybinds. + 'folke/which-key.nvim', + event = 'VimEnter', -- Sets the loading event to 'VimEnter' + opts = { + -- delay between pressing a key and opening which-key (milliseconds) + -- this setting is independent of vim.o.timeoutlen + delay = 0, + icons = { + -- set icon mappings to true if you have a Nerd Font + mappings = vim.g.have_nerd_font, + -- If you are using a Nerd Font: set icons.keys to an empty table which will use the + -- default which-key.nvim defined Nerd Font icons, otherwise define a string table + keys = vim.g.have_nerd_font and {} or { + Up = ' ', + Down = ' ', + Left = ' ', + Right = ' ', + C = ' ', + M = ' ', + D = ' ', + S = ' ', + CR = ' ', + Esc = ' ', + ScrollWheelDown = ' ', + ScrollWheelUp = ' ', + NL = ' ', + BS = ' ', + Space = ' ', + Tab = ' ', + F1 = '', + F2 = '', + F3 = '', + F4 = '', + F5 = '', + F6 = '', + F7 = '', + F8 = '', + F9 = '', + F10 = '', + F11 = '', + F12 = '', + }, + }, + + -- Document existing key chains + spec = { + { 's', group = '[S]earch' }, + { 't', group = '[T]oggle' }, + { 'h', group = 'Git [H]unk', mode = { 'n', 'v' } }, + }, + }, + }, + + -- NOTE: Plugins can specify dependencies. + -- + -- The dependencies are proper plugin specifications as well - anything + -- you do for a plugin at the top level, you can do for a dependency. + -- + -- Use the `dependencies` key to specify the dependencies of a particular plugin + + { -- Fuzzy Finder (files, lsp, etc) + 'nvim-telescope/telescope.nvim', + event = 'VimEnter', + dependencies = { + 'nvim-lua/plenary.nvim', + { -- If encountering errors, see telescope-fzf-native README for installation instructions + 'nvim-telescope/telescope-fzf-native.nvim', + + -- `build` is used to run some command when the plugin is installed/updated. + -- This is only run then, not every time Neovim starts up. + build = 'make', + + -- `cond` is a condition used to determine whether this plugin should be + -- installed and loaded. + cond = function() + return vim.fn.executable 'make' == 1 + end, + }, + { 'nvim-telescope/telescope-ui-select.nvim' }, + + -- Useful for getting pretty icons, but requires a Nerd Font. + { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font }, + }, + config = function() + -- Telescope is a fuzzy finder that comes with a lot of different things that + -- it can fuzzy find! It's more than just a "file finder", it can search + -- many different aspects of Neovim, your workspace, LSP, and more! + -- + -- The easiest way to use Telescope, is to start by doing something like: + -- :Telescope help_tags + -- + -- After running this command, a window will open up and you're able to + -- type in the prompt window. You'll see a list of `help_tags` options and + -- a corresponding preview of the help. + -- + -- Two important keymaps to use while in Telescope are: + -- - Insert mode: + -- - Normal mode: ? + -- + -- This opens a window that shows you all of the keymaps for the current + -- Telescope picker. This is really useful to discover what Telescope can + -- do as well as how to actually do it! + + -- [[ Configure Telescope ]] + -- See `:help telescope` and `:help telescope.setup()` + require('telescope').setup { + -- You can put your default mappings / updates / etc. in here + -- All the info you're looking for is in `:help telescope.setup()` + -- + -- defaults = { + -- mappings = { + -- i = { [''] = 'to_fuzzy_refine' }, + -- }, + -- }, + -- pickers = {} + extensions = { + ['ui-select'] = { + require('telescope.themes').get_dropdown(), + }, + }, + } + + -- Enable Telescope extensions if they are installed + pcall(require('telescope').load_extension, 'fzf') + pcall(require('telescope').load_extension, 'ui-select') + + -- See `:help telescope.builtin` + local builtin = require 'telescope.builtin' + vim.keymap.set('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) + vim.keymap.set('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) + vim.keymap.set('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' }) + vim.keymap.set('n', 'ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) + vim.keymap.set('n', 'sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) + vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) + vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) + vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) + vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) + vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) + + -- Slightly advanced example of overriding default behavior and theme + vim.keymap.set('n', '/', function() + -- You can pass additional configuration to Telescope to change the theme, layout, etc. + builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { + winblend = 10, + previewer = false, + }) + end, { desc = '[/] Fuzzily search in current buffer' }) + + -- It's also possible to pass additional configuration options. + -- See `:help telescope.builtin.live_grep()` for information about particular keys + vim.keymap.set('n', 's/', function() + builtin.live_grep { + grep_open_files = true, + prompt_title = 'Live Grep in Open Files', + } + end, { desc = '[S]earch [/] in Open Files' }) + + -- Shortcut for searching your Neovim configuration files + vim.keymap.set('n', 'sn', function() + builtin.find_files { cwd = vim.fn.stdpath 'config' } + end, { desc = '[S]earch [N]eovim files' }) + end, + }, + + -- LSP Plugins + { + -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins + -- used for completion, annotations and signatures of Neovim apis + 'folke/lazydev.nvim', + ft = 'lua', + opts = { + library = { + -- Load luvit types when the `vim.uv` word is found + { path = '${3rd}/luv/library', words = { 'vim%.uv' } }, + }, + }, + }, + { + -- Main LSP Configuration + 'neovim/nvim-lspconfig', + dependencies = { + -- Automatically install LSPs and related tools to stdpath for Neovim + -- Mason must be loaded before its dependents so we need to set it up here. + -- NOTE: `opts = {}` is the same as calling `require('mason').setup({})` + { 'mason-org/mason.nvim', opts = {} }, + 'mason-org/mason-lspconfig.nvim', + 'WhoIsSethDaniel/mason-tool-installer.nvim', + + -- Useful status updates for LSP. + { 'j-hui/fidget.nvim', opts = {} }, + + -- Allows extra capabilities provided by blink.cmp + 'saghen/blink.cmp', + }, + config = function() + -- Brief aside: **What is LSP?** + -- + -- LSP is an initialism you've probably heard, but might not understand what it is. + -- + -- LSP stands for Language Server Protocol. It's a protocol that helps editors + -- and language tooling communicate in a standardized fashion. + -- + -- In general, you have a "server" which is some tool built to understand a particular + -- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers + -- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone + -- processes that communicate with some "client" - in this case, Neovim! + -- + -- LSP provides Neovim with features like: + -- - Go to definition + -- - Find references + -- - Autocompletion + -- - Symbol Search + -- - and more! + -- + -- Thus, Language Servers are external tools that must be installed separately from + -- Neovim. This is where `mason` and related plugins come into play. + -- + -- If you're wondering about lsp vs treesitter, you can check out the wonderfully + -- and elegantly composed help section, `:help lsp-vs-treesitter` + + -- This function gets run when an LSP attaches to a particular buffer. + -- That is to say, every time a new file is opened that is associated with + -- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this + -- function will be executed to configure the current buffer + vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }), + callback = function(event) + -- NOTE: Remember that Lua is a real programming language, and as such it is possible + -- to define small helper and utility functions so you don't have to repeat yourself. + -- + -- In this case, we create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. + local map = function(keys, func, desc, mode) + mode = mode or 'n' + vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc }) + end + + -- Rename the variable under your cursor. + -- Most Language Servers support renaming across files, etc. + map('grn', vim.lsp.buf.rename, '[R]e[n]ame') + + -- Execute a code action, usually your cursor needs to be on top of an error + -- or a suggestion from your LSP for this to activate. + map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' }) + + -- Find references for the word under your cursor. + map('grr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') + + -- Jump to the implementation of the word under your cursor. + -- Useful when your language has ways of declaring types without an actual implementation. + map('gri', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') + + -- Jump to the definition of the word under your cursor. + -- This is where a variable was first declared, or where a function is defined, etc. + -- To jump back, press . + map('grd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') + + -- WARN: This is not Goto Definition, this is Goto Declaration. + -- For example, in C this would take you to the header. + map('grD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') + + -- Fuzzy find all the symbols in your current document. + -- Symbols are things like variables, functions, types, etc. + map('gO', require('telescope.builtin').lsp_document_symbols, 'Open Document Symbols') + + -- Fuzzy find all the symbols in your current workspace. + -- Similar to document symbols, except searches over your entire project. + map('gW', require('telescope.builtin').lsp_dynamic_workspace_symbols, 'Open Workspace Symbols') + + -- Jump to the type of the word under your cursor. + -- Useful when you're not sure what type a variable is and you want to see + -- the definition of its *type*, not where it was *defined*. + map('grt', require('telescope.builtin').lsp_type_definitions, '[G]oto [T]ype Definition') + + -- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10) + ---@param client vim.lsp.Client + ---@param method vim.lsp.protocol.Method + ---@param bufnr? integer some lsp support methods only in specific files + ---@return boolean + local function client_supports_method(client, method, bufnr) + if vim.fn.has 'nvim-0.11' == 1 then + return client:supports_method(method, bufnr) + else + return client.supports_method(method, { bufnr = bufnr }) + end + end + + -- The following two autocommands are used to highlight references of the + -- word under your cursor when your cursor rests there for a little while. + -- See `:help CursorHold` for information about when this is executed + -- + -- When you move your cursor, the highlights will be cleared (the second autocommand). + local client = vim.lsp.get_client_by_id(event.data.client_id) + if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then + local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false }) + vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { + buffer = event.buf, + group = highlight_augroup, + callback = vim.lsp.buf.document_highlight, + }) + + vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { + buffer = event.buf, + group = highlight_augroup, + callback = vim.lsp.buf.clear_references, + }) + + vim.api.nvim_create_autocmd('LspDetach', { + group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }), + callback = function(event2) + vim.lsp.buf.clear_references() + vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf } + end, + }) + end + + -- The following code creates a keymap to toggle inlay hints in your + -- code, if the language server you are using supports them + -- + -- This may be unwanted, since they displace some of your code + if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then + map('th', function() + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) + end, '[T]oggle Inlay [H]ints') + end + end, + }) + + -- Diagnostic Config + -- See :help vim.diagnostic.Opts + vim.diagnostic.config { + severity_sort = true, + float = { border = 'rounded', source = 'if_many' }, + underline = { severity = vim.diagnostic.severity.ERROR }, + signs = vim.g.have_nerd_font and { + text = { + [vim.diagnostic.severity.ERROR] = '󰅚 ', + [vim.diagnostic.severity.WARN] = '󰀪 ', + [vim.diagnostic.severity.INFO] = '󰋽 ', + [vim.diagnostic.severity.HINT] = '󰌶 ', + }, + } or {}, + virtual_text = { + source = 'if_many', + spacing = 2, + format = function(diagnostic) + local diagnostic_message = { + [vim.diagnostic.severity.ERROR] = diagnostic.message, + [vim.diagnostic.severity.WARN] = diagnostic.message, + [vim.diagnostic.severity.INFO] = diagnostic.message, + [vim.diagnostic.severity.HINT] = diagnostic.message, + } + return diagnostic_message[diagnostic.severity] + end, + }, + } + + -- LSP servers and clients are able to communicate to each other what features they support. + -- By default, Neovim doesn't support everything that is in the LSP specification. + -- When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities. + -- So, we create new capabilities with blink.cmp, and then broadcast that to the servers. + local capabilities = require('blink.cmp').get_lsp_capabilities() + + -- Enable the following language servers + -- Feel free to add/remove any LSPs that you want here. They will automatically be installed. + -- + -- Add any additional override configuration in the following tables. Available keys are: + -- - cmd (table): Override the default command used to start the server + -- - filetypes (table): Override the default list of associated filetypes for the server + -- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features. + -- - settings (table): Override the default settings passed when initializing the server. + -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ + local servers = { + -- clangd = {}, + -- gopls = {}, + -- pyright = {}, + -- rust_analyzer = {}, + -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs + -- + -- Some languages (like typescript) have entire language plugins that can be useful: + -- https://github.com/pmizio/typescript-tools.nvim + -- + -- But for many setups, the LSP (`ts_ls`) will work just fine + -- ts_ls = {}, + -- + + lua_ls = { + -- cmd = { ... }, + -- filetypes = { ... }, + -- capabilities = {}, + settings = { + Lua = { + completion = { + callSnippet = 'Replace', + }, + -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings + -- diagnostics = { disable = { 'missing-fields' } }, + }, + }, + }, + } + + -- Ensure the servers and tools above are installed + -- + -- To check the current status of installed tools and/or manually install + -- other tools, you can run + -- :Mason + -- + -- You can press `g?` for help in this menu. + -- + -- `mason` had to be setup earlier: to configure its options see the + -- `dependencies` table for `nvim-lspconfig` above. + -- + -- You can add other tools here that you want Mason to install + -- for you, so that they are available from within Neovim. + local ensure_installed = vim.tbl_keys(servers or {}) + vim.list_extend(ensure_installed, { + 'stylua', -- Used to format Lua code + }) + require('mason-tool-installer').setup { ensure_installed = ensure_installed } + + require('mason-lspconfig').setup { + ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer) + automatic_installation = false, + handlers = { + function(server_name) + local server = servers[server_name] or {} + -- This handles overriding only values explicitly passed + -- by the server configuration above. Useful when disabling + -- certain features of an LSP (for example, turning off formatting for ts_ls) + server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) + require('lspconfig')[server_name].setup(server) + end, + }, + } + end, + }, + + { -- Autoformat + 'stevearc/conform.nvim', + event = { 'BufWritePre' }, + cmd = { 'ConformInfo' }, + keys = { + { + 'f', + function() + require('conform').format { async = true, lsp_format = 'fallback' } + end, + mode = '', + desc = '[F]ormat buffer', + }, + }, + opts = { + notify_on_error = false, + format_on_save = function(bufnr) + -- Disable "format_on_save lsp_fallback" for languages that don't + -- have a well standardized coding style. You can add additional + -- languages here or re-enable it for the disabled ones. + local disable_filetypes = { c = true, cpp = true } + if disable_filetypes[vim.bo[bufnr].filetype] then + return nil + else + return { + timeout_ms = 500, + lsp_format = 'fallback', + } + end + end, + formatters_by_ft = { + lua = { 'stylua' }, + -- Conform can also run multiple formatters sequentially + -- python = { "isort", "black" }, + -- + -- You can use 'stop_after_first' to run the first available formatter from the list + -- javascript = { "prettierd", "prettier", stop_after_first = true }, + }, + }, + }, + + { -- Autocompletion + 'saghen/blink.cmp', + event = 'VimEnter', + version = '1.*', + dependencies = { + -- Snippet Engine + { + 'L3MON4D3/LuaSnip', + version = '2.*', + build = (function() + -- Build Step is needed for regex support in snippets. + -- This step is not supported in many windows environments. + -- Remove the below condition to re-enable on windows. + if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then + return + end + return 'make install_jsregexp' + end)(), + dependencies = { + -- `friendly-snippets` contains a variety of premade snippets. + -- See the README about individual language/framework/plugin snippets: + -- https://github.com/rafamadriz/friendly-snippets + -- { + -- 'rafamadriz/friendly-snippets', + -- config = function() + -- require('luasnip.loaders.from_vscode').lazy_load() + -- end, + -- }, + }, + opts = {}, + }, + 'folke/lazydev.nvim', + }, + --- @module 'blink.cmp' + --- @type blink.cmp.Config + opts = { + keymap = { + -- 'default' (recommended) for mappings similar to built-in completions + -- to accept ([y]es) the completion. + -- This will auto-import if your LSP supports it. + -- This will expand snippets if the LSP sent a snippet. + -- 'super-tab' for tab to accept + -- 'enter' for enter to accept + -- 'none' for no mappings + -- + -- For an understanding of why the 'default' preset is recommended, + -- you will need to read `:help ins-completion` + -- + -- No, but seriously. Please read `:help ins-completion`, it is really good! + -- + -- All presets have the following mappings: + -- /: move to right/left of your snippet expansion + -- : Open menu or open docs if already open + -- / or /: Select next/previous item + -- : Hide menu + -- : Toggle signature help + -- + -- See :h blink-cmp-config-keymap for defining your own keymap + preset = 'super-tab', + + -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: + -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps + }, + + appearance = { + -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' + -- Adjusts spacing to ensure icons are aligned + nerd_font_variant = 'mono', + }, + + completion = { + -- By default, you may press `` to show the documentation. + -- Optionally, set `auto_show = true` to show the documentation after a delay. + documentation = { auto_show = false, auto_show_delay_ms = 500 }, + }, + + sources = { + default = { 'lsp', 'path', 'snippets', 'lazydev' }, + providers = { + lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 }, + }, + }, + + snippets = { preset = 'luasnip' }, + + -- Blink.cmp includes an optional, recommended rust fuzzy matcher, + -- which automatically downloads a prebuilt binary when enabled. + -- + -- By default, we use the Lua implementation instead, but you may enable + -- the rust implementation via `'prefer_rust_with_warning'` + -- + -- See :h blink-cmp-config-fuzzy for more information + fuzzy = { implementation = 'lua' }, + + -- Shows a signature help window while you type arguments for a function + signature = { enabled = true }, + }, + }, + + { -- You can easily change to a different colorscheme. + -- Change the name of the colorscheme plugin below, and then + -- change the command in the config to whatever the name of that colorscheme is. + -- + -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. + 'folke/tokyonight.nvim', + priority = 1000, -- Make sure to load this before all the other start plugins. + config = function() + ---@diagnostic disable-next-line: missing-fields + require('tokyonight').setup { + styles = { + comments = { italic = false }, -- Disable italics in comments + }, + } + + -- Load the colorscheme here. + -- Like many other themes, this one has different styles, and you could load + -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. + vim.cmd.colorscheme 'tokyonight-night' + end, + }, + + -- Highlight todo, notes, etc in comments + { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, + + -- conjure + { + 'Olical/conjure', + ft = { 'clojure', 'fennel', 'python' }, -- etc + lazy = true, + init = function() + -- Set configuration options here + -- Uncomment this to get verbose logging to help diagnose internal Conjure issues + -- This is VERY helpful when reporting an issue with the project + -- vim.g["conjure#debug"] = true + end, + }, + + { -- Collection of various small independent plugins/modules + 'echasnovski/mini.nvim', + config = function() + -- Better Around/Inside textobjects + -- + -- Examples: + -- - va) - [V]isually select [A]round [)]paren + -- - yinq - [Y]ank [I]nside [N]ext [Q]uote + -- - ci' - [C]hange [I]nside [']quote + require('mini.ai').setup { n_lines = 500 } + + -- Add/delete/replace surroundings (brackets, quotes, etc.) + -- + -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren + -- - sd' - [S]urround [D]elete [']quotes + -- - sr)' - [S]urround [R]eplace [)] ['] + require('mini.surround').setup() + + -- Simple and easy statusline. + -- You could remove this setup call if you don't like it, + -- and try some other statusline plugin + local statusline = require 'mini.statusline' + -- set use_icons to true if you have a Nerd Font + statusline.setup { use_icons = vim.g.have_nerd_font } + + -- You can configure sections in the statusline by overriding their + -- default behavior. For example, here we set the section for + -- cursor location to LINE:COLUMN + ---@diagnostic disable-next-line: duplicate-set-field + statusline.section_location = function() + return '%2l:%-2v' + end + + -- ... and there is more! + -- Check out: https://github.com/echasnovski/mini.nvim + end, + }, + { -- Highlight, edit, and navigate code + 'nvim-treesitter/nvim-treesitter', + build = ':TSUpdate', + main = 'nvim-treesitter.configs', -- Sets main module to use for opts + -- [[ Configure Treesitter ]] See `:help nvim-treesitter` + opts = { + ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }, + -- Autoinstall languages that are not installed + auto_install = true, + highlight = { + enable = true, + -- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. + -- If you are experiencing weird indenting issues, add the language to + -- the list of additional_vim_regex_highlighting and disabled languages for indent. + additional_vim_regex_highlighting = { 'ruby' }, + }, + indent = { enable = true, disable = { 'ruby' } }, + }, + -- There are additional nvim-treesitter modules that you can use to interact + -- with nvim-treesitter. You should go explore a few and see what interests you: + -- + -- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` + -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context + -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects + }, + + -- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the + -- init.lua. If you want these files, they are in the repository, so you can just download them and + -- place them in the correct locations. + + -- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for Kickstart + -- + -- Here are some example plugins that I've included in the Kickstart repository. + -- Uncomment any of the lines below to enable them (you will need to restart nvim). + -- + -- require 'kickstart.plugins.debug', + -- require 'kickstart.plugins.indent_line', + -- require 'kickstart.plugins.lint', + -- require 'kickstart.plugins.autopairs', + -- require 'kickstart.plugins.neo-tree', + -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps + + -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` + -- This is the easiest way to modularize your config. + -- + -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. + -- { import = 'custom.plugins' }, + -- + -- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec` + -- Or use telescope! + -- In normal mode type `sh` then write `lazy.nvim-plugin` + -- you can continue same window with `sr` which resumes last telescope search +}, { + ui = { + -- If you are using a Nerd Font: set icons to an empty table which will use the + -- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table + icons = vim.g.have_nerd_font and {} or { + cmd = '⌘', + config = '🛠', + event = '📅', + ft = '📂', + init = '⚙', + keys = '🗝', + plugin = '🔌', + runtime = '💻', + require = '🌙', + source = '📄', + start = '🚀', + task = '📌', + lazy = '💤 ', + }, + }, +}) + +-- The line beneath this is called `modeline`. See `:help modeline` +-- vim: ts=2 sts=2 sw=2 et diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..214ec3d --- /dev/null +++ b/.config/nvim/lazy-lock.json @@ -0,0 +1,25 @@ +{ + "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, + "blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" }, + "cmp-conjure": { "branch": "master", "commit": "8c9a88efedc0e5bf3165baa6af8a407afe29daf6" }, + "conform.nvim": { "branch": "master", "commit": "973f3cb73887d510321653044791d7937c7ec0fa" }, + "conjure": { "branch": "main", "commit": "0ac12d481141555cc4baa0ad656b590ed30d2090" }, + "fidget.nvim": { "branch": "main", "commit": "4ec7bed6c86b671ddde03ca1b227343cfa3e65fa" }, + "gitsigns.nvim": { "branch": "main", "commit": "8270378ab83540b03d09c0194ba3e208f9d0cb72" }, + "guess-indent.nvim": { "branch": "main", "commit": "84a4987ff36798c2fc1169cbaff67960aed9776f" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "844d247d998c2f9a6a3baad8bb9748edc55ce69f" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" }, + "mason.nvim": { "branch": "main", "commit": "9e25c98d4826998460926f8c5c2284848d80ae89" }, + "mini.nvim": { "branch": "main", "commit": "efff26174ca363c059f92e906753db47e81d870b" }, + "nvim-lspconfig": { "branch": "master", "commit": "63a38440989c58e1f100373ab603fd24665bdc9a" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, + "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, + "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, + "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, + "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, + "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } +} diff --git a/.config/nvim/lua/custom/plugins/init.lua b/.config/nvim/lua/custom/plugins/init.lua new file mode 100644 index 0000000..be0eb9d --- /dev/null +++ b/.config/nvim/lua/custom/plugins/init.lua @@ -0,0 +1,5 @@ +-- You can add your own plugins here or in other files in this directory! +-- I promise not to create any merge conflicts in this directory :) +-- +-- See the kickstart.nvim README for more information +return {} diff --git a/.config/nvim/lua/kickstart/health.lua b/.config/nvim/lua/kickstart/health.lua new file mode 100644 index 0000000..b59d086 --- /dev/null +++ b/.config/nvim/lua/kickstart/health.lua @@ -0,0 +1,52 @@ +--[[ +-- +-- This file is not required for your own configuration, +-- but helps people determine if their system is setup correctly. +-- +--]] + +local check_version = function() + local verstr = tostring(vim.version()) + if not vim.version.ge then + vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr)) + return + end + + if vim.version.ge(vim.version(), '0.10-dev') then + vim.health.ok(string.format("Neovim version is: '%s'", verstr)) + else + vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr)) + end +end + +local check_external_reqs = function() + -- Basic utils: `git`, `make`, `unzip` + for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do + local is_executable = vim.fn.executable(exe) == 1 + if is_executable then + vim.health.ok(string.format("Found executable: '%s'", exe)) + else + vim.health.warn(string.format("Could not find executable: '%s'", exe)) + end + end + + return true +end + +return { + check = function() + vim.health.start 'kickstart.nvim' + + vim.health.info [[NOTE: Not every warning is a 'must-fix' in `:checkhealth` + + Fix only warnings for plugins and languages you intend to use. + Mason will give warnings for languages that are not installed. + You do not need to install, unless you want to use those languages!]] + + local uv = vim.uv or vim.loop + vim.health.info('System Information: ' .. vim.inspect(uv.os_uname())) + + check_version() + check_external_reqs() + end, +} diff --git a/.config/nvim/lua/kickstart/plugins/autopairs.lua b/.config/nvim/lua/kickstart/plugins/autopairs.lua new file mode 100644 index 0000000..386d392 --- /dev/null +++ b/.config/nvim/lua/kickstart/plugins/autopairs.lua @@ -0,0 +1,8 @@ +-- autopairs +-- https://github.com/windwp/nvim-autopairs + +return { + 'windwp/nvim-autopairs', + event = 'InsertEnter', + opts = {}, +} diff --git a/.config/nvim/lua/kickstart/plugins/debug.lua b/.config/nvim/lua/kickstart/plugins/debug.lua new file mode 100644 index 0000000..8e332bf --- /dev/null +++ b/.config/nvim/lua/kickstart/plugins/debug.lua @@ -0,0 +1,148 @@ +-- debug.lua +-- +-- Shows how to use the DAP plugin to debug your code. +-- +-- Primarily focused on configuring the debugger for Go, but can +-- be extended to other languages as well. That's why it's called +-- kickstart.nvim and not kitchen-sink.nvim ;) + +return { + -- NOTE: Yes, you can install new plugins here! + 'mfussenegger/nvim-dap', + -- NOTE: And you can specify dependencies as well + dependencies = { + -- Creates a beautiful debugger UI + 'rcarriga/nvim-dap-ui', + + -- Required dependency for nvim-dap-ui + 'nvim-neotest/nvim-nio', + + -- Installs the debug adapters for you + 'mason-org/mason.nvim', + 'jay-babu/mason-nvim-dap.nvim', + + -- Add your own debuggers here + 'leoluz/nvim-dap-go', + }, + keys = { + -- Basic debugging keymaps, feel free to change to your liking! + { + '', + function() + require('dap').continue() + end, + desc = 'Debug: Start/Continue', + }, + { + '', + function() + require('dap').step_into() + end, + desc = 'Debug: Step Into', + }, + { + '', + function() + require('dap').step_over() + end, + desc = 'Debug: Step Over', + }, + { + '', + function() + require('dap').step_out() + end, + desc = 'Debug: Step Out', + }, + { + 'b', + function() + require('dap').toggle_breakpoint() + end, + desc = 'Debug: Toggle Breakpoint', + }, + { + 'B', + function() + require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') + end, + desc = 'Debug: Set Breakpoint', + }, + -- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception. + { + '', + function() + require('dapui').toggle() + end, + desc = 'Debug: See last session result.', + }, + }, + config = function() + local dap = require 'dap' + local dapui = require 'dapui' + + require('mason-nvim-dap').setup { + -- Makes a best effort to setup the various debuggers with + -- reasonable debug configurations + automatic_installation = true, + + -- You can provide additional configuration to the handlers, + -- see mason-nvim-dap README for more information + handlers = {}, + + -- You'll need to check that you have the required things installed + -- online, please don't ask me how to install them :) + ensure_installed = { + -- Update this to ensure that you have the debuggers for the langs you want + 'delve', + }, + } + + -- Dap UI setup + -- For more information, see |:help nvim-dap-ui| + dapui.setup { + -- Set icons to characters that are more likely to work in every terminal. + -- Feel free to remove or use ones that you like more! :) + -- Don't feel like these are good choices. + icons = { expanded = '▾', collapsed = '▸', current_frame = '*' }, + controls = { + icons = { + pause = '⏸', + play = '▶', + step_into = '⏎', + step_over = '⏭', + step_out = '⏮', + step_back = 'b', + run_last = '▶▶', + terminate = '⏹', + disconnect = '⏏', + }, + }, + } + + -- Change breakpoint icons + -- vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' }) + -- vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' }) + -- local breakpoint_icons = vim.g.have_nerd_font + -- and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' } + -- or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' } + -- for type, icon in pairs(breakpoint_icons) do + -- local tp = 'Dap' .. type + -- local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak' + -- vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl }) + -- end + + dap.listeners.after.event_initialized['dapui_config'] = dapui.open + dap.listeners.before.event_terminated['dapui_config'] = dapui.close + dap.listeners.before.event_exited['dapui_config'] = dapui.close + + -- Install golang specific config + require('dap-go').setup { + delve = { + -- On Windows delve must be run attached or it crashes. + -- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring + detached = vim.fn.has 'win32' == 0, + }, + } + end, +} diff --git a/.config/nvim/lua/kickstart/plugins/gitsigns.lua b/.config/nvim/lua/kickstart/plugins/gitsigns.lua new file mode 100644 index 0000000..cbbd22d --- /dev/null +++ b/.config/nvim/lua/kickstart/plugins/gitsigns.lua @@ -0,0 +1,61 @@ +-- Adds git related signs to the gutter, as well as utilities for managing changes +-- NOTE: gitsigns is already included in init.lua but contains only the base +-- config. This will add also the recommended keymaps. + +return { + { + 'lewis6991/gitsigns.nvim', + opts = { + on_attach = function(bufnr) + local gitsigns = require 'gitsigns' + + local function map(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + + -- Navigation + map('n', ']c', function() + if vim.wo.diff then + vim.cmd.normal { ']c', bang = true } + else + gitsigns.nav_hunk 'next' + end + end, { desc = 'Jump to next git [c]hange' }) + + map('n', '[c', function() + if vim.wo.diff then + vim.cmd.normal { '[c', bang = true } + else + gitsigns.nav_hunk 'prev' + end + end, { desc = 'Jump to previous git [c]hange' }) + + -- Actions + -- visual mode + map('v', 'hs', function() + gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } + end, { desc = 'git [s]tage hunk' }) + map('v', 'hr', function() + gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } + end, { desc = 'git [r]eset hunk' }) + -- normal mode + map('n', 'hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' }) + map('n', 'hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' }) + map('n', 'hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' }) + map('n', 'hu', gitsigns.stage_hunk, { desc = 'git [u]ndo stage hunk' }) + map('n', 'hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' }) + map('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) + map('n', 'hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) + map('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) + map('n', 'hD', function() + gitsigns.diffthis '@' + end, { desc = 'git [D]iff against last commit' }) + -- Toggles + map('n', 'tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' }) + map('n', 'tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' }) + end, + }, + }, +} diff --git a/.config/nvim/lua/kickstart/plugins/indent_line.lua b/.config/nvim/lua/kickstart/plugins/indent_line.lua new file mode 100644 index 0000000..ed7f269 --- /dev/null +++ b/.config/nvim/lua/kickstart/plugins/indent_line.lua @@ -0,0 +1,9 @@ +return { + { -- Add indentation guides even on blank lines + 'lukas-reineke/indent-blankline.nvim', + -- Enable `lukas-reineke/indent-blankline.nvim` + -- See `:help ibl` + main = 'ibl', + opts = {}, + }, +} diff --git a/.config/nvim/lua/kickstart/plugins/lint.lua b/.config/nvim/lua/kickstart/plugins/lint.lua new file mode 100644 index 0000000..dec42f0 --- /dev/null +++ b/.config/nvim/lua/kickstart/plugins/lint.lua @@ -0,0 +1,60 @@ +return { + + { -- Linting + 'mfussenegger/nvim-lint', + event = { 'BufReadPre', 'BufNewFile' }, + config = function() + local lint = require 'lint' + lint.linters_by_ft = { + markdown = { 'markdownlint' }, + } + + -- To allow other plugins to add linters to require('lint').linters_by_ft, + -- instead set linters_by_ft like this: + -- lint.linters_by_ft = lint.linters_by_ft or {} + -- lint.linters_by_ft['markdown'] = { 'markdownlint' } + -- + -- However, note that this will enable a set of default linters, + -- which will cause errors unless these tools are available: + -- { + -- clojure = { "clj-kondo" }, + -- dockerfile = { "hadolint" }, + -- inko = { "inko" }, + -- janet = { "janet" }, + -- json = { "jsonlint" }, + -- markdown = { "vale" }, + -- rst = { "vale" }, + -- ruby = { "ruby" }, + -- terraform = { "tflint" }, + -- text = { "vale" } + -- } + -- + -- You can disable the default linters by setting their filetypes to nil: + -- lint.linters_by_ft['clojure'] = nil + -- lint.linters_by_ft['dockerfile'] = nil + -- lint.linters_by_ft['inko'] = nil + -- lint.linters_by_ft['janet'] = nil + -- lint.linters_by_ft['json'] = nil + -- lint.linters_by_ft['markdown'] = nil + -- lint.linters_by_ft['rst'] = nil + -- lint.linters_by_ft['ruby'] = nil + -- lint.linters_by_ft['terraform'] = nil + -- lint.linters_by_ft['text'] = nil + + -- Create autocommand which carries out the actual linting + -- on the specified events. + local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true }) + vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, { + group = lint_augroup, + callback = function() + -- Only run the linter in buffers that you can modify in order to + -- avoid superfluous noise, notably within the handy LSP pop-ups that + -- describe the hovered symbol using Markdown. + if vim.bo.modifiable then + lint.try_lint() + end + end, + }) + end, + }, +} diff --git a/.config/nvim/lua/kickstart/plugins/neo-tree.lua b/.config/nvim/lua/kickstart/plugins/neo-tree.lua new file mode 100644 index 0000000..c706789 --- /dev/null +++ b/.config/nvim/lua/kickstart/plugins/neo-tree.lua @@ -0,0 +1,25 @@ +-- Neo-tree is a Neovim plugin to browse the file system +-- https://github.com/nvim-neo-tree/neo-tree.nvim + +return { + 'nvim-neo-tree/neo-tree.nvim', + version = '*', + dependencies = { + 'nvim-lua/plenary.nvim', + 'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended + 'MunifTanjim/nui.nvim', + }, + lazy = false, + keys = { + { '\\', ':Neotree reveal', desc = 'NeoTree reveal', silent = true }, + }, + opts = { + filesystem = { + window = { + mappings = { + ['\\'] = 'close_window', + }, + }, + }, + }, +}