-- 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 = { "catppuccin-latte" } }, 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" } }, }, -- 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", branch = "main", --init = function() vim.cmd([[":TSUpdate"]]) end, main = "nvim-treesitter", opts = {}, config = function(_, opts) require("nvim-treesitter").setup(opts) vim.api.nvim_create_autocmd("FileType", { callback = function() pcall(vim.treesitter.start) end, }) end, build = ":TSUpdate", version = false, }, { "nvim-treesitter/nvim-treesitter-context", enabled = false }, -- 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 = { "prettierd", "prettier", stop_after_first = true }, typescript = { "prettierd", "prettier", stop_after_first = true }, html = { "prettierd", "prettier", stop_after_first = true }, 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 "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, ft = { "scheme", "scm", "clojure", "janet", "lisp" } }, -- 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 { "mrcjkb/rustaceanvim", lazy = false, version = "^9", config = function() vim.g.rustaceanvim = { server = { settings = { ['rust-analyzer'] = { files = { excludeDirs = { "target", ".cargo", ".direnv" }, }, }, }, }, } end, }, { "mfussenegger/nvim-dap", lazy = true, ft = { "c", "rust" } }, { "saecki/crates.nvim", tag = "v0.7.1", dependencies = { "nvim-lua/plenary.nvim" }, config = function() require("crates").setup() end, lazy = true, ft = { "rust" } }, -- TCL { "lewis6991/tree-sitter-tcl", lazy = true, build = "make", ft = { "tcl" } }, -- 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" } }, { "lewis6991/gitsigns.nvim", config = true, opts = { on_attach = function(bufnr) local gitsigns = require('gitsigns') local function map(mode, l, r, opts) opts = opts or {} opts.buffer = bufnr vim.keymap.set(mode, l, r, opts) end -- Navigation map('n', ']c', function() if vim.wo.diff then vim.cmd.normal({ ']c', bang = true }) else gitsigns.nav_hunk('next') end end) map('n', '[c', function() if vim.wo.diff then vim.cmd.normal({ '[c', bang = true }) else gitsigns.nav_hunk('prev') end end) -- Actions map('n', 'gs', gitsigns.stage_hunk) map('n', 'gr', gitsigns.reset_hunk) map('v', 'gs', function() gitsigns.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') }) end) map('v', 'gr', function() gitsigns.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') }) end) map('n', 'gS', gitsigns.stage_buffer) map('n', 'gR', gitsigns.reset_buffer) map('n', 'gp', gitsigns.preview_hunk) map('n', 'gi', gitsigns.preview_hunk_inline) map('n', 'gb', function() gitsigns.blame_line({ full = true }) end) map('n', 'gd', gitsigns.diffthis) map('n', 'gD', function() gitsigns.diffthis('~') end) map('n', 'gQ', function() gitsigns.setqflist('all') end) map('n', 'gq', gitsigns.setqflist) -- Toggles map('n', 'gtb', gitsigns.toggle_current_line_blame) map('n', 'gtw', gitsigns.toggle_word_diff) -- Text object map({ 'o', 'x' }, 'ih', gitsigns.select_hunk) end } }, { "Bowuigi/acme-nvim", config = function() local acme = require('acme') local opts = { noremap = true, silent = true } vim.keymap.set("n", "ee", acme.exec, opts) vim.keymap.set("v", "ee", acme.exec, opts) vim.keymap.set("v", "et", acme.tagline, opts) vim.keymap.set("v", "em", acme.mark, opts) end }, { "rachartier/tiny-cmdline.nvim", config = true } } })