diff --git a/.deployed_cache/alacritty b/.deployed_cache/alacritty new file mode 100644 index 0000000..db37d65 --- /dev/null +++ b/.deployed_cache/alacritty @@ -0,0 +1 @@ +/home/elk/.config/alacritty \ No newline at end of file diff --git a/.deployed_cache/eww b/.deployed_cache/eww new file mode 100644 index 0000000..e69de29 diff --git a/.deployed_cache/eww-bar b/.deployed_cache/eww-bar new file mode 100644 index 0000000..e69de29 diff --git a/.deployed_cache/foot b/.deployed_cache/foot new file mode 100644 index 0000000..e69de29 diff --git a/.deployed_cache/gtk b/.deployed_cache/gtk new file mode 100644 index 0000000..e69de29 diff --git a/.deployed_cache/niri b/.deployed_cache/niri new file mode 100644 index 0000000..e69de29 diff --git a/.deployed_cache/profile b/.deployed_cache/profile new file mode 100644 index 0000000..e69de29 diff --git a/.deployed_cache/rofi b/.deployed_cache/rofi new file mode 100644 index 0000000..e69de29 diff --git a/.deployed_cache/scripts b/.deployed_cache/scripts new file mode 100644 index 0000000..e69de29 diff --git a/.deployed_cache/sioyek b/.deployed_cache/sioyek new file mode 100644 index 0000000..e69de29 diff --git a/.deployed_cache/sway b/.deployed_cache/sway new file mode 100644 index 0000000..e69de29 diff --git a/eggs/nvim-old/.gitignore b/eggs/nvim-old/.gitignore new file mode 100644 index 0000000..268dd9f --- /dev/null +++ b/eggs/nvim-old/.gitignore @@ -0,0 +1,2 @@ +plugin +lua-old diff --git a/eggs/nvim/.nfnl.fnl b/eggs/nvim-old/.nfnl.fnl similarity index 100% rename from eggs/nvim/.nfnl.fnl rename to eggs/nvim-old/.nfnl.fnl diff --git a/eggs/nvim/fnl/dots/colors.fnl b/eggs/nvim-old/fnl/dots/colors.fnl similarity index 100% rename from eggs/nvim/fnl/dots/colors.fnl rename to eggs/nvim-old/fnl/dots/colors.fnl diff --git a/eggs/nvim/fnl/dots/keybinds.fnl b/eggs/nvim-old/fnl/dots/keybinds.fnl similarity index 100% rename from eggs/nvim/fnl/dots/keybinds.fnl rename to eggs/nvim-old/fnl/dots/keybinds.fnl diff --git a/eggs/nvim/fnl/dots/plugins/bufferline.fnl b/eggs/nvim-old/fnl/dots/plugins/bufferline.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/bufferline.fnl rename to eggs/nvim-old/fnl/dots/plugins/bufferline.fnl diff --git a/eggs/nvim/fnl/dots/plugins/cmp.fnl b/eggs/nvim-old/fnl/dots/plugins/cmp.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/cmp.fnl rename to eggs/nvim-old/fnl/dots/plugins/cmp.fnl diff --git a/eggs/nvim/fnl/dots/plugins/copilot.fnl b/eggs/nvim-old/fnl/dots/plugins/copilot.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/copilot.fnl rename to eggs/nvim-old/fnl/dots/plugins/copilot.fnl diff --git a/eggs/nvim/fnl/dots/plugins/diffview.fnl b/eggs/nvim-old/fnl/dots/plugins/diffview.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/diffview.fnl rename to eggs/nvim-old/fnl/dots/plugins/diffview.fnl diff --git a/eggs/nvim/fnl/dots/plugins/emmet.fnl b/eggs/nvim-old/fnl/dots/plugins/emmet.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/emmet.fnl rename to eggs/nvim-old/fnl/dots/plugins/emmet.fnl diff --git a/eggs/nvim/fnl/dots/plugins/feline.fnl b/eggs/nvim-old/fnl/dots/plugins/feline.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/feline.fnl rename to eggs/nvim-old/fnl/dots/plugins/feline.fnl diff --git a/eggs/nvim/fnl/dots/plugins/flutter-tools.fnl b/eggs/nvim-old/fnl/dots/plugins/flutter-tools.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/flutter-tools.fnl rename to eggs/nvim-old/fnl/dots/plugins/flutter-tools.fnl diff --git a/eggs/nvim/fnl/dots/plugins/gitsigns.fnl b/eggs/nvim-old/fnl/dots/plugins/gitsigns.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/gitsigns.fnl rename to eggs/nvim-old/fnl/dots/plugins/gitsigns.fnl diff --git a/eggs/nvim/fnl/dots/plugins/gruvbox8.fnl b/eggs/nvim-old/fnl/dots/plugins/gruvbox8.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/gruvbox8.fnl rename to eggs/nvim-old/fnl/dots/plugins/gruvbox8.fnl diff --git a/eggs/nvim/fnl/dots/plugins/lsp.fnl b/eggs/nvim-old/fnl/dots/plugins/lsp.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/lsp.fnl rename to eggs/nvim-old/fnl/dots/plugins/lsp.fnl diff --git a/eggs/nvim/fnl/dots/plugins/ltex-ls.fnl b/eggs/nvim-old/fnl/dots/plugins/ltex-ls.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/ltex-ls.fnl rename to eggs/nvim-old/fnl/dots/plugins/ltex-ls.fnl diff --git a/eggs/nvim/fnl/dots/plugins/noice.fnl b/eggs/nvim-old/fnl/dots/plugins/noice.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/noice.fnl rename to eggs/nvim-old/fnl/dots/plugins/noice.fnl diff --git a/eggs/nvim/fnl/dots/plugins/nvim-colorizer.fnl b/eggs/nvim-old/fnl/dots/plugins/nvim-colorizer.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/nvim-colorizer.fnl rename to eggs/nvim-old/fnl/dots/plugins/nvim-colorizer.fnl diff --git a/eggs/nvim/fnl/dots/plugins/obsidian.fnl b/eggs/nvim-old/fnl/dots/plugins/obsidian.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/obsidian.fnl rename to eggs/nvim-old/fnl/dots/plugins/obsidian.fnl diff --git a/eggs/nvim/fnl/dots/plugins/plugins.fnl b/eggs/nvim-old/fnl/dots/plugins/plugins.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/plugins.fnl rename to eggs/nvim-old/fnl/dots/plugins/plugins.fnl diff --git a/eggs/nvim/fnl/dots/plugins/telescope.fnl b/eggs/nvim-old/fnl/dots/plugins/telescope.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/telescope.fnl rename to eggs/nvim-old/fnl/dots/plugins/telescope.fnl diff --git a/eggs/nvim/fnl/dots/plugins/todo-comments.fnl b/eggs/nvim-old/fnl/dots/plugins/todo-comments.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/todo-comments.fnl rename to eggs/nvim-old/fnl/dots/plugins/todo-comments.fnl diff --git a/eggs/nvim/fnl/dots/plugins/treesitter.fnl b/eggs/nvim-old/fnl/dots/plugins/treesitter.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/treesitter.fnl rename to eggs/nvim-old/fnl/dots/plugins/treesitter.fnl diff --git a/eggs/nvim/fnl/dots/plugins/trouble.fnl b/eggs/nvim-old/fnl/dots/plugins/trouble.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/trouble.fnl rename to eggs/nvim-old/fnl/dots/plugins/trouble.fnl diff --git a/eggs/nvim/fnl/dots/plugins/vimtex.fnl b/eggs/nvim-old/fnl/dots/plugins/vimtex.fnl similarity index 100% rename from eggs/nvim/fnl/dots/plugins/vimtex.fnl rename to eggs/nvim-old/fnl/dots/plugins/vimtex.fnl diff --git a/eggs/nvim/fnl/dots/prelude.fnl b/eggs/nvim-old/fnl/dots/prelude.fnl similarity index 100% rename from eggs/nvim/fnl/dots/prelude.fnl rename to eggs/nvim-old/fnl/dots/prelude.fnl diff --git a/eggs/nvim/fnl/dots/utils.fnl b/eggs/nvim-old/fnl/dots/utils.fnl similarity index 100% rename from eggs/nvim/fnl/dots/utils.fnl rename to eggs/nvim-old/fnl/dots/utils.fnl diff --git a/eggs/nvim/fnl/macros.fnl b/eggs/nvim-old/fnl/macros.fnl similarity index 100% rename from eggs/nvim/fnl/macros.fnl rename to eggs/nvim-old/fnl/macros.fnl diff --git a/eggs/nvim/fnl/main.fnl b/eggs/nvim-old/fnl/main.fnl similarity index 100% rename from eggs/nvim/fnl/main.fnl rename to eggs/nvim-old/fnl/main.fnl diff --git a/eggs/nvim-old/init.lua b/eggs/nvim-old/init.lua new file mode 100644 index 0000000..b097218 --- /dev/null +++ b/eggs/nvim-old/init.lua @@ -0,0 +1,52 @@ +-- not even used, but epic. stores the path to the root config directory. +local vim_config_root = vim.fn.expand(":p:h") + +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + + +function ensure(user, repo, branch, commit) + -- Ensures a given github.com/USER/REPO is cloned in the lazy/packer/start directory. + local install_path = vim.fn.stdpath("data") .. "/lazy/" .. repo + if vim.fn.empty(vim.fn.glob(install_path)) > 0 then + vim.fn.system({"git", "clone", "--depth", "1", "--branch", branch, "https://github.com/" .. user .. "/" .. repo, install_path}) + if commit ~= nil then + vim.fn.system({"git", "--git-dir", install_path .. "/.git", "reset", "--hard", commit}) + end + end + vim.opt.rtp:prepend(install_path) +end + +-- Bootstrap essential plugins required for installing and loading the rest. +--ensure("wbthomason", "packer.nvim", "master") +--ensure("Olical", "aniseed", "master") +ensure("Olical", "nfnl", "v1.0.0") + +require('nfnl')['setup']() +--require('nfnl.api')['compile-all-files']() + +require("main") + + +-- ensure("lewis6991", "impatient.nvim", "main") + +-- require("impatient") + + +-- vim.g["aniseed#env"] = { +-- compile = true +-- } +--require("aniseed.env").init({compile = true}) + + +-- vim.cmd ("source "..vim_config_root.."/amulet.vim") diff --git a/eggs/nvim-old/lazy-lock.json b/eggs/nvim-old/lazy-lock.json new file mode 100644 index 0000000..d57ba2e --- /dev/null +++ b/eggs/nvim-old/lazy-lock.json @@ -0,0 +1,108 @@ +{ + "agda-vim": { "branch": "master", "commit": "4a0f475aaef756702222bdd5b01e25f814f5691f" }, + "aniseed": { "branch": "master", "commit": "d558a68329c465bced901adf3238a6f946d62483" }, + "antifennel-nvim": { "branch": "master", "commit": "79261d02213a5093135e5d02431682f04459f0f7" }, + "ats-vim": { "branch": "master", "commit": "8e3e722b6d09ed81313573b4e7b108b265628ff1" }, + "auto-pairs": { "branch": "master", "commit": "39f06b873a8449af8ff6a3eee716d3da14d63a76" }, + "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-calc": { "branch": "main", "commit": "5947b412da67306c5b68698a02a846760059be2e" }, + "cmp-conventionalcommits": { "branch": "master", "commit": "a4dfacf0601130b7f8afa7c948d735c27802fb7f" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, + "cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" }, + "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, + "cmp-omni": { "branch": "main", "commit": "4ef610bbd85a5ee4e97e09450c0daecbdc60de86" }, + "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" }, + "conflict-marker.vim": { "branch": "master", "commit": "62742b2ffe7a433988759c67b5c5a22eff74a14b" }, + "conjure": { "branch": "main", "commit": "b4b9b909814ef7a8f69be7636a2e3b3acb1d66ae" }, + "copilot.lua": { "branch": "master", "commit": "d3783b9283a7c35940ed8d71549030d5f5f9f980" }, + "crates.nvim": { "branch": "main", "commit": "8bf8358ee326d5d8c11dcd7ac0bcc9ff97dbc785" }, + "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, + "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, + "editorconfig-vim": { "branch": "master", "commit": "3c2813f2566d9392ff3614248c5db43c3fda9d5f" }, + "emmet-vim": { "branch": "master", "commit": "6c511a8d7d2863066f32e25543e2bb99d505172c" }, + "feline.nvim": { "branch": "master", "commit": "3587f57480b88e8009df7b36dc84e9c7ff8f2c49" }, + "fennel.vim": { "branch": "master", "commit": "30b9beabad2c4f09b9b284caf5cd5666b6b4dc89" }, + "flutter-tools.nvim": { "branch": "main", "commit": "85492bee069af1155bb10bfbee90ac7d4168eced" }, + "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, + "gh.nvim": { "branch": "main", "commit": "ebbaac254ef7dd6f85b439825fbce82d0dc84515" }, + "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, + "glance.nvim": { "branch": "master", "commit": "04f7325d46eb3b450f2e2ba96d13dbf0b00aba0b" }, + "haskell-vim": { "branch": "master", "commit": "f35d02204b4813d1dbe8b0e98cc39701a4b8e15e" }, + "hop.nvim": { "branch": "master", "commit": "1a1eceafe54b5081eae4cb91c723abd1d450f34b" }, + "idris2-vim": { "branch": "master", "commit": "964cebee493c85f75796e4f4e6bbb4ac54e2da9e" }, + "inc-rename.nvim": { "branch": "main", "commit": "f4e13df6e2d0b3177a7305dbc1cc7f7ea44b94f1" }, + "kdl.vim": { "branch": "main", "commit": "b84d7d3a15d8d30da016cf9e98e2cfbe35cddee5" }, + "kmonad-vim": { "branch": "master", "commit": "37978445197ab00edeb5b731e9ca90c2b141723f" }, + "lalrpop.vim": { "branch": "master", "commit": "7073eec8efdeff37cacd4bca378c28dad02c3c14" }, + "lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" }, + "litee.nvim": { "branch": "main", "commit": "4efaf373322d9e71eaff31164abb393417cc6f6a" }, + "lsp_lines.nvim": { "branch": "main", "commit": "f7f18b85360b8e85cd6a5418c9fbccb6a2ff4b1b" }, + "lsp_signature.nvim": { "branch": "master", "commit": "fc38521ea4d9ec8dbd4c2819ba8126cea743943b" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "8e46de9241d3997927af12196bd8faa0ed08c29a" }, + "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "neoformat": { "branch": "master", "commit": "d9d3311097eacdba9bd7a425b267d304b509e7ea" }, + "neogit": { "branch": "master", "commit": "9dc580789aaf978ba94403874e23a0896a92dbbc" }, + "nerdcommenter": { "branch": "master", "commit": "66c07e4083ab02ed2540ac289cc602c70b858c13" }, + "nfnl": { "branch": "main", "commit": "b65c4cf17d4e5c9b80d8c8ab33a6774a6c64e1c2" }, + "nvim-bufferline.lua": { "branch": "main", "commit": "2e3c8cc5a57ddd32f1edd2ffd2ccb10c09421f6c" }, + "nvim-cmp": { "branch": "main", "commit": "98e8b9d593a5547c126a39212d6f5e954a2d85dd" }, + "nvim-code-action-menu": { "branch": "main", "commit": "8c7672a4b04d3cc4edd2c484d05b660a9cb34a1b" }, + "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, + "nvim-dap": { "branch": "master", "commit": "567da83810dd9da32f9414d941bc6848715fc102" }, + "nvim-dap-ui": { "branch": "master", "commit": "ffa89839f97bad360e78428d5c740fdad9a0ff02" }, + "nvim-jenkinsfile-linter": { "branch": "main", "commit": "b6b48b0a7aed92ed46bb9e1ab208dce92941f50b" }, + "nvim-lspconfig": { "branch": "master", "commit": "9f2c279cf9abe584f03bfeb37c6658d68e3ff49d" }, + "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, + "nvim-scrollbar": { "branch": "main", "commit": "6994eb9f73d5fdc36ee2c8717940e8c853e51a49" }, + "nvim-web-devicons": { "branch": "master", "commit": "0eb18da56e2ba6ba24de7130a12bcc4e31ad11cb" }, + "nvim.lua": { "branch": "master", "commit": "5d57be0b6eea6c06977b1c5fe0752da909cf4154" }, + "nvlime": { "branch": "master", "commit": "228e4fa8c7d10b1ed07b1649a63743613b77a828" }, + "obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" }, + "octo.nvim": { "branch": "master", "commit": "38f572d87e400863288a570a37acca680f94c11a" }, + "parinfer-rust": { "branch": "master", "commit": "d84828b453e158d06406f6b5e9056f6b54ff76c9" }, + "parsley": { "branch": "main", "commit": "c4100aa449bfa971dcfc56ffe4206ba034db08cc" }, + "persistence.nvim": { "branch": "main", "commit": "f6aad7dde7fcf54148ccfc5f622c6d5badd0cc3d" }, + "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, + "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" }, + "purescript-vim": { "branch": "main", "commit": "82348352e6568fcc0385bd7c99a8ead3a479feea" }, + "rust.vim": { "branch": "master", "commit": "889b9a7515db477f4cb6808bef1769e53493c578" }, + "rustaceanvim": { "branch": "master", "commit": "047f9c9d8cd2861745eb9de6c1570ee0875aa795" }, + "sad.vim": { "branch": "master", "commit": "2f5b33b239a566ffedaa81cee3051bb613482d1e" }, + "stabilize.nvim": { "branch": "master", "commit": "eeb1873daffaba67246188a5668b366e45ed1de1" }, + "startuptime.vim": { "branch": "master", "commit": "dfa57f522d6f61793fe5fea65bca7484751b8ca2" }, + "tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" }, + "targets.vim": { "branch": "master", "commit": "6325416da8f89992b005db3e4517aaef0242602e" }, + "telescope-dap.nvim": { "branch": "master", "commit": "783366bd6c1e7fa0a5c59c07db37f49c805a28df" }, + "telescope.nvim": { "branch": "master", "commit": "2eca9ba22002184ac05eddbe47a7fe2d5a384dfc" }, + "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, + "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, + "typescript-vim": { "branch": "master", "commit": "8d169e16b5487771f6568125d4c63e6086e524d9" }, + "vim-bbye": { "branch": "master", "commit": "25ef93ac5a87526111f43e5110675032dbcacf56" }, + "vim-exchange": { "branch": "master", "commit": "d6c1e9790bcb8df27c483a37167459bbebe0112e" }, + "vim-fugitive": { "branch": "master", "commit": "fcb4db52e7f65b95705aa58f0f2df1312c1f2df2" }, + "vim-gh-line": { "branch": "master", "commit": "731751fdfa4f64a061dbc7088cb7b2f12e0828ad" }, + "vim-gruvbox8": { "branch": "master", "commit": "60bb03df34fd6f22aed9dcb71f5cb297b6cceb3f" }, + "vim-indent-guides": { "branch": "master", "commit": "a1e1390c0136e63e813d051de2003bf0ee18ae30" }, + "vim-javascript": { "branch": "master", "commit": "c470ce1399a544fe587eab950f571c83cccfbbdc" }, + "vim-jsonc": { "branch": "master", "commit": "0b7ca17da85b5faa813be8ead3ad497e348b2763" }, + "vim-jsx": { "branch": "master", "commit": "8879e0d9c5ba0e04ecbede1c89f63b7a0efa24af" }, + "vim-nix": { "branch": "master", "commit": "e25cd0f2e5922f1f4d3cd969f92e35a9a327ffb0" }, + "vim-raku": { "branch": "master", "commit": "f4496123353cce789fc6645ceb686f5cf51acca3" }, + "vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" }, + "vim-rhai": { "branch": "main", "commit": "b0585e2c92a4a64edcd060836ae41d1e698ebc20" }, + "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, + "vim-smoothie": { "branch": "master", "commit": "df1e324e9f3395c630c1c523d0555a01d2eb1b7e" }, + "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }, + "vim-svelte": { "branch": "main", "commit": "0e93ec53c3667753237282926fec626785622c1c" }, + "vim-toml": { "branch": "main", "commit": "d36caa6b1cf508a4df1c691f915572fc02143258" }, + "vim-tsx": { "branch": "master", "commit": "77c89c42e189fefd3c9a632b37b7e3b3b9edf918" }, + "vim-visual-multi": { "branch": "master", "commit": "a6975e7c1ee157615bbc80fc25e4392f71c344d4" }, + "vim-vsnip": { "branch": "master", "commit": "02a8e79295c9733434aab4e0e2b8c4b7cea9f3a9" }, + "vim-vsnip-integ": { "branch": "master", "commit": "90ae474e8b05ed41e36d6f58382a9fbfb4b672c4" }, + "vimtex": { "branch": "master", "commit": "b8bb79b5fb27e9030ade92e75cd9375416f2c666" }, + "webapi-vim": { "branch": "master", "commit": "70c49ada7827d3545a65cbdab04c5c89a3a8464e" }, + "which-key.nvim": { "branch": "main", "commit": "8ab96b38a2530eacba5be717f52e04601eb59326" }, + "yats.vim": { "branch": "master", "commit": "b325c449a2db4d9ee38aa441afa850a815982e8b" }, + "yuck.vim": { "branch": "master", "commit": "9b5e0370f70cc30383e1dabd6c215475915fe5c3" } +} diff --git a/eggs/nvim/lua/dots/basics.lua b/eggs/nvim-old/lua/dots/basics.lua similarity index 100% rename from eggs/nvim/lua/dots/basics.lua rename to eggs/nvim-old/lua/dots/basics.lua diff --git a/eggs/nvim/lua/dots/colors.lua b/eggs/nvim-old/lua/dots/colors.lua similarity index 100% rename from eggs/nvim/lua/dots/colors.lua rename to eggs/nvim-old/lua/dots/colors.lua diff --git a/eggs/nvim/lua/dots/help-thingy.lua b/eggs/nvim-old/lua/dots/help-thingy.lua similarity index 100% rename from eggs/nvim/lua/dots/help-thingy.lua rename to eggs/nvim-old/lua/dots/help-thingy.lua diff --git a/eggs/nvim/lua/dots/keybinds.lua b/eggs/nvim-old/lua/dots/keybinds.lua similarity index 100% rename from eggs/nvim/lua/dots/keybinds.lua rename to eggs/nvim-old/lua/dots/keybinds.lua diff --git a/eggs/nvim/lua/dots/plugins/bufferline.lua b/eggs/nvim-old/lua/dots/plugins/bufferline.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/bufferline.lua rename to eggs/nvim-old/lua/dots/plugins/bufferline.lua diff --git a/eggs/nvim/lua/dots/plugins/cmp.lua b/eggs/nvim-old/lua/dots/plugins/cmp.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/cmp.lua rename to eggs/nvim-old/lua/dots/plugins/cmp.lua diff --git a/eggs/nvim/lua/dots/plugins/copilot.lua b/eggs/nvim-old/lua/dots/plugins/copilot.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/copilot.lua rename to eggs/nvim-old/lua/dots/plugins/copilot.lua diff --git a/eggs/nvim/lua/dots/plugins/diffview.lua b/eggs/nvim-old/lua/dots/plugins/diffview.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/diffview.lua rename to eggs/nvim-old/lua/dots/plugins/diffview.lua diff --git a/eggs/nvim/lua/dots/plugins/emmet.lua b/eggs/nvim-old/lua/dots/plugins/emmet.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/emmet.lua rename to eggs/nvim-old/lua/dots/plugins/emmet.lua diff --git a/eggs/nvim/lua/dots/plugins/feline.lua b/eggs/nvim-old/lua/dots/plugins/feline.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/feline.lua rename to eggs/nvim-old/lua/dots/plugins/feline.lua diff --git a/eggs/nvim/lua/dots/plugins/flutter-tools.lua b/eggs/nvim-old/lua/dots/plugins/flutter-tools.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/flutter-tools.lua rename to eggs/nvim-old/lua/dots/plugins/flutter-tools.lua diff --git a/eggs/nvim/lua/dots/plugins/gitsigns.lua b/eggs/nvim-old/lua/dots/plugins/gitsigns.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/gitsigns.lua rename to eggs/nvim-old/lua/dots/plugins/gitsigns.lua diff --git a/eggs/nvim/lua/dots/plugins/gruvbox8.lua b/eggs/nvim-old/lua/dots/plugins/gruvbox8.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/gruvbox8.lua rename to eggs/nvim-old/lua/dots/plugins/gruvbox8.lua diff --git a/eggs/nvim/lua/dots/plugins/lsp.lua b/eggs/nvim-old/lua/dots/plugins/lsp.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/lsp.lua rename to eggs/nvim-old/lua/dots/plugins/lsp.lua diff --git a/eggs/nvim/lua/dots/plugins/ltex-ls.lua b/eggs/nvim-old/lua/dots/plugins/ltex-ls.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/ltex-ls.lua rename to eggs/nvim-old/lua/dots/plugins/ltex-ls.lua diff --git a/eggs/nvim/lua/dots/plugins/noice.lua b/eggs/nvim-old/lua/dots/plugins/noice.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/noice.lua rename to eggs/nvim-old/lua/dots/plugins/noice.lua diff --git a/eggs/nvim/lua/dots/plugins/nvim-colorizer.lua b/eggs/nvim-old/lua/dots/plugins/nvim-colorizer.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/nvim-colorizer.lua rename to eggs/nvim-old/lua/dots/plugins/nvim-colorizer.lua diff --git a/eggs/nvim/lua/dots/plugins/obsidian.lua b/eggs/nvim-old/lua/dots/plugins/obsidian.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/obsidian.lua rename to eggs/nvim-old/lua/dots/plugins/obsidian.lua diff --git a/eggs/nvim/lua/dots/plugins/plugins.lua b/eggs/nvim-old/lua/dots/plugins/plugins.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/plugins.lua rename to eggs/nvim-old/lua/dots/plugins/plugins.lua diff --git a/eggs/nvim/lua/dots/plugins/telescope.lua b/eggs/nvim-old/lua/dots/plugins/telescope.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/telescope.lua rename to eggs/nvim-old/lua/dots/plugins/telescope.lua diff --git a/eggs/nvim/lua/dots/plugins/todo-comments.lua b/eggs/nvim-old/lua/dots/plugins/todo-comments.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/todo-comments.lua rename to eggs/nvim-old/lua/dots/plugins/todo-comments.lua diff --git a/eggs/nvim/lua/dots/plugins/treesitter.lua b/eggs/nvim-old/lua/dots/plugins/treesitter.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/treesitter.lua rename to eggs/nvim-old/lua/dots/plugins/treesitter.lua diff --git a/eggs/nvim/lua/dots/plugins/trouble.lua b/eggs/nvim-old/lua/dots/plugins/trouble.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/trouble.lua rename to eggs/nvim-old/lua/dots/plugins/trouble.lua diff --git a/eggs/nvim/lua/dots/plugins/vimtex.lua b/eggs/nvim-old/lua/dots/plugins/vimtex.lua similarity index 100% rename from eggs/nvim/lua/dots/plugins/vimtex.lua rename to eggs/nvim-old/lua/dots/plugins/vimtex.lua diff --git a/eggs/nvim/lua/dots/prelude.lua b/eggs/nvim-old/lua/dots/prelude.lua similarity index 100% rename from eggs/nvim/lua/dots/prelude.lua rename to eggs/nvim-old/lua/dots/prelude.lua diff --git a/eggs/nvim/lua/dots/smart-compe-conjure.lua b/eggs/nvim-old/lua/dots/smart-compe-conjure.lua similarity index 100% rename from eggs/nvim/lua/dots/smart-compe-conjure.lua rename to eggs/nvim-old/lua/dots/smart-compe-conjure.lua diff --git a/eggs/nvim/lua/dots/utils.lua b/eggs/nvim-old/lua/dots/utils.lua similarity index 100% rename from eggs/nvim/lua/dots/utils.lua rename to eggs/nvim-old/lua/dots/utils.lua diff --git a/eggs/nvim/lua/main.lua b/eggs/nvim-old/lua/main.lua similarity index 100% rename from eggs/nvim/lua/main.lua rename to eggs/nvim-old/lua/main.lua diff --git a/eggs/nvim/.gitignore b/eggs/nvim/.gitignore index 268dd9f..cc5457a 100644 --- a/eggs/nvim/.gitignore +++ b/eggs/nvim/.gitignore @@ -1,2 +1,8 @@ -plugin -lua-old +tt.* +.tests +doc/tags +debug +.repro +foo.* +*.log +data diff --git a/eggs/nvim/.neoconf.json b/eggs/nvim/.neoconf.json new file mode 100644 index 0000000..7c48087 --- /dev/null +++ b/eggs/nvim/.neoconf.json @@ -0,0 +1,15 @@ +{ + "neodev": { + "library": { + "enabled": true, + "plugins": true + } + }, + "neoconf": { + "plugins": { + "lua_ls": { + "enabled": true + } + } + } +} diff --git a/eggs/nvim/LICENSE b/eggs/nvim/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/eggs/nvim/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/eggs/nvim/README.md b/eggs/nvim/README.md new file mode 100644 index 0000000..e3522f6 --- /dev/null +++ b/eggs/nvim/README.md @@ -0,0 +1,20 @@ +# Nvim + +My Neovim configuration using LazyVim as a base for stability. + +Try it, however some features might be broken in docker. Mason I am looking at you. + +``` +docker run -w /root -it --rm alpine:edge sh -uelic ' + apk add git neovim ripgrep alpine-sdk --update + git clone https://github.com/druskus20/dots ~/.config/dots + mv ~/.config/dots/nvim-lazyvim/.config/nvim ~/.config/nvim + cd ~/.config/nvim + nvim +' +``` + +## Tips + +`'+C` will print the highlight group under the cursor. For treesitter +highlights `nvim-treesitter/playground` can be used with TSHighlightCapturesUnderCursor diff --git a/eggs/nvim/init.lua b/eggs/nvim/init.lua index b097218..2514f9e 100644 --- a/eggs/nvim/init.lua +++ b/eggs/nvim/init.lua @@ -1,52 +1,2 @@ --- not even used, but epic. stores the path to the root config directory. -local vim_config_root = vim.fn.expand(":p:h") - -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not vim.loop.fs_stat(lazypath) then - vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", -- latest stable release - lazypath, - }) -end -vim.opt.rtp:prepend(lazypath) - - -function ensure(user, repo, branch, commit) - -- Ensures a given github.com/USER/REPO is cloned in the lazy/packer/start directory. - local install_path = vim.fn.stdpath("data") .. "/lazy/" .. repo - if vim.fn.empty(vim.fn.glob(install_path)) > 0 then - vim.fn.system({"git", "clone", "--depth", "1", "--branch", branch, "https://github.com/" .. user .. "/" .. repo, install_path}) - if commit ~= nil then - vim.fn.system({"git", "--git-dir", install_path .. "/.git", "reset", "--hard", commit}) - end - end - vim.opt.rtp:prepend(install_path) -end - --- Bootstrap essential plugins required for installing and loading the rest. ---ensure("wbthomason", "packer.nvim", "master") ---ensure("Olical", "aniseed", "master") -ensure("Olical", "nfnl", "v1.0.0") - -require('nfnl')['setup']() ---require('nfnl.api')['compile-all-files']() - -require("main") - - --- ensure("lewis6991", "impatient.nvim", "main") - --- require("impatient") - - --- vim.g["aniseed#env"] = { --- compile = true --- } ---require("aniseed.env").init({compile = true}) - - --- vim.cmd ("source "..vim_config_root.."/amulet.vim") +-- bootstrap lazy.nvim, LazyVim and your plugins +require("config.lazy") diff --git a/eggs/nvim/lazy-lock.json b/eggs/nvim/lazy-lock.json index d57ba2e..e0b764f 100644 --- a/eggs/nvim/lazy-lock.json +++ b/eggs/nvim/lazy-lock.json @@ -1,108 +1,61 @@ { - "agda-vim": { "branch": "master", "commit": "4a0f475aaef756702222bdd5b01e25f814f5691f" }, - "aniseed": { "branch": "master", "commit": "d558a68329c465bced901adf3238a6f946d62483" }, - "antifennel-nvim": { "branch": "master", "commit": "79261d02213a5093135e5d02431682f04459f0f7" }, - "ats-vim": { "branch": "master", "commit": "8e3e722b6d09ed81313573b4e7b108b265628ff1" }, - "auto-pairs": { "branch": "master", "commit": "39f06b873a8449af8ff6a3eee716d3da14d63a76" }, - "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-calc": { "branch": "main", "commit": "5947b412da67306c5b68698a02a846760059be2e" }, - "cmp-conventionalcommits": { "branch": "master", "commit": "a4dfacf0601130b7f8afa7c948d735c27802fb7f" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, - "cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" }, - "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, - "cmp-omni": { "branch": "main", "commit": "4ef610bbd85a5ee4e97e09450c0daecbdc60de86" }, - "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" }, - "conflict-marker.vim": { "branch": "master", "commit": "62742b2ffe7a433988759c67b5c5a22eff74a14b" }, - "conjure": { "branch": "main", "commit": "b4b9b909814ef7a8f69be7636a2e3b3acb1d66ae" }, - "copilot.lua": { "branch": "master", "commit": "d3783b9283a7c35940ed8d71549030d5f5f9f980" }, - "crates.nvim": { "branch": "main", "commit": "8bf8358ee326d5d8c11dcd7ac0bcc9ff97dbc785" }, - "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, - "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, - "editorconfig-vim": { "branch": "master", "commit": "3c2813f2566d9392ff3614248c5db43c3fda9d5f" }, - "emmet-vim": { "branch": "master", "commit": "6c511a8d7d2863066f32e25543e2bb99d505172c" }, - "feline.nvim": { "branch": "master", "commit": "3587f57480b88e8009df7b36dc84e9c7ff8f2c49" }, - "fennel.vim": { "branch": "master", "commit": "30b9beabad2c4f09b9b284caf5cd5666b6b4dc89" }, - "flutter-tools.nvim": { "branch": "main", "commit": "85492bee069af1155bb10bfbee90ac7d4168eced" }, - "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, - "gh.nvim": { "branch": "main", "commit": "ebbaac254ef7dd6f85b439825fbce82d0dc84515" }, + "CopilotChat.nvim": { "branch": "main", "commit": "2ebe591cff06018e265263e71e1dbc4c5aa8281e" }, + "LazyVim": { "branch": "main", "commit": "d0c366e4d861b848bdc710696d5311dca2c6d540" }, + "LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" }, + "SchemaStore.nvim": { "branch": "main", "commit": "fa47222e29d6f6e80eddcdd0f125c27edf274ad5" }, + "blink-cmp-copilot": { "branch": "main", "commit": "c5c5cbce5748d21073f1d5348a92ebe6ce63f387" }, + "blink.cmp": { "branch": "main", "commit": "e3b7cb4a1094377c3093a021300de123d9fc60d3" }, + "bufferline.nvim": { "branch": "main", "commit": "0b2fd861eee7595015b6561dade52fb060be10c4" }, + "catppuccin": { "branch": "main", "commit": "f67b886d65a029f12ffa298701fb8f1efd89295d" }, + "conform.nvim": { "branch": "master", "commit": "1a99fdc1d3aa9ccdf3021e67982a679a8c5c740c" }, + "copilot.lua": { "branch": "master", "commit": "886ee73b6d464b2b3e3e6a7ff55ce87feac423a9" }, + "crates.nvim": { "branch": "main", "commit": "bd35b13e94a292ee6e32c351e05ca2202dc9f070" }, + "dressing.nvim": { "branch": "master", "commit": "3a45525bb182730fe462325c99395529308f431e" }, + "dropbar.nvim": { "branch": "master", "commit": "e5f9fb998a54c0ec1c2d25de88a3c260c494ffe1" }, + "flash.nvim": { "branch": "main", "commit": "34c7be146a91fec3555c33fe89c7d643f6ef5cf1" }, + "friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" }, "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, - "glance.nvim": { "branch": "master", "commit": "04f7325d46eb3b450f2e2ba96d13dbf0b00aba0b" }, - "haskell-vim": { "branch": "master", "commit": "f35d02204b4813d1dbe8b0e98cc39701a4b8e15e" }, - "hop.nvim": { "branch": "master", "commit": "1a1eceafe54b5081eae4cb91c723abd1d450f34b" }, - "idris2-vim": { "branch": "master", "commit": "964cebee493c85f75796e4f4e6bbb4ac54e2da9e" }, - "inc-rename.nvim": { "branch": "main", "commit": "f4e13df6e2d0b3177a7305dbc1cc7f7ea44b94f1" }, - "kdl.vim": { "branch": "main", "commit": "b84d7d3a15d8d30da016cf9e98e2cfbe35cddee5" }, - "kmonad-vim": { "branch": "master", "commit": "37978445197ab00edeb5b731e9ca90c2b141723f" }, - "lalrpop.vim": { "branch": "master", "commit": "7073eec8efdeff37cacd4bca378c28dad02c3c14" }, + "grug-far.nvim": { "branch": "main", "commit": "08f32182335754abf461dfb77b2c4e24bfe4d614" }, + "indent-blankline.nvim": { "branch": "master", "commit": "18603eb949eba08300799f64027af11ef922283f" }, "lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" }, - "litee.nvim": { "branch": "main", "commit": "4efaf373322d9e71eaff31164abb393417cc6f6a" }, - "lsp_lines.nvim": { "branch": "main", "commit": "f7f18b85360b8e85cd6a5418c9fbccb6a2ff4b1b" }, - "lsp_signature.nvim": { "branch": "master", "commit": "fc38521ea4d9ec8dbd4c2819ba8126cea743943b" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "8e46de9241d3997927af12196bd8faa0ed08c29a" }, + "lazydev.nvim": { "branch": "main", "commit": "8620f82ee3f59ff2187647167b6b47387a13a018" }, + "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, + "luvit-meta": { "branch": "main", "commit": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60" }, + "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "97d9f1d3ad205dece6bcafd1d71cf1507608f3c7" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, - "neoformat": { "branch": "master", "commit": "d9d3311097eacdba9bd7a425b267d304b509e7ea" }, - "neogit": { "branch": "master", "commit": "9dc580789aaf978ba94403874e23a0896a92dbbc" }, - "nerdcommenter": { "branch": "master", "commit": "66c07e4083ab02ed2540ac289cc602c70b858c13" }, - "nfnl": { "branch": "main", "commit": "b65c4cf17d4e5c9b80d8c8ab33a6774a6c64e1c2" }, - "nvim-bufferline.lua": { "branch": "main", "commit": "2e3c8cc5a57ddd32f1edd2ffd2ccb10c09421f6c" }, - "nvim-cmp": { "branch": "main", "commit": "98e8b9d593a5547c126a39212d6f5e954a2d85dd" }, - "nvim-code-action-menu": { "branch": "main", "commit": "8c7672a4b04d3cc4edd2c484d05b660a9cb34a1b" }, - "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, - "nvim-dap": { "branch": "master", "commit": "567da83810dd9da32f9414d941bc6848715fc102" }, - "nvim-dap-ui": { "branch": "master", "commit": "ffa89839f97bad360e78428d5c740fdad9a0ff02" }, - "nvim-jenkinsfile-linter": { "branch": "main", "commit": "b6b48b0a7aed92ed46bb9e1ab208dce92941f50b" }, - "nvim-lspconfig": { "branch": "master", "commit": "9f2c279cf9abe584f03bfeb37c6658d68e3ff49d" }, - "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, + "mini.ai": { "branch": "main", "commit": "ebb04799794a7f94628153991e6334c3304961b8" }, + "mini.comment": { "branch": "main", "commit": "a56581c40c19fa26f2b39da72504398de3173c5a" }, + "mini.icons": { "branch": "main", "commit": "1c79feb7478ca773fa3dac5cadf43ced9180e861" }, + "mini.move": { "branch": "main", "commit": "4caa1c212f5ca3d1633d21cfb184808090ed74b1" }, + "mini.pairs": { "branch": "main", "commit": "e543c760edc5e746e5b6cbd02c066c17ead3ef16" }, + "neo-tree.nvim": { "branch": "main", "commit": "0774fa2085c62a147fcc7b56f0ac37053cc80217" }, + "noice.nvim": { "branch": "main", "commit": "eaed6cc9c06aa2013b5255349e4f26a6b17ab70f" }, + "nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" }, + "nvim-lint": { "branch": "master", "commit": "dfa45de973c3ce7bd1b9a6d346f896a68ad07e44" }, + "nvim-lsp-endhints": { "branch": "main", "commit": "a449f2f27b6b985ff216964572224ce432d94a86" }, + "nvim-lspconfig": { "branch": "master", "commit": "8121483b8132b7053120fafd83728178fb3febf6" }, + "nvim-notify": { "branch": "master", "commit": "bd9cd51f9ef2f6326fc2bc9931d0718c1794e247" }, "nvim-scrollbar": { "branch": "main", "commit": "6994eb9f73d5fdc36ee2c8717940e8c853e51a49" }, - "nvim-web-devicons": { "branch": "master", "commit": "0eb18da56e2ba6ba24de7130a12bcc4e31ad11cb" }, - "nvim.lua": { "branch": "master", "commit": "5d57be0b6eea6c06977b1c5fe0752da909cf4154" }, - "nvlime": { "branch": "master", "commit": "228e4fa8c7d10b1ed07b1649a63743613b77a828" }, - "obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" }, - "octo.nvim": { "branch": "master", "commit": "38f572d87e400863288a570a37acca680f94c11a" }, - "parinfer-rust": { "branch": "master", "commit": "d84828b453e158d06406f6b5e9056f6b54ff76c9" }, - "parsley": { "branch": "main", "commit": "c4100aa449bfa971dcfc56ffe4206ba034db08cc" }, + "nvim-snippets": { "branch": "main", "commit": "56b4052f71220144689caaa2e5b66222ba5661eb" }, + "nvim-treesitter": { "branch": "master", "commit": "958af94dd8d74071c72c9d6840b41d06ea436b2f" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" }, + "nvim-ts-autotag": { "branch": "main", "commit": "e239a560f338be31337e7abc3ee42515daf23f5e" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, "persistence.nvim": { "branch": "main", "commit": "f6aad7dde7fcf54148ccfc5f622c6d5badd0cc3d" }, + "playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" }, "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, - "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" }, - "purescript-vim": { "branch": "main", "commit": "82348352e6568fcc0385bd7c99a8ead3a479feea" }, - "rust.vim": { "branch": "master", "commit": "889b9a7515db477f4cb6808bef1769e53493c578" }, - "rustaceanvim": { "branch": "master", "commit": "047f9c9d8cd2861745eb9de6c1570ee0875aa795" }, - "sad.vim": { "branch": "master", "commit": "2f5b33b239a566ffedaa81cee3051bb613482d1e" }, - "stabilize.nvim": { "branch": "master", "commit": "eeb1873daffaba67246188a5668b366e45ed1de1" }, - "startuptime.vim": { "branch": "master", "commit": "dfa57f522d6f61793fe5fea65bca7484751b8ca2" }, - "tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" }, - "targets.vim": { "branch": "master", "commit": "6325416da8f89992b005db3e4517aaef0242602e" }, - "telescope-dap.nvim": { "branch": "master", "commit": "783366bd6c1e7fa0a5c59c07db37f49c805a28df" }, + "remote-nvim.nvim": { "branch": "main", "commit": "66fc20fd259401c7bb6ac5189ecb6283c2eb65d2" }, + "render-markdown.nvim": { "branch": "main", "commit": "16369540a005ad0cf267498162aedca6dfca1b9c" }, + "rustaceanvim": { "branch": "master", "commit": "10efd4d48fb241b2530062090dd84fd4f9717584" }, + "smear-cursor.nvim": { "branch": "main", "commit": "875c64511f4a544f8e59006c34c797fdfb303003" }, + "snacks.nvim": { "branch": "main", "commit": "ee08b1f32e06904318f8fa24714557d3abcdd215" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "dae2eac9d91464448b584c7949a31df8faefec56" }, "telescope.nvim": { "branch": "master", "commit": "2eca9ba22002184ac05eddbe47a7fe2d5a384dfc" }, - "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, + "todo-comments.nvim": { "branch": "main", "commit": "319c01b99b7a8c9ac2066bf0efd4d6ec68fef444" }, + "tokyonight.nvim": { "branch": "main", "commit": "4b386e66a9599057587c30538d5e6192e3d1c181" }, "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, - "typescript-vim": { "branch": "master", "commit": "8d169e16b5487771f6568125d4c63e6086e524d9" }, - "vim-bbye": { "branch": "master", "commit": "25ef93ac5a87526111f43e5110675032dbcacf56" }, - "vim-exchange": { "branch": "master", "commit": "d6c1e9790bcb8df27c483a37167459bbebe0112e" }, - "vim-fugitive": { "branch": "master", "commit": "fcb4db52e7f65b95705aa58f0f2df1312c1f2df2" }, - "vim-gh-line": { "branch": "master", "commit": "731751fdfa4f64a061dbc7088cb7b2f12e0828ad" }, - "vim-gruvbox8": { "branch": "master", "commit": "60bb03df34fd6f22aed9dcb71f5cb297b6cceb3f" }, - "vim-indent-guides": { "branch": "master", "commit": "a1e1390c0136e63e813d051de2003bf0ee18ae30" }, - "vim-javascript": { "branch": "master", "commit": "c470ce1399a544fe587eab950f571c83cccfbbdc" }, - "vim-jsonc": { "branch": "master", "commit": "0b7ca17da85b5faa813be8ead3ad497e348b2763" }, - "vim-jsx": { "branch": "master", "commit": "8879e0d9c5ba0e04ecbede1c89f63b7a0efa24af" }, - "vim-nix": { "branch": "master", "commit": "e25cd0f2e5922f1f4d3cd969f92e35a9a327ffb0" }, - "vim-raku": { "branch": "master", "commit": "f4496123353cce789fc6645ceb686f5cf51acca3" }, - "vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" }, - "vim-rhai": { "branch": "main", "commit": "b0585e2c92a4a64edcd060836ae41d1e698ebc20" }, - "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "vim-smoothie": { "branch": "master", "commit": "df1e324e9f3395c630c1c523d0555a01d2eb1b7e" }, - "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }, - "vim-svelte": { "branch": "main", "commit": "0e93ec53c3667753237282926fec626785622c1c" }, - "vim-toml": { "branch": "main", "commit": "d36caa6b1cf508a4df1c691f915572fc02143258" }, - "vim-tsx": { "branch": "master", "commit": "77c89c42e189fefd3c9a632b37b7e3b3b9edf918" }, - "vim-visual-multi": { "branch": "master", "commit": "a6975e7c1ee157615bbc80fc25e4392f71c344d4" }, - "vim-vsnip": { "branch": "master", "commit": "02a8e79295c9733434aab4e0e2b8c4b7cea9f3a9" }, - "vim-vsnip-integ": { "branch": "master", "commit": "90ae474e8b05ed41e36d6f58382a9fbfb4b672c4" }, - "vimtex": { "branch": "master", "commit": "b8bb79b5fb27e9030ade92e75cd9375416f2c666" }, - "webapi-vim": { "branch": "master", "commit": "70c49ada7827d3545a65cbdab04c5c89a3a8464e" }, - "which-key.nvim": { "branch": "main", "commit": "8ab96b38a2530eacba5be717f52e04601eb59326" }, - "yats.vim": { "branch": "master", "commit": "b325c449a2db4d9ee38aa441afa850a815982e8b" }, - "yuck.vim": { "branch": "master", "commit": "9b5e0370f70cc30383e1dabd6c215475915fe5c3" } + "ts-comments.nvim": { "branch": "main", "commit": "872dcfa0418f4a33b7437fb4d9f4e89f2f000d74" }, + "which-key.nvim": { "branch": "main", "commit": "1f8d414f61e0b05958c342df9b6a4c89ce268766" }, + "zenbones.nvim": { "branch": "main", "commit": "3c0b86bb912d41d191d90c019a346f6a1d27f588" } } diff --git a/eggs/nvim/lazyvim.json b/eggs/nvim/lazyvim.json new file mode 100644 index 0000000..4e71622 --- /dev/null +++ b/eggs/nvim/lazyvim.json @@ -0,0 +1,16 @@ +{ + "extras": [ + "lazyvim.plugins.extras.ai.copilot", + "lazyvim.plugins.extras.ai.copilot-chat", + "lazyvim.plugins.extras.coding.mini-comment", + "lazyvim.plugins.extras.editor.telescope", + "lazyvim.plugins.extras.lang.json", + "lazyvim.plugins.extras.lang.markdown", + "lazyvim.plugins.extras.lang.rust", + "lazyvim.plugins.extras.lang.toml" + ], + "news": { + "NEWS.md": "10960" + }, + "version": 7 +} \ No newline at end of file diff --git a/eggs/nvim/lua/config/autocmds.lua b/eggs/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..3c711e9 --- /dev/null +++ b/eggs/nvim/lua/config/autocmds.lua @@ -0,0 +1,48 @@ +-- Autocmds are automatically loaded on the VeryLazy event +-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua +-- Add any additional autocmds here + +-- pre-defined autocmds are: +-- 1. Automatically reload the file when it changes (triggered on certain events like focus gain). +-- 2. Highlights text when yanked (copied). +-- 3. Resizes all window splits if the Vim window is resized. +-- 4. Automatically returns to the last cursor location when reopening a buffer, except for certain file types (e.g., gitcommit). +-- 5. Binds to close certain filetypes (like help, LSP info, and test panels) for easier quitting. +-- 6. Man files opened inline are set as unlisted to prevent clutter in buffer lists. +-- 7. Enables word wrap and spell checking for text-related filetypes (markdown, gitcommit, etc.). +-- 8. Disables JSON file concealment for better readability. +-- 9. Automatically creates missing directories when saving a file, ensuring that any intermediate directories are created if needed. +-- 10. Adds custom filetype detection logic to handle large files ("bigfile"), disables certain animations, and adjusts syntax highlighting to improve performance. + + +local function augroup(name) + return vim.api.nvim_create_augroup("drusk_" .. name, { clear = true }) +end + +-- Enable wrap and spell check for gitcommit and markdown filetypes +vim.api.nvim_create_autocmd("FileType", { + group = augroup("wrap_spell"), + pattern = { "gitcommit", "markdown" }, + callback = function() + vim.opt_local.wrap = true + vim.opt_local.spell = true + end, +}) + +-- Disable line numbers and enter insert mode when opening a terminal +vim.api.nvim_create_autocmd("TermOpen", { + group = augroup("term_open"), + callback = function() + vim.opt_local.number = false + vim.opt_local.relativenumber = false + vim.cmd("startinsert") + end, +}) + +-- Set filetype to "helm" for specific YAML template and helm-related files +vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead" }, { + pattern = { "*/templates/*.yaml", "*/templates/*.tpl", "*.gotmpl", "helmfile*.yaml" }, + callback = function() + vim.opt_local.filetype = "helm" + end, +}) diff --git a/eggs/nvim/lua/config/keymaps.lua b/eggs/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..f18d7cd --- /dev/null +++ b/eggs/nvim/lua/config/keymaps.lua @@ -0,0 +1,151 @@ +-- Keymaps are automatically loaded on the VeryLazy event +-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua +-- Add any additional keymaps here + + +-- TODO: these come from my old fennel config. I should definitely give them a second look +-- Disable command history +-- vim.keymap.set("n", "q:", ":q") -- creates a "wait time" if we plan to use q as quit +-- Remap q (record macro) to Q + + +local map = vim.keymap.set + +map("n", "q", "") +map("n", "Q", "q") +map("n", "", "") + +-- Helper function for which-key commands +local function cmd_string(s) + return "" .. s .. "" +end + + + +-- Buffer navigation +map("n", "h", cmd_string("bprevious"), { desc = "Previous buffer" }) +map("n", "l", cmd_string("bnext"), { desc = "Next buffer" }) +map("n", "", cmd_string("bprevious"), { desc = "Previous buffer" }) +map("n", "", cmd_string("bnext"), { desc = "Next buffer" }) +map("i", "", cmd_string("bprevious"), { desc = "Previous buffer" }) +map("i", "", cmd_string("bnext"), { desc = "Next buffer" }) +map("v", "", cmd_string("bprevious"), { desc = "Previous buffer" }) +map("v", "", cmd_string("bnext"), { desc = "Next buffer" }) +map("n", "", cmd_string("bdelete"), { desc = "Close buffer" }) + +-- Buffer management +map("n", "bc", cmd_string("bdelete!"), { desc = "Close buffer" }) +map("n", "bw", cmd_string("bwipeout!"), { desc = "Wipeout buffer" }) + +-- Close floating windows +local function close_floating() + for _, win in ipairs(vim.api.nvim_list_wins()) do + local config = vim.api.nvim_win_get_config(win) + if config.relative ~= "" then + vim.api.nvim_win_close(win, false) + end + end +end + +-- Use q and to close floating windows and clear search +-- Already handled by LazyVim +--map("n", "", function() +-- close_floating() +-- vim.cmd("nohlsearch") +--end) +-- +--map("n", "q", function() +-- close_floating() +-- vim.cmd("nohlsearch") +--end) + +-- Exit visual mode without relying on +local function exit_visual_mode() + vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "x", false) +end + +-- Use q and to close floating windows and clear search in visual mode +map("v", "", function() + close_floating() + vim.cmd("nohlsearch") + exit_visual_mode() +end) + +map("v", "q", function() + close_floating() + vim.cmd("nohlsearch") + exit_visual_mode() +end) + +-- Move up/down in menus with C-j and C-k +map({ "i", "n", "c" }, "", "", { desc = "Move down" }) +map({ "i", "n", "c" }, "", "", { desc = "Move up" }) + +-- Better indenting +map("v", "<", "", ">gv", { desc = "Increase indent" }) + +-- Indenting in insert mode +map("i", "", "", { desc = "Decrease indent" }) + +-- handled by mini.move +map("v", "", ">gv", { desc = "Increase indent" }) +map("v", "", "y", ""+y", { desc = "Copy (system)" }) +-- map("v", "y", ""+y", { desc = "Copy (system)" }) +-- map("n", "p", ""+p", { desc = "Paste (system)" }) +-- map("v", "p", ""+p", { desc = "Paste (system)" }) + +-- Copy-paste with Ctrl-C and Ctrl-V +-- map("v", "", ""+y", { desc = "Copy to system clipboard" }) -- BUG: C-c and esc are the same key +-- map("n", "", ""+p", { desc = "Paste from system clipboard" }) -- TODO: Can"t use due to visual block issues + +map("i", "", "'+p", { desc = "Paste from system clipboard" }) +map("v", "", "'+p", { desc = "Paste from system clipboard" }) + +-- Unmap default keybinds related to code (lsp) +vim.keymap.del("n", "cd") +vim.keymap.del("n", "cf") +vim.keymap.del("n", "cm") +vim.keymap.del("n", "cs") +vim.keymap.del("n", "cS") + +-- Unmap saving +vim.keymap.del("n", "") +vim.keymap.del("i", "") +vim.keymap.del("v", "") + + + + +-- diagnostic +local diagnostic_goto = function(next, severity) + local go = next and vim.diagnostic.goto_next or vim.diagnostic.goto_prev + severity = severity and vim.diagnostic.severity[severity] or nil + return function() + go({ severity = severity }) + end +end +map("n", "gd", vim.diagnostic.open_float, { desc = "Line Diagnostics" }) +map("n", "]d", diagnostic_goto(true), { desc = "Next Diagnostic" }) +map("n", "[d", diagnostic_goto(false), { desc = "Prev Diagnostic" }) +map("n", "]e", diagnostic_goto(true, "ERROR"), { desc = "Next Error" }) +map("n", "[e", diagnostic_goto(false, "ERROR"), { desc = "Prev Error" }) +map("n", "]w", diagnostic_goto(true, "WARN"), { desc = "Next Warning" }) +map("n", "[w", diagnostic_goto(false, "WARN"), { desc = "Prev Warning" }) + + +map("n", "C", + function() + local result = vim.treesitter.get_captures_at_cursor(0) + print(vim.inspect(result)) + end, + { noremap = true, silent = false, desc = "Get highlight group under cursor" } +) + + +-- Fix for Telescope"s race condition with default C-F +map("n", "", LazyVim.pick("files"), { noremap = true, silent = false }) diff --git a/eggs/nvim/lua/config/lazy.lua b/eggs/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..a6aa391 --- /dev/null +++ b/eggs/nvim/lua/config/lazy.lua @@ -0,0 +1,81 @@ +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 + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + spec = { + -- add LazyVim and import its plugins + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + -- import/override with your plugins + { import = "plugins" }, + }, + defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + }, + ui = { + icons = { + cmd = " ", + config = "", + debug = "●", + event = " ", + favorite = " ", + ft = " ", + init = " ", + import = " ", + keys = " ", + lazy = "󰒲 ", + loaded = "●", + not_loaded = "○", + plugin = " ", + runtime = " ", + require = "󰢱 ", + source = " ", + start = " ", + task = "✔ ", + list = { + "●", + "➜", + "★", + "‒", + }, + }, + }, + install = { colorscheme = { "habamax" } }, + checker = { + enabled = true, -- check for plugin updates periodically + notify = false, -- notify on update + }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, +}) diff --git a/eggs/nvim/lua/config/options.lua b/eggs/nvim/lua/config/options.lua new file mode 100644 index 0000000..7af0bbf --- /dev/null +++ b/eggs/nvim/lua/config/options.lua @@ -0,0 +1,84 @@ +-- Options are automatically loaded before lazy.nvim startup +vim.g.mapleader = " " -- Set space as the leader key +vim.g.maplocalleader = "," -- Set comma as the local leader key +vim.g.netrw_banner = 0 -- Disable netrw banner +vim.g.markdown_recommended_style = 0 -- Fix vim ignores shoftabstop in markdown + +local opt = vim.opt +opt.autowrite = true -- Auto-save before certain actions +opt.exrc = true -- Allow local .vimrc files in directories +opt.completeopt = "" -- Disable built-in completion behavior +opt.conceallevel = 3 -- Hide markup characters in files like markdown +opt.confirm = true -- Confirm to save changes before closing +opt.cursorline = true -- Highlight the current line +opt.expandtab = true -- Convert tabs to spaces + +-- As of nvim 0.9, gqq is broken. Use gww instead, or override: +-- vim.opt.formatexpr = "v:lua.require'lazyvim.util'.format.formatexpr()" +-- (set by lazyvim) +--opt.formatexpr = "" + +opt.formatoptions = "jcroqlnt" -- Set format options for comments and text wrapping +opt.grepformat = "%f:%l:%c:%m" -- Format for showing grep results +opt.grepprg = "rg --vimgrep" -- Use ripgrep for searching +opt.ignorecase = true -- Ignore case in search patterns +opt.inccommand = "nosplit" -- Live preview of substitution changes +opt.laststatus = 0 -- Hide the status line initially +opt.mouse = "a" -- Enable mouse support +opt.number = false -- Show line numbers +opt.pumblend = 10 -- Set popup menu transparency +opt.pumheight = 10 -- Limit popup menu height +opt.relativenumber = false -- Show relative line numbers +opt.scrolloff = 4 -- Minimal lines to keep above and below cursor +opt.sessionoptions = { -- Session persistence settings + "buffers", + "curdir", + "tabpages", + "winsize" +} +opt.shiftround = true -- Round indent to multiple of `shiftwidth` +opt.shiftwidth = 2 -- Number of spaces to use for indentation +opt.shortmess:append({ + I = true, -- Suppress intro message + W = true, -- Suppress "written" message when saving a file + c = true -- Suppress completion messages +}) +opt.showmode = false -- Don't show mode in command line (like -- INSERT --) +opt.sidescrolloff = 8 -- Columns to keep left/right of the cursor during horizontal scroll +opt.smartcase = true -- Override `ignorecase` if search contains uppercase letters +opt.smartindent = true -- Smart auto-indentation +opt.spelllang = { "en" } -- Set language for spell check to English +opt.splitbelow = true -- Force all horizontal splits to go below current window +opt.splitright = true -- Force all vertical splits to go to the right +opt.tabstop = 2 -- Number of spaces tabs count for +opt.termguicolors = true -- Enable 24-bit RGB colors in the terminal +opt.timeoutlen = 300 -- Time to wait for a mapped sequence to complete +opt.undofile = true -- Enable persistent undo +opt.undolevels = 10000 -- Maximum number of undo levels +opt.updatetime = 200 -- Faster completion (default is 4000ms) +opt.wildmode = "longest:full,full" -- Command-line completion mode +opt.winminwidth = 5 -- Minimum window width +opt.wrap = false -- Don't wrap lines by default +opt.compatible = false -- Disable 'compatible' mode to use modern features +opt.hidden = true -- Allow switching buffers without saving +opt.encoding = "utf-8" -- Set file encoding to UTF-8 +opt.autoindent = true -- Copy indent from current line when starting a new line +opt.incsearch = true -- Show search matches as you type +opt.ruler = false -- Don't show ruler (line and column info) +opt.switchbuf = "usetab" -- Reuse existing tabs for switching buffers +opt.smarttab = true -- Make tab behavior context-sensitive +opt.copyindent = true -- Copy indent from previous line +opt.previewheight = 38 -- Set height for preview windows +opt.softtabstop = -1 -- Use `shiftwidth` for tab size in editing +opt.backspace = "indent,eol,start" -- Allow backspacing over everything in insert mode +opt.swapfile = false -- Disable swap file creation +opt.foldcolumn = "0" -- No fold column on the left +opt.signcolumn = "yes" -- Always show the sign column +opt.laststatus = 3 -- Global status line +opt.shell = "zsh" -- Set default shell to zsh +opt.cmdheight = 1 -- Set height of command line to 1 +opt.showcmd = false -- Hide command in progress in command line +opt.cmdheight = 0 -- Hide command line when not in use +opt.splitkeep = "screen" -- Keep view stable when splitting +opt.statuscolumn = "" -- Customize status column +opt.clipboard = "" -- Do not use system clipboard diff --git a/eggs/nvim/lua/plugins/colorscheme.lua b/eggs/nvim/lua/plugins/colorscheme.lua new file mode 100644 index 0000000..1e5efa8 --- /dev/null +++ b/eggs/nvim/lua/plugins/colorscheme.lua @@ -0,0 +1,189 @@ +return { + { + "echasnovski/mini.icons", + opts = { + filetype = { + -- replace some icons that render too big + sh = { glyph = "" }, + yaml = { glyph = "" }, + } + }, + }, + { + "zenbones-theme/zenbones.nvim", + -- I dont want lush + --dependencies = "rktjmp/lush.nvim", + priority = 1000, + lazy = true, + config = function() + vim.g.zenbones_compat = 1 -- needed if lush is disabled + end + }, + { + "catppuccin/nvim", + name = "catppuccin", + opts_extend = { "custom_highlights" }, + priority = 1000, + opts = { + color_overrides = { + mocha = { + rosewater = "#d4be98", -- Gruvbox light beige + flamingo = "#ea6962", -- Gruvbox light red + pink = "#d3869b", -- Gruvbox purple ( a bit darker than regular) + mauve = "#d3869b", -- Gruvbox purple (reused as there's no direct equivalent) + red = "#ea6962", -- Gruvbox red + maroon = "#d75f5f", -- Gruvbox dark red + peach = "#e78a4e", -- Gruvbox orange + yellow = "#d8a657", -- Gruvbox yellow + green = "#a9b665", -- Gruvbox green + teal = "#89b482", -- Gruvbox aqua + sky = "#89b482", -- Gruvbox aqua (reused as there's no direct equivalent) + sapphire = "#7daea3", -- Gruvbox blue-green + blue = "#7daea3", -- Gruvbox blue + lavender = "#89b482", -- Gruvbox aqua (reused as there's no direct equivalent) + + -- Harder background + --text = "#fbf1c7", -- fg + --subtext1 = "#ebdbb2", -- primary text + --subtext0 = "#d5c4a1", -- punctuation + --overlay2q;q = "#c6b697", -- doc comments + --overlay1 = "#a89984", -- comments + --overlay0 = "#928474", -- invisibles + --surface2 = "#504945", -- darker grey + --surface1 = "#3c3836", -- dark grey + --surface0 = "#32302f", -- slightly lighter than bg + --base = "#1d2021", -- bg + --mantle = "#1d2021", -- same as bg + --crust = "#1b1b1b", -- slightly darker than bg + + --text = "#d9c9a5", -- Gruvbox fg + text = "#bfb191", -- Gruvbox fg - but darkened + subtext1 = "#d5c4a1", -- Gruvbox fg1 + subtext0 = "#bdae93", -- Gruvbox fg2 + overlay2 = "#a89984", -- Gruvbox fg3 + overlay1 = "#928374", -- Gruvbox fg4 + overlay0 = "#7c6f64", -- Gruvbox gray + surface2 = "#504945", -- Gruvbox bg2 + surface1 = "#3c3836", -- Gruvbox bg1 + surface0 = "#32302f", -- Gruvbox bg0_s + base = "#282828", -- Gruvbox bg0 + mantle = "#1d2021", -- Gruvbox bg0_h + crust = "#1b1b1b", -- Gruvbox bg0_h (slightly darker) + + }, + }, + no_italic = true, + no_bold = true, + custom_highlights = function(colors) + local U = require("catppuccin.utils.colors") + local scrollbarHandle = U.darken(colors.text, 0.10, colors.base) + + return { + Comment = --{ fg = U.darken(colors.surface3, 0.66, colors.base) }, + { fg = U.darken(colors.text, 0.35, colors.base) }, + -- Spelling + Spell = { fg = colors.red }, + SpellBad = { fg = colors.red }, + SpellCap = { fg = colors.red }, + SpellLocal = { fg = colors.red }, + + NormalBorder = { bg = colors.mantle, fg = colors.mantle }, + FloatBorder = { bg = colors.mantle, fg = colors.mantle }, + FloatTitle = { bg = colors.red, fg = colors.crust }, + MsgArea = { bg = colors.mantle, fg = colors.text }, + + -- Custom diagnostic highlights using the 'U.darken' function + DiagnosticVirtualTextError = { + bg = U.darken(colors.red, 0.07, colors.base), + fg = U.darken(colors.red, 0.65, colors.base) + }, + DiagnosticVirtualTextWarn = { + bg = U.darken(colors.yellow, 0.04, colors.base), + fg = U.darken(colors.yellow, 0.25, colors.base) + }, + DiagnosticVirtualTextInfo = { + bg = U.darken(colors.sky, 0.04, colors.base), + fg = U.darken(colors.sky, 0.25, colors.base) + }, + DiagnosticVirtualTextHint = { + bg = U.darken(colors.teal, 0.02, colors.base), + fg = U.darken(colors.teal, 0.5, colors.base) + }, + + -- TODO: Move to telescope.lua + -- currently, that breaks this highlighting + TelescopePromptPrefix = { bg = colors.mantle, fg = colors.red, }, + TelescopePromptTitle = { bg = colors.red, fg = colors.crust, }, + TelescopeSelection = { bg = colors.base, fg = colors.text, }, + TelescopeResultsDiffAdd = { fg = colors.green, }, + TelescopeResultsDiffChange = { fg = colors.yellow, }, + TelescopeResultsDiffDelete = { fg = colors.red, }, + TelescopeNormal = { bg = colors.mantle, }, + TelescopeBorder = { bg = colors.mantle, fg = colors.mantle, }, + TelescopePromptBorder = { bg = colors.mantle, fg = colors.mantle, }, + TelescopePromptNormal = { bg = colors.mantle, fg = colors.text, }, + TelescopeResultsTitle = { bg = colors.red, fg = colors.crust, }, + + -- TODO: move to notify + -- Does not work + -- NotifyBackground = { bg = colors.red, fg = colors.text }, + NoiceCmdline = { bg = U.darken(colors.mantle, 0.45, colors.base) }, + + + -- TODO: Move to LSP + LspInlayHint = { fg = U.darken(colors.text, 0.15, colors.mantle), bg = "" }, + + -- TODO: Move to noice / notify + -- Bug: does not work + NotifyBackground = { bg = colors.red }, + + -- Scrollbar highlights + + ScrollbarHandle = { bg = scrollbarHandle }, + ScrollbarCursorHandle = { bg = U.darken(colors.text, 0.25, colors.base) }, + -- link to CursorLine + ScrollbarCursor = { bg = "#2a2b3c" }, + + ScrollbarSearchHandle = { fg = colors.yellow, bg = scrollbarHandle }, + ScrollbarSearch = { fg = colors.yellow }, + + ScrollbarErrorHandle = { fg = colors.red, bg = scrollbarHandle }, + ScrollbarError = { fg = colors.red }, + + ScrollbarWarnHandle = { fg = colors.yellow, bg = scrollbarHandle }, + ScrollbarWarn = { fg = colors.yellow }, + + ScrollbarInfoHandle = { fg = colors.sky, bg = scrollbarHandle }, + ScrollbarInfo = { fg = colors.sky }, + + ScrollbarHintHandle = { fg = colors.teal, bg = scrollbarHandle }, + ScrollbarHint = { fg = colors.teal }, + + ScrollbarMiscHandle = { fg = colors.pink, bg = scrollbarHandle }, + ScrollbarMisc = { fg = colors.pink }, + + ScrollbarGitAddHandle = { fg = colors.green, bg = scrollbarHandle }, + ScrollbarGitAdd = { fg = colors.green }, + + ScrollbarGitChangeHandle = { fg = colors.yellow, bg = scrollbarHandle }, + ScrollbarGitChange = { fg = colors.yellow }, + + ScrollbarGitDeleteHandle = { fg = colors.red, bg = scrollbarHandle }, + ScrollbarGitDelete = { fg = colors.red }, + + -- Blink + BlinkCmpMenu = { bg = colors.mantle }, + + ["@error"] = { style = { "undercurl" } }, + + } + end, + }, + }, + { + "LazyVim/LazyVim", + opts = { + colorscheme = "catppuccin", + }, + }, +} diff --git a/eggs/nvim/lua/plugins/completion.lua b/eggs/nvim/lua/plugins/completion.lua new file mode 100644 index 0000000..57d8b02 --- /dev/null +++ b/eggs/nvim/lua/plugins/completion.lua @@ -0,0 +1,75 @@ +return { + { + "L3MON4D3/LuaSnip", + keys = function() + return {} + end, + }, + { + "saghen/blink.cmp", + opts = { + -- Disable for some filetypes + enabled = function() + return not vim.tbl_contains({ "DressingInput" }, vim.bo.filetype) + and vim.bo.buftype ~= "prompt" + and vim.b.completion ~= false + end, + signature = { enabled = true }, + -- Disable scrollbars in favor of scrollbar.nvim + completion = { + ghost_text = { enabled = false }, + menu = { + scrollbar = false, + auto_show = false, + }, + documentation = { + auto_show = true, + window = { + scrollbar = false, + }, + }, + }, + sources = { + -- https://github.com/Saghen/blink.cmp/blob/00ad008cbea4d0d2b5880e7c7386caa9fc4e5e2b/lua/blink/cmp/config/sources.lua#L60 + providers = { + lsp = { + transform_items = function(_, items) + local types = require('blink.cmp.types') + -- demote snippets + for _, item in ipairs(items) do + if item.kind == types.CompletionItemKind.Snippet then + item.score_offset = item.score_offset - 3 + end + end + + -- give priority to constants (also rust's enum variants) over methods + for _, item in ipairs(items) do + if item.kind == types.CompletionItemKind.Constant then + item.score_offset = item.score_offset + 3 + end + end + + -- filter out text items, since we have the buffer source + return vim.tbl_filter( + function(item) return item.kind ~= types.CompletionItemKind.Text end, + items + ) + end, + }, + }, + }, + keymap = { + preset = "enter", + [""] = {}, -- disable lazyvim mapping + [""] = { function(cmp) cmp.scroll_documentation_up(4) end }, + [""] = { function(cmp) cmp.scroll_documentation_down(4) end }, + [""] = { "select_next", "fallback" }, + [""] = { "select_prev", "fallback" }, + [''] = { 'show', 'show_documentation', 'hide_documentation' }, + [""] = { "select_and_accept", "fallback" }, + [""] = { "select_and_accept", "fallback" }, + [""] = { "fallback" }, + }, + } + } +} diff --git a/eggs/nvim/lua/plugins/disabled.lua b/eggs/nvim/lua/plugins/disabled.lua new file mode 100644 index 0000000..c50625d --- /dev/null +++ b/eggs/nvim/lua/plugins/disabled.lua @@ -0,0 +1,41 @@ +return { + -- { "folke/trouble.nvim", enabled = false }, + -- { "folke/noice.nvim", enabled = false }, + -- { "MunifTanjim/nui.nvim", enabled = false }, + -- { "rcarriga/nvim-notify", enabled = false }, + + { + "sphamba/smear-cursor.nvim", + opts = { + smear_between_neighbor_lines = false, + }, + enabled = false, + }, + + { "folke/tokyonight.nvim", enabled = false }, + --{ "nvimdev/dashboard-nvim", enabled = false }, + { "lucas-reineke/indent-blankline.nvim", enabled = false }, + { "folke/flash.nvim", enabled = false }, + { "folke/todo-comments.nvim", enabled = false }, + { "nvim-neo-tree/neo-tree.nvim", enabled = false }, + { "folke/persistence.nvim", enabled = false }, + { "rafamadriz/friendly-snippets", enabled = false }, + { "garymjr/nvim-snippets", enabled = false }, + { "akinsho/bufferline.nvim", enabled = false }, + -- html + { "windwp/nvim-ts-autotag", enabled = false }, + -- ?? + { "Bilal2453/luvit-meta", enabled = false }, + + -- { "echasnovski/mini.ai", enabled = false }, -- a / i text objects like a( a) a'... + -- { "echasnovski/mini.icons", enabled = false }, + { "echasnovski/mini.pairs", enabled = false }, -- [({})] kind of thing + -- { "stevearc/dressing.nvim", enabled = false }, -- used tor lsp popups and pickers + { "stevearc/conform.nvim", enabled = false }, -- formatter + -- { "MagicDuck/grug-far.nvim", enabled = false }, -- find and replace + -- Limit to one notification https://github.com/rcarriga/nvim-notify/issues/120#issuecomment-1214168883 + -- Change styles + -- Make buffer not selectable with C-W + + -- TODO: use (or take as inspiration) 'diagflow' for aligned and improved diagnostics +} diff --git a/eggs/nvim/lua/plugins/lazyvim.lua b/eggs/nvim/lua/plugins/lazyvim.lua new file mode 100644 index 0000000..45368ab --- /dev/null +++ b/eggs/nvim/lua/plugins/lazyvim.lua @@ -0,0 +1,46 @@ +return { + { + + "LazyVim/LazyVim", + branch = "main", + --commit = "7c7c196a78e936a1bc4cf28e7908e9bd96d75607", -- 0.12 + --commit = "b2f750558a3737879f8151e741e7a3988886e37f", -- 0.13 + + opts = { + defaults = { + autocmds = true, -- lazyvim.config.autocmds + keymaps = true, -- lazyvim.config.keymaps + }, + } + }, + { + "snacks.nvim", + opts = { + notifier = { + enabled = false, -- TODO: switch out nvim-notify + }, + dashboard = { + enabled = false, + }, + indent = { + enabled = false, + }, + scroll = { + enabled = false, + }, + lazygit = { + enabled = false, + }, + terminal = { + enabled = false, + }, + -- Reemplaces dressing.nvim (for rename) + input = { + enabled = false, + win = { + relative = "cursor", + } + } + } + } +} diff --git a/eggs/nvim/lua/plugins/lsp.lua b/eggs/nvim/lua/plugins/lsp.lua new file mode 100644 index 0000000..d51e7e6 --- /dev/null +++ b/eggs/nvim/lua/plugins/lsp.lua @@ -0,0 +1,229 @@ +function cmdbind(cmd) + return function() + vim.cmd(cmd) + end +end + +function trouble(thing) + return cmdbind("Trouble " .. thing .. " focus=true") +end + +return { + --{ + -- "smjonas/inc-rename.nvim", + -- opts = { + -- --input_buffer_type = "dressing" + -- } + --}, + { + "stevearc/dressing.nvim", + opts = { + select = { + backend = { "builtin" }, + builtin = { + min_height = { 0, 0 }, + title_pos = "left", + border = "single", + relative = "cursor", + }, + } + } + }, + { + "neovim/nvim-lspconfig", + opts = function(_, opts) + local keymaps = require("lazyvim.plugins.lsp.keymaps").get() + vim.lsp.handlers["textDocument/publishDiagnostics"] = + vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { + -- Disable underline of errors (it's annoying) + underline = false, + }) + + -- Disable all the default LazyVim keymaps + for _, keymap in ipairs(keymaps) do + keymap[2] = false + end + + local custom_keymaps = { + { "mf", vim.lsp.buf.format, desc = "Format buffer", mode = { "n" }, }, + { "", vim.lsp.buf.signature_help, mode = { "n", "i" }, desc = "Signature Help", has = "signatureHelp" }, + { "md", vim.lsp.buf.hover, desc = "Hover" }, + { "ms", vim.lsp.buf.workspace_symbol, desc = "Project symbol search" }, + { "mg", trouble("lsp_definitions"), desc = "Goto Definition", has = "definition" }, + { "gd", trouble("lsp_definitions"), desc = "Goto Definition", has = "definition" }, + { "mi", trouble("lsp_implementations"), desc = "Goto Implementation" }, + { "mt", trouble("lsp_type_definitions"), desc = "Goto Type Definition" }, + { "mn", vim.lsp.buf.rename, desc = "Rename", has = "rename" }, + { "mr", trouble("lsp_references"), desc = "Find referenes" }, + { "mv", vim.lsp.buf.code_action, desc = "Code actions" }, + + { "ml", vim.lsp.codelens.run, desc = "Run Codelens", mode = { "n", "v" }, has = "codeLens" }, + { "mA", LazyVim.lsp.action.source, desc = "Source Action", has = "codeAction" }, + { "mD", trouble("lsp_declarations"), desc = "Goto Declaration" }, + { "K", vim.lsp.buf.signature_help, mode = "n", desc = "Signature Help", has = "signatureHelp" }, + { "mN", Snacks.rename.rename_file, desc = "Rename File", mode = { "n" }, has = { "workspace/didRenameFiles", "workspace/willRenameFiles" } }, + + { "me", vim.diagnostic.goto_next, desc = "Line Diagnostics" }, + { "ee", cmdbind("Trouble diagnostics focus=true"), desc = "Line Diagnostics" }, + + { + "]]", + function() Snacks.words.jump(vim.v.count1) end, + has = "documentHighlight", + desc = "Next Reference", + cond = function() return Snacks.words.enabled end + }, + { + "[[", + function() Snacks.words.jump(-vim.v.count1) end, + has = "documentHighlight", + desc = "Prev Reference", + cond = function() return Snacks.words.enabled end + }, + } + + vim.list_extend(keymaps, custom_keymaps) + opts.keymaps = keymaps + end, + }, + { + "Bekaboo/dropbar.nvim", + event = "LspAttach", + keys = { + { + "", + function() + local dropbar_utils = require("dropbar.utils") + local dropbar_api = require("dropbar.api") + local bar = dropbar_utils.bar.get_current() + local components = bar.components + dropbar_api.pick(#components) + --if not menu then + -- return + --end + --local cursor = vim.api.nvim_win_get_cursor(menu.win) + --local component = menu.entries[cursor[1]]:first_clickable(cursor[2]) + --if component then + -- menu:click_on(component, nil, 1, "l") + --end + end, + desc = "Pick symbols in winbar" + }, + }, + -- https://github.com/Bekaboo/dropbar.nvim/issues/160 + opts = function() + local utils = require('dropbar.utils') + local bar_utils = require('dropbar.utils.bar') + local api = require('dropbar.api') + + local open_item_and_close_menu = function() + local menu = utils.menu.get_current() + local cursor = vim.api.nvim_win_get_cursor(menu.win) + local entry = menu.entries[cursor[1]] + -- stolen from https://github.com/Bekaboo/dropbar.nvim/issues/66 + local component = entry:first_clickable(entry.padding.left + entry.components[1]:bytewidth()) + if component then + menu:click_on(component, nil, 1, 'l') + end + end + + local function prev_breadcrumb() + local menu = utils.menu.get_current() + if menu.prev_menu then + menu:close() + end + local bar = bar_utils.get({ win = menu.prev_win }) + if not bar then + return + end + local barComponents = bar.components + for _, component in ipairs(barComponents) do + if component.menu then + local idx = component._.bar_idx + if idx > 1 then -- Only move if not at the first item + menu:close() + api.pick(idx - 1) + end + break + end + end + end + + + local function next_breadcrumb() + local menu = utils.menu.get_current() + if menu.prev_menu then + menu:close() + end + local bar = bar_utils.get({ win = menu.prev_win }) + if not bar then + return + end + local barComponents = bar.components + local maxIdx = #barComponents + for _, component in ipairs(barComponents) do + if component.menu then + local idx = component._.bar_idx + if idx < maxIdx then + menu:close() + api.pick(idx + 1) + end + break + end + end + end + local expand_menu = function() + local menu = utils.menu.get_current() + if not menu then + return + end + local cursor = vim.api.nvim_win_get_cursor(menu.win) + local component = menu.entries[cursor[1]]:first_clickable(cursor[2]) + if component then + menu:click_on(component, nil, 1, 'l') + end + end + + return { + + menu = { + -- do not switch editor view on selection, use CR otherwise, the + -- next_breadcrumb will not work sometimes because the window changes + preview = false, + keymaps = { + [''] = function() + -- Move to previous breadcrumb + prev_breadcrumb() + end, + [''] = function() + -- Move to next breadcrumb + next_breadcrumb() + end, + ['h'] = function() + prev_breadcrumb() + end, + ['l'] = function() + expand_menu() + end, + [''] = open_item_and_close_menu, + ['o'] = open_item_and_close_menu, + } + }, + } + end + }, + { + "chrisgrieser/nvim-lsp-endhints", + event = "LspAttach", + opts = { + icons = { + type = "» ", + parameter = "« ", + offspec = " ", -- hint kind not defined in official LSP spec + unknown = " ", -- hint kind is nil + }, + }, + }, +} + +-- try: https://github.com/Saghen/blink.cmp?tab=readme-ov-file#compared-to-nvim-cmp diff --git a/eggs/nvim/lua/plugins/lualine.lua b/eggs/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..3393d09 --- /dev/null +++ b/eggs/nvim/lua/plugins/lualine.lua @@ -0,0 +1,33 @@ +return { + { + "nvim-lualine/lualine.nvim", + opts = function(_, opts) + -- needed to not override lazyvim's options for the sections + local opts = vim.tbl_deep_extend("force", opts, { + options = { + component_separators = { left = "│", right = "│" }, + section_separators = { left = " ", right = " " }, + }, + sections = { + lualine_y = { + { "location", padding = { left = 0, right = 1 } } + }, + lualine_z = {}, + }, + tabline = { + lualine_b = { + { + "buffers", + mode = 2, + max_length = 999999, + use_mode_colors = true, + padding = { left = 1, right = 1 } + } + }, + } + }) + + return opts + end + } +} diff --git a/eggs/nvim/lua/plugins/markdown.lua b/eggs/nvim/lua/plugins/markdown.lua new file mode 100644 index 0000000..b3f64a2 --- /dev/null +++ b/eggs/nvim/lua/plugins/markdown.lua @@ -0,0 +1,18 @@ +return { + { + "MeanderingProgrammer/render-markdown.nvim", + opts = { + checkbox = { + enabled = true, + checked = { + icon = "" + --  + }, + unchecked = { + icon = "" + --  + } + }, + }, + } +} diff --git a/eggs/nvim/lua/plugins/mini-comment.lua b/eggs/nvim/lua/plugins/mini-comment.lua new file mode 100644 index 0000000..9aab2c8 --- /dev/null +++ b/eggs/nvim/lua/plugins/mini-comment.lua @@ -0,0 +1,11 @@ +return { + { + 'echasnovski/mini.comment', + opts = { + mappings = { + comment_line = "c", + comment_visual = "c", + } + } + } +} diff --git a/eggs/nvim/lua/plugins/move.lua b/eggs/nvim/lua/plugins/move.lua new file mode 100644 index 0000000..1cfa4d7 --- /dev/null +++ b/eggs/nvim/lua/plugins/move.lua @@ -0,0 +1,33 @@ +local function lua_cmd_string(s) + return "lua " .. s .. "" +end + + +return { + "echasnovski/mini.move", + --opts = { + -- TODO: figure out which mappings to use that do not conflict with popup menus, or tmux (no alt) + -- mappings = { + -- -- -- visual + -- -- left = "", + -- -- right = "", + -- -- down = "", + -- -- up = "", + -- -- -- normal + -- -- line_left = "", + -- -- line_right = "", + -- -- word_left = "", + -- -- word_right = "", + -- -- } + --}, + keys = { + -- We cannot map , it's the same as which is used by vim for jumping around + -- TODO: unsure if alacritty supports custom keycodes / modifyOtherKeys xterm stuff. Look into it, it might be a workaround :) + -- foot seems tohttps://codeberg.org/dnkl/foot/issues/319 + -- { "", lua_cmd_string("MiniMove.move_line('right')"), noremap = true, }, + { "", lua_cmd_string("MiniMove.move_line('left')"), noremap = true, }, + -- Handled by keymaps.lua + -- { "", lua_cmd_string("MiniMove.move_line('right')"), mode = "v", noremap = true, }, + -- { "", lua_cmd_string("MiniMove.move_line('left')"), mode = "v", noremap = true, }, + }, +} diff --git a/eggs/nvim/lua/plugins/noice.lua b/eggs/nvim/lua/plugins/noice.lua new file mode 100644 index 0000000..15d9023 --- /dev/null +++ b/eggs/nvim/lua/plugins/noice.lua @@ -0,0 +1,74 @@ +return { + { + "folke/noice.nvim", + opts = function(_, opts) + return vim.tbl_extend("force", + { + cmdline = { + view = "cmdline", + enabled = true, + }, + messages = { + enabled = true, + }, + -- the completion menu for the cmdline + popupmenu = { + enabled = true, + backend = "nui" -- do not use the "vscode style" middle of the screen popup (nui?) + -- Side effect: apparently fixed an issue with "Save changes to ..." popup being slow to respond(?) + } + }, opts) + end + }, + { + "rcarriga/nvim-notify", + opts = function(_, opts) + local stages_util = require("notify.stages.util") + -- mix between https://github.com/rcarriga/nvim-notify/issues/105 + -- and https://github.com/rcarriga/nvim-notify/blob/master/lua/notify/stages/static.lua + -- Basically: No border + move notifications up as they expire + local function static_no_border_and_move_up(direction) + return { + function(state) + local next_height = state.message.height + 2 + local next_row = stages_util.available_slot(state.open_windows, next_height, stages_util.DIRECTION.TOP_DOWN) + if not next_row then + return nil + end + return { + relative = "editor", + anchor = "NE", + width = state.message.width, + height = state.message.height, + col = vim.opt.columns:get(), + row = next_row, + border = "none", + style = "minimal", + } + end, + function(state, win) + return { + col = vim.opt.columns:get(), + time = true, + row = { + stages_util.slot_after_previous(win, state.open_windows, stages_util.DIRECTION.TOP_DOWN), + frequency = 3, + complete = function() + return true + end, + } + } + end, + } + end + + return { + render = "compact", + stages = static_no_border_and_move_up(), + on_open = function(win) + vim.api.nvim_win_set_config(win, { focusable = false }) + end, + } + end + } +} diff --git a/eggs/nvim/lua/plugins/remote.lua b/eggs/nvim/lua/plugins/remote.lua new file mode 100644 index 0000000..40c8004 --- /dev/null +++ b/eggs/nvim/lua/plugins/remote.lua @@ -0,0 +1,11 @@ +return { + { + "amitds1997/remote-nvim.nvim", + version = "*", -- Pin to GitHub releases + dependencies = { + "nvim-lua/plenary.nvim", -- For standard functions + "MunifTanjim/nui.nvim", -- To build the plugin UI + "nvim-telescope/telescope.nvim", -- For picking b/w different remote methods + }, + config = true, + } } diff --git a/eggs/nvim/lua/plugins/rust.lua b/eggs/nvim/lua/plugins/rust.lua new file mode 100644 index 0000000..9f610f2 --- /dev/null +++ b/eggs/nvim/lua/plugins/rust.lua @@ -0,0 +1,12 @@ +return { + 'neovim/nvim-lspconfig', + opts = { + setup = { + -- Fix a problem with rust_analyzer being installed with lazyvim + -- see `:h rustaceanvim.mason` + rust_analyzer = function() + return true + end, + }, + }, +} diff --git a/eggs/nvim/lua/plugins/scrollbar.lua b/eggs/nvim/lua/plugins/scrollbar.lua new file mode 100644 index 0000000..d42d6b2 --- /dev/null +++ b/eggs/nvim/lua/plugins/scrollbar.lua @@ -0,0 +1,27 @@ +return { + { + "petertriho/nvim-scrollbar", + opts = { + set_highlights = false, + hide_if_all_visible = true, + throttle_ms = 50, -- default: 100 + marks = { + Error = { + text = { "-" }, + }, + Warn = { + text = { "-" }, + }, + Info = { + text = { "-" }, + }, + Hint = { + text = { "-" }, + }, + Cursor = { + text = " ", + } + } + } + } +} diff --git a/eggs/nvim/lua/plugins/telescope.lua b/eggs/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..b18c409 --- /dev/null +++ b/eggs/nvim/lua/plugins/telescope.lua @@ -0,0 +1,35 @@ +return { + { + "catppuccin/nvim", + name = "catppuccin", + opts = { + no_italic = true, + no_bold = true, + }, + }, + { + "nvim-telescope/telescope.nvim", + keys = { + { "o", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" }, + { "p", LazyVim.pick("files"), desc = "Find Files (Root Dir)" }, + { ":", LazyVim.pick("commands"), desc = "Commands" }, + }, + opts = function(_, opts) + local actions = require("telescope.actions") + opts.defaults.mappings = { + i = { + [""] = actions.move_selection_next, + [""] = actions.move_selection_previous, + [""] = actions.move_selection_next, + [""] = actions.move_selection_previous, + [""] = actions.close, + [""] = actions.close, + }, + n = { + ["q"] = actions.close, + ["o"] = actions.close, + }, + } + end, + }, +} diff --git a/eggs/nvim/lua/plugins/treesitter.lua b/eggs/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..eca2773 --- /dev/null +++ b/eggs/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,6 @@ +return { + { + "nvim-treesitter/playground", + cmd = { "TSPlaygroundToggle", "TSHighlightCapturesUnderCursor" }, + } +} diff --git a/eggs/nvim/stylua.toml b/eggs/nvim/stylua.toml new file mode 100644 index 0000000..5d6c50d --- /dev/null +++ b/eggs/nvim/stylua.toml @@ -0,0 +1,3 @@ +indent_type = "Spaces" +indent_width = 2 +column_width = 120 \ No newline at end of file diff --git a/eggs/nvim/syntax/jinja.vim b/eggs/nvim/syntax/jinja.vim new file mode 100644 index 0000000..304089c --- /dev/null +++ b/eggs/nvim/syntax/jinja.vim @@ -0,0 +1,141 @@ +" Vim syntax file +" Language: Jinja template +" Maintainer: Armin Ronacher +" Last Change: 2008 May 9 +" Version: 1.1 +" +" Known Bugs: +" because of odd limitations dicts and the modulo operator +" appear wrong in the template. +" +" Changes: +" +" 2008 May 9: Added support for Jinja 2 changes (new keyword rules) + +" .vimrc variable to disable html highlighting +if !exists('g:jinja_syntax_html') + let g:jinja_syntax_html=1 +endif + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if !exists("main_syntax") + if v:version < 600 + syntax clear + elseif exists("b:current_syntax") + finish + endif + let main_syntax = 'jinja' +endif + +" Pull in the HTML syntax. +if g:jinja_syntax_html + if v:version < 600 + so :p:h/html.vim + else + let ext = expand('%:e') + if ext !~ 'htm\|nunj|jinja\|j2' && + \ findfile(ext . '.vim', $VIMRUNTIME . '/syntax') != '' + execute 'runtime! syntax/' . ext . '.vim' + else + runtime! syntax/html.vim + endif + unlet b:current_syntax + endif +endif + +syntax case match + +" Jinja template built-in tags and parameters (without filter, macro, is and raw, they +" have special threatment) +syn keyword jinjaStatement containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained and if else in not or recursive as import + +syn keyword jinjaStatement containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained is filter skipwhite nextgroup=jinjaFilter +syn keyword jinjaStatement containedin=jinjaTagBlock contained macro skipwhite nextgroup=jinjaFunction +syn keyword jinjaStatement containedin=jinjaTagBlock contained block skipwhite nextgroup=jinjaBlockName + +" Variable Names +syn match jinjaVariable containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[a-zA-Z_][a-zA-Z0-9_]*/ +syn keyword jinjaSpecial containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained false true none False True None loop super caller varargs kwargs + +" Filters +syn match jinjaOperator "|" containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained skipwhite nextgroup=jinjaFilter +syn match jinjaFilter contained /[a-zA-Z_][a-zA-Z0-9_]*/ +syn match jinjaFunction contained /[a-zA-Z_][a-zA-Z0-9_]*/ +syn match jinjaBlockName contained /[a-zA-Z_][a-zA-Z0-9_]*/ + +" Jinja template constants +syn region jinjaString containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained start=/"/ skip=/\(\\\)\@\)*\\"/ end=/"/ +syn region jinjaString containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained start=/'/ skip=/\(\\\)\@\)*\\'/ end=/'/ +syn match jinjaNumber containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[0-9]\+\(\.[0-9]\+\)\?/ + +" Operators +syn match jinjaOperator containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[+\-*\/<>=!,:]/ +syn match jinjaPunctuation containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /[()\[\]]/ +syn match jinjaOperator containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained /\./ nextgroup=jinjaAttribute +syn match jinjaAttribute contained /[a-zA-Z_][a-zA-Z0-9_]*/ + +" Jinja template tag and variable blocks +syn region jinjaNested matchgroup=jinjaOperator start="(" end=")" transparent display containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained +syn region jinjaNested matchgroup=jinjaOperator start="\[" end="\]" transparent display containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained +syn region jinjaNested matchgroup=jinjaOperator start="{" end="}" transparent display containedin=jinjaVarBlock,jinjaTagBlock,jinjaNested contained +syn region jinjaTagBlock matchgroup=jinjaTagDelim start=/{%[-+]\?/ end=/[-+]\?%}/ containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaRaw,jinjaString,jinjaNested,jinjaComment + +syn region jinjaVarBlock matchgroup=jinjaVarDelim start=/{{-\?/ end=/-\?}}/ containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaRaw,jinjaString,jinjaNested,jinjaComment + +" Jinja template 'raw' tag +syn region jinjaRaw matchgroup=jinjaRawDelim start="{%\s*raw\s*%}" end="{%\s*endraw\s*%}" containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaString,jinjaComment + +" Jinja comments +syn region jinjaComment matchgroup=jinjaCommentDelim start="{#" end="#}" containedin=ALLBUT,jinjaTagBlock,jinjaVarBlock,jinjaString,jinjaComment + +" Block start keywords. A bit tricker. We only highlight at the start of a +" tag block and only if the name is not followed by a comma or equals sign +" which usually means that we have to deal with an assignment. +syn match jinjaStatement containedin=jinjaTagBlock contained /\({%[-+]\?\s*\)\@<=\<[a-zA-Z_][a-zA-Z0-9_]*\>\(\s*[,=]\)\@!/ + +" and context modifiers +syn match jinjaStatement containedin=jinjaTagBlock contained /\/ + + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if v:version >= 508 || !exists("did_jinja_syn_inits") + if v:version < 508 + let did_jinja_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink jinjaPunctuation jinjaOperator + HiLink jinjaAttribute jinjaVariable + HiLink jinjaFunction jinjaFilter + + HiLink jinjaTagDelim jinjaTagBlock + HiLink jinjaVarDelim jinjaVarBlock + HiLink jinjaCommentDelim jinjaComment + HiLink jinjaRawDelim jinja + + HiLink jinjaSpecial Special + HiLink jinjaOperator Normal + HiLink jinjaRaw Normal + HiLink jinjaTagBlock PreProc + HiLink jinjaVarBlock PreProc + HiLink jinjaStatement Statement + HiLink jinjaFilter Function + HiLink jinjaBlockName Function + HiLink jinjaVariable Identifier + HiLink jinjaString Constant + HiLink jinjaNumber Constant + HiLink jinjaComment Comment + + delcommand HiLink +endif + +let b:current_syntax = "jinja" + +if main_syntax ==# 'jinja' + unlet main_syntax +endif diff --git a/eggs/nvim/syntax/kdl.vim b/eggs/nvim/syntax/kdl.vim new file mode 100644 index 0000000..d8e9364 --- /dev/null +++ b/eggs/nvim/syntax/kdl.vim @@ -0,0 +1,39 @@ +" Vim syntax file +" Language: KDL +" Maintainer: Aram Drevekenin +" Latest Revision: 29 September 2022 +" +syn match kdlNode '\v(\w|-|\=)' display +syn match kdlBool '\v(true|false)' display + +syn keyword kdlTodo contained TODO FIXME XXX NOTE +syn match kdlComment "//.*$" contains=kdlTodo + +" Regular int like number with - + or nothing in front +syn match kdlNumber '\d\+' +syn match kdlNumber '[-+]\d\+' + +" Floating point number with decimal no E or e (+,-) +syn match kdlNumber '\d\+\.\d*' contained display +syn match kdlNumber '[-+]\d\+\.\d*' contained display + +" Floating point like number with E and no decimal point (+,-) +syn match kdlNumber '[-+]\=\d[[:digit:]]*[eE][\-+]\=\d\+' contained display +syn match kdlNumber '\d[[:digit:]]*[eE][\-+]\=\d\+' contained display + +" Floating point like number with E and decimal point (+,-) +syn match kdlNumber '[-+]\=\d[[:digit:]]*\.\d*[eE][\-+]\=\d\+' contained display +syn match kdlNumber '\d[[:digit:]]*\.\d*[eE][\-+]\=\d\+' contained display + +syn region kdlString start='"' end='"' skip='\\\\\|\\"' display + +syn region kdlChildren start="{" end="}" contains=kdlString,kdlNumber,kdlNode,kdlBool,kdlComment + +let b:current_syntax = "kdl" + +hi def link kdlTodo Todo +hi def link kdlComment Comment +hi def link kdlNode Statement +hi def link kdlBool Boolean +hi def link kdlString String +hi def link kdlNumber Number diff --git a/eggs/zed/settings.json b/eggs/zed/settings.json index f41ccb1..964ce5a 100644 --- a/eggs/zed/settings.json +++ b/eggs/zed/settings.json @@ -1,4 +1,5 @@ { + "remove_trailing_whitespace_on_save": false, "auto_signature_help": false, "unnecessary_code_fade": 0.5, // "use_autoclose": true, diff --git a/eggs/zsh/.config/zsh/.zshrc b/eggs/zsh/.config/zsh/.zshrc index 9792798..8881e80 100644 --- a/eggs/zsh/.config/zsh/.zshrc +++ b/eggs/zsh/.config/zsh/.zshrc @@ -102,6 +102,8 @@ elif command -v exa >/dev/null; then alias ls="exa" fi alias dots="git -C $HOME/dots-of-war" +alias yk="yolk" +alias ygit="yolk git" # load prompt if command -v starship >/dev/null; then @@ -151,7 +153,9 @@ export PATH="$HOME/.bun/bin:$PATH" export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" -[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm +if [ -s "$NVM_DIR/nvm.sh" ]; then + . "$NVM_DIR/nvm.sh" +fi if [ -d "/Applications/WezTerm.app" ]; then export PATH="/Applications/WezTerm.app/Contents/MacOS:$PATH" diff --git a/yolk.rhai b/yolk.rhai index f713a0a..f983b51 100644 --- a/yolk.rhai +++ b/yolk.rhai @@ -23,7 +23,7 @@ export let eggs = #{ "foot": #{ enabled: device.linux, targets: "~/.config/foot", templates: ["foot.ini"] }, "git": merge_into_home(true, [".gitconfig"]), "niri": #{ enabled: device.linux, targets: "~/.config/niri", templates: ["**/*.kdl"] }, - "nvim": #{ strategy: "put", targets: "~/.config/nvim", main_file: "fnl/main.fnl" }, + "nvim": #{ strategy: "put", targets: "~/.config/nvim", main_file: "init.lua" }, "profile": #{ enabled: device.linux, strategy: "merge", targets: "~" }, "starship": merge_into_home(true, []),