-- Bootstrap lazy.nvim local ensure_lazy = function() 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) end local lazy_bootstrap = ensure_lazy() if lazy_bootstrap then print("Bootstrapped lazy.nvim") end require("lazy").setup({ install = { colorscheme = { "alabaster" } }, checker = { enabled = false }, spec = { -- Color themes { "shaunsingh/nord.nvim", priority = 1000, lazy = true }, { "shaunsingh/moonlight.nvim", priority = 1000, lazy = true }, { "folke/tokyonight.nvim", priority = 1000, lazy = true }, { "cranberry-clockworks/coal.nvim", priority = 1000, lazy = true }, { "hardselius/warlock", priority = 1000, lazy = true }, { "sontungexpt/witch", priority = 1000, lazy = true, config = true }, { "rose-pine/neovim", priority = 1000, lazy = true }, { "catppuccin/nvim", name = "catppuccin", priority = 1000, lazy = true }, { "p00f/alabaster.nvim", priority = 1000, lazy = true }, { "neanias/everforest-nvim", version = false, lazy = true, priority = 1000, -- make sure to load this before all the other start plugins main = "everforest", opts = { background = "hard" } }, { "rebelot/kanagawa.nvim", opts = { compile = true }, priority = 1000, lazy = true }, { 'jesseleite/nvim-noirbuddy', dependencies = { 'tjdevries/colorbuddy.nvim', 'nvim-lualine/lualine.nvim' }, lazy = true, priority = 1000, config = function(_, opts) -- configure lualine require('noirbuddy').setup(opts) local noirbuddy_lualine = require("noirbuddy.plugins.lualine") require("lualine").setup { options = { icons_enabled = true, --theme = "auto" theme = noirbuddy_lualine.theme }, sections = noirbuddy_lualine.sections, inactive_sections = noirbuddy_lualine.inactive_sections, } end, opts = { -- All of your `setup(opts)` will go here preset = "oxide", colors = { noir_8 = "#3A4649" } }, }, { "plan9-for-vimspace/acme-colors" }, -- Completion { "hrsh7th/nvim-cmp", dependencies = { "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", "hrsh7th/cmp-vsnip", "hrsh7th/vim-vsnip", "petertriho/cmp-git", "hrsh7th/cmp-cmdline" }, config = require('completion') }, -- nvim lsp plugins { "neovim/nvim-lspconfig", config = false }, -- LSP Goodness { "ray-x/navigator.lua", dependencies = { { 'ray-x/guihua.lua', build = 'cd lua/fzy && make' }, { 'neovim/nvim-lspconfig' }, } }, { -- Syntax Highlighting from the future "nvim-treesitter/nvim-treesitter", --init = function() vim.cmd([[":TSUpdate"]]) end, main = "nvim-treesitter.configs", opts = { ensure_installed = 'all', ignore_install = { 'norg' }, sync_intall = true, highlight = { enable = true, }, indent = { enable = false, }, }, build = ":TSUpdate", version = false, dependencies = { "nvim-treesitter/nvim-treesitter-textobjects", "nvim-treesitter/nvim-treesitter-context", }, }, -- Git stuff -- GitGutter, shows inline difs --"airblade/vim-gitgutter", { "NeogitOrg/neogit", dependencies = { "nvim-lua/plenary.nvim", -- required "sindrets/diffview.nvim", -- optional - Diff integration "nvim-telescope/telescope.nvim" }, config = true }, -- Auto format tool { "stevearc/conform.nvim", lazy = true, opts = { python = { "isort", "black" }, lua = { "lua-format" }, clojure = { "cljfmt" }, rust = { "rustfmt" }, haskell = { "ormolu", "stylish-haskell" }, go = { "goimports", "gofmt" }, java = { "google-java-format" }, javascript = { "prettier" }, html = { "prettier" }, yaml = { "prettier" }, sh = { "shfmt" }, c = { "clang-format" }, } }, { "hedyhli/outline.nvim", lazy = true, cmd = { "Outline", "OutlineOpen" }, config = true, keys = { { "o", "Outline", desc = "Toggle outline" }, }, }, { "ray-x/go.nvim", ft = "go", lazy = true, dependencies = { "ray-x/guihua.lua", "neovim/nvim-lspconfig", "nvim-treesitter/nvim-treesitter" } }, { "nvim-lualine/lualine.nvim", config = true, dependencies = { "nvim-tree/nvim-web-devicons" } }, -- Fuzzy finding stuff --"junegunn/fzf.vim", "ibhagwan/fzf-lua", -- A lua + nvim stdlib sort of thing { "nvim-lua/plenary.nvim", lazy = true, }, -- Telescope, find anything fast { "nvim-telescope/telescope.nvim", config = true, dependencies = { "nvim-lua/plenary.nvim", "nvim-telescope/telescope-symbols.nvim", "nvim-telescope/telescope-fzf-native.nvim" } }, { "folke/trouble.nvim", dependencies = "nvim-tree/nvim-web-devicons", config = true, }, -- Which key is bound? -- literally the best plugin ever { "folke/which-key.nvim", init = function() vim.o.timeout = true vim.o.timeoutlen = 300 end, config = true }, -- Developing my neovim { "folke/lazydev.nvim", config = true, ft = "lua", lazy = true, opts = { library = { path = "luvit-meta/library", words = { "vim%.uv" }, }, }, dependencies = { "Bilal2453/luvit-meta" }, }, -- Lithsps { "windwp/nvim-autopairs", event = "InsertEnter", config = function() local pairs = require("nvim-autopairs") pairs.setup({ check_ts = true, enable_check_bracket_line = false, }) pairs.get_rules("`")[1].not_filetypes = { "clojure", "scheme", "scm", "janet" } pairs.get_rules("'")[1].not_filetypes = { "clojure", "scheme", "scm", "janet", "rust" } end, }, -- This gives me the paredit engine, it's pretty nifty { "gpanders/nvim-parinfer", ft = { "hy", "scheme", "scm", "clojure", "fennel", "janet", "lisp", "python", "lua" }, lazy = true, config = function() --vim.g.parinfer_comment_chars = { ";" } vim.g.parinfer_force_balance = true end }, -- )))))) -- This one gives me vim-sexp like structural editing { "julienvincent/nvim-paredit", config = function() local paredit = require('nvim-paredit') paredit.setup({ indent = { enabled = true, }, filetypes = { "clojure", "fennel", "janet" }, }) end, lazy = true, ft = { "hy", "scheme", "scm", "clojure", "fennel", "janet", "lisp", "python", "lua" } }, --{ "hiphish/rainbow-delimiters.nvim", priority = 1050, }, -- Conjure, lisp is magical { "Olical/conjure", dependencies = { "PaterJason/cmp-conjure" }, config = function() vim.g["conjure#client#scheme#stdio#command"] = "gxi" vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "%d*> $?" end, lazy = true, ft = { "scheme", "scm", "lisp", "fennel", "clojure", "lua", "janet" }, }, { "PaterJason/cmp-conjure", lazy = true }, { "p1xelHer0/gerbil.nvim", lazy = true, ft = "scheme", config = true }, -- Fennel, Luasthp { "jaawerth/fennel.vim", lazy = true, ft = "fennel", config = true }, { "rktjmp/hotpot.nvim", lazy = true, ft = "fennel", config = true }, { "Olical/nfnl", lazy = true, ft = "fennel", config = true }, -- Rust stuff { "simrat39/rust-tools.nvim", lazy = true, ft = { "rust" }, config = function() local rt = require("rust-tools") rt.setup({ server = { on_attach = function(_, bufnr) -- Hover actions vim.keymap.set("n", "", rt.hover_actions.hover_actions, { buffer = bufnr }) -- Code action groups vim.keymap.set("n", "a", rt.code_action_group.code_action_group, { buffer = bufnr }) end } }) end, dependencies = { "nvim-lua/plenary.nvim" } }, { "mfussenegger/nvim-dap", lazy = true, ft = { "c", "rust" } }, { "saecki/crates.nvim", tag = "v0.4.0", dependencies = { "nvim-lua/plenary.nvim" }, config = function() require("crates").setup() end, lazy = true, ft = { "rust" } }, -- RISC-V Assembly syntax highlighting { "kylelaker/riscv.vim", ft = "riscv" }, -- Hare Stuff -- Hare stuff -- Haredoc { url = "https://git.sr.ht/~torresjrjr/vim-haredoc", lazy = true, ft = { "hare" }, branch = "dev" }, { url = "https://git.sr.ht/~sircmpwn/hare.vim", ft = { "hare" } }, -- TCL { "lewis6991/tree-sitter-tcl", lazy = true, build = "make" }, -- LF { "ptzz/lf.vim", lazy = true, cmd = { "Lf" }, dependencies = { "voldikss/vim-floaterm" } }, { "imsnif/kdl.vim", lazy = true, ft = "kdl" }, { "catgoose/nvim-colorizer.lua", lazy = true, ft = { "css", "html", "toml", "conf" } }, { "github/copilot.vim", lazy = true, cmd = { "Copilot" } }, { "cshuaimin/ssr.nvim", config = function() local ssr = require("ssr") ssr.setup { border = "rounded", min_width = 50, min_height = 5, max_width = 120, max_height = 25, adjust_window = true, keymaps = { close = "q", next_match = "n", prev_match = "N", replace_confirm = "", replace_all = "", }, } vim.keymap.set({ "n", "x" }, "sr", function() ssr.open() end) end }, { "lewis6991/gitsigns.nvim", config = true }, } })