Configuration for my NixOS based systems and Home Manager
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Sync nvim configs with odin

+262 -440
+26 -90
nvim/init.lua
··· 5 5 -- Load Plugins 6 6 require("plugins") 7 7 -- Color Scheme 8 - vim.cmd([[colorscheme kanagawa]]) 8 + vim.cmd.colorscheme "catppuccin" 9 + -- vim.cmd([[colorscheme kanagawa]]) 9 10 -- Config for Nord, which I usually use 10 - --vim.g.nord_italic = false 11 - --vim.g.nord_bold = false 12 - --vim.opt.background = "light" 11 + -- vim.g.nord_italic = false 12 + -- vim.g.nord_bold = false 13 + -- vim.opt.background = "light" 13 14 vim.opt.background = "dark" 14 - 15 15 16 16 -- Formatting and vim config 17 17 vim.opt.expandtab = true ··· 40 40 vim.g.sexp_enable_insert_mode_mappings = 1 41 41 42 42 -- LuaLine Config 43 - require("lualine").setup( 44 - { 45 - options = { 46 - icons_enabled = true, 47 - theme = "auto" 48 - } 49 - } 50 - ) 43 + require("lualine").setup({options = {icons_enabled = true, theme = "auto"}}) 51 44 52 45 -- CTags 53 - vim.opt.tags = vim.opt.tags + vim.fn.expand("~/.local/tmp/ctags") + vim.fn.expand("~/repos/gerbil/src/TAGS") 46 + vim.opt.tags = vim.opt.tags + vim.fn.expand("~/.local/tmp/ctags") + 47 + vim.fn.expand("~/repos/gerbil/src/TAGS") 54 48 55 49 -- Conjure 56 50 ··· 62 56 end 63 57 set_gerbil() 64 58 vim.api.nvim_create_user_command("ConjureGerbil", set_gerbil, {}) 65 - 66 - 67 59 68 60 -- Chibi-scheme 69 61 local set_chibi = function() ··· 147 139 -- LSP Documentation viewer 148 140 keymap("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>", silentnoremap) 149 141 142 + -- Autoformat! 143 + keymap("n", "<C-n>", "<cmd>Neoformat<cr>", silentnoremap) 144 + 150 145 -- Python Specific 151 146 vim.g.python3_host_prog = vim.fn.expand("~/.envs/nvim/bin/python3") 152 147 153 148 -- Set up Treesitter 154 - require("nvim-treesitter.configs").setup( 155 - { 156 - highlight = { 157 - enable = true, 158 - disable = {} 159 - }, 160 - indent = { 161 - enable = false, 162 - disable = {} 163 - }, 164 - ensure_installed = { 165 - "c", 166 - "cpp", 167 - "capnp", 168 - "cmake", 169 - "bash", 170 - "dockerfile", 171 - "diff", 172 - "devicetree", 173 - "dot", 174 - "ebnf", 175 - "elixir", 176 - "erlang", 177 - "clojure", 178 - "fortran", 179 - "go", 180 - "gomod", 181 - "gosum", 182 - "graphql", 183 - "git_config", 184 - "git_rebase", 185 - "gitcommit", 186 - "gitignore", 187 - "gleam", 188 - "julia", 189 - "fish", 190 - "toml", 191 - "haskell", 192 - "hare", 193 - "http", 194 - "html", 195 - "ini", 196 - "json", 197 - "jq", 198 - "latex", 199 - "llvm", 200 - "mermaid", 201 - "make", 202 - "meson", 203 - "ninja", 204 - "yaml", 205 - "python", 206 - "proto", 207 - "racket", 208 - "rst", 209 - "scala", 210 - "html", 211 - "tsx", 212 - "rust", 213 - "scheme", 214 - "fennel", 215 - "lua", 216 - "markdown", 217 - "markdown_inline", 218 - "sql", 219 - "thrift", 220 - "typescript", 221 - "verilog", 222 - "vim", 223 - "zig", 224 - "uxntal" 225 - } 149 + require("nvim-treesitter.configs").setup({ 150 + highlight = {enable = true, disable = {}}, 151 + indent = {enable = true, disable = {}}, 152 + ensure_installed = { 153 + "c", "cpp", "capnp", "cmake", "bash", "dockerfile", "diff", 154 + "devicetree", "dot", "ebnf", "elixir", "erlang", "clojure", "fortran", 155 + "go", "gomod", "gosum", "graphql", "git_config", "git_rebase", 156 + "gitcommit", "gitignore", "gleam", "julia", "fish", "toml", "haskell", 157 + "hare", "http", "html", "ini", "json", "jq", "latex", "llvm", "mermaid", 158 + "make", "meson", "ninja", "yaml", "python", "proto", "racket", "rst", 159 + "scala", "html", "tsx", "rust", "scheme", "fennel", "lua", "markdown", 160 + "markdown_inline", "sql", "thrift", "typescript", "verilog", "vim", 161 + "zig", "uxntal", "kdl" 226 162 } 227 - ) 163 + }) 228 164 229 165 -- Set up Which Key? 230 166 require("which-key").setup({}) 231 167 -- ######################## 232 - --# Require other configs # 168 + -- # Require other configs # 233 169 -- ######################## 234 170 -- LSP 235 171 require("lsp")
+36 -71
nvim/lua/completion.lua
··· 1 - require("compe").setup( 2 - { 3 - enabled = true, 4 - autocomplete = true, 5 - debug = false, 6 - min_length = 1, 7 - preselect = "enable", 8 - throttle_time = 80, 9 - source_timeout = 200, 10 - resolve_timeout = 800, 11 - incomplete_delay = 400, 12 - max_abbr_width = 100, 13 - max_kind_width = 100, 14 - max_menu_width = 100, 15 - documentation = { 16 - border = {"", "", "", " ", "", "", "", " "}, -- the border option is the same as `|help nvim_open_win|` 17 - winhighlight = "NormalFloat:CompeDocumentation,FloatBorder:CompeDocumentationBorder", 18 - max_width = 120, 19 - min_width = 60, 20 - max_height = math.floor(vim.o.lines * 0.3), 21 - min_height = 1 22 - }, 23 - source = { 24 - path = true, 25 - buffer = true, 26 - calc = true, 27 - nvim_lsp = true, 28 - nvim_lua = true, 29 - vsnip = true, 30 - ultisnips = true, 31 - luasnip = true 32 - } 33 - } 34 - ) 35 - local t = function(str) 36 - return vim.api.nvim_replace_termcodes(str, true, true, true) 37 - end 1 + -- Copied from https://github.com/hrsh7th/nvim-cmp/?tab=readme-ov-file#recommended-configuration 2 + local cmp = require('cmp') 3 + cmp.setup({ 4 + snippet = { 5 + -- REQUIRED - you must specify a snippet engine 6 + expand = function(args) 7 + vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. 8 + end 9 + }, 10 + window = { 11 + completion = cmp.config.window.bordered(), 12 + documentation = cmp.config.window.bordered() 13 + }, 14 + mapping = cmp.mapping.preset.insert({ 15 + ['<C-b>'] = cmp.mapping.scroll_docs(-4), 16 + ['<C-f>'] = cmp.mapping.scroll_docs(4), 17 + ['<C-Space>'] = cmp.mapping.complete(), 18 + ['<C-e>'] = cmp.mapping.abort(), 19 + ['<CR>'] = cmp.mapping.confirm({select = true}) -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. 20 + }), 21 + sources = cmp.config.sources({ 22 + {name = 'nvim_lsp'}, {name = 'vsnip'} -- For vsnip users. 23 + }, {{name = 'buffer'}}) 24 + }) 25 + require("cmp_git").setup() 26 + -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). 27 + cmp.setup.cmdline({'/', '?'}, { 28 + mapping = cmp.mapping.preset.cmdline(), 29 + sources = {{name = 'buffer'}} 30 + }) 38 31 39 - local check_back_space = function() 40 - local col = vim.fn.col(".") - 1 41 - return col == 0 or vim.fn.getline("."):sub(col, col):match("%s") ~= nil 42 - end 43 - 44 - -- Use (s-)tab to: 45 - --- move to prev/next item in completion menuone 46 - --- jump to prev/next snippet's placeholder 47 - _G.tab_complete = function() 48 - if vim.fn.pumvisible() == 1 then 49 - return t "<C-n>" 50 - elseif vim.fn["vsnip#available"](1) == 1 then 51 - return t "<Plug>(vsnip-expand-or-jump)" 52 - elseif check_back_space() then 53 - return t "<Tab>" 54 - else 55 - return vim.fn["compe#complete"]() 56 - end 57 - end 58 - _G.s_tab_complete = function() 59 - if vim.fn.pumvisible() == 1 then 60 - return t "<C-p>" 61 - elseif vim.fn["vsnip#jumpable"](-1) == 1 then 62 - return t "<Plug>(vsnip-jump-prev)" 63 - else 64 - -- If <S-Tab> is not working in your terminal, change it to <C-h> 65 - return t "<S-Tab>" 66 - end 67 - end 68 - 69 - vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true}) 70 - vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true}) 71 - vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true}) 72 - vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true}) 32 + -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). 33 + cmp.setup.cmdline(':', { 34 + mapping = cmp.mapping.preset.cmdline(), 35 + sources = cmp.config.sources({{name = 'path'}}, {{name = 'cmdline'}}), 36 + matching = {disallow_symbol_nonprefix_matching = false} 37 + })
+35 -87
nvim/lua/lsp.lua
··· 1 1 local nvim_lsp = require("lspconfig") 2 - --######################## 3 - --#### Set up LSPs #### 4 - --######################## 5 - -- 6 - -- TypeScript 7 - nvim_lsp.tsserver.setup { 8 - flags = { 9 - debounce_text_changes = 150 10 - } 11 - } 2 + local capabilities = require('cmp_nvim_lsp').default_capabilities() 3 + -- ######################## 4 + -- #### Set up LSPs #### 5 + -- ######################## 12 6 13 7 local util = require("lspconfig.util") 14 8 15 9 -- Rust 16 10 -- Python LSP 17 - nvim_lsp.pylsp.setup( 18 - { 19 - cmd = {"/home/noah/.envs/nvim/bin/pylsp"}, 20 - root_dir = function(fname) 21 - local root_files = { 22 - "pants.toml", 23 - "pyproject.toml", 24 - "setup.py", 25 - "setup.cfg", 26 - "Pipfile" 27 - } 28 - return util.find_git_ancestor(fname) or util.root_pattern(unpack(root_files))(fname) 29 - end 30 - } 31 - ) 32 - --nvim_lsp.scheme_langserver.setup{} 33 - 34 - -- Golang 35 - -- Lots of things 36 - --nvim_lsp.diagnosticls.setup( 37 - -- { 38 - -- flags = { 39 - -- debounce_text_changes = 150 40 - -- } 41 - -- } 42 - --) 43 - nvim_lsp.lua_ls.setup{ 11 + nvim_lsp.pylsp.setup({ 12 + -- cmd = {"/home/noah/.envs/nvim/bin/pylsp"}, 13 + root_dir = function(fname) 14 + local root_files = { 15 + "pants.toml", "pyproject.toml", "setup.py", "setup.cfg", "Pipfile" 16 + } 17 + return util.find_git_ancestor(fname) or 18 + util.root_pattern(unpack(root_files))(fname) 19 + end 20 + }) 21 + nvim_lsp.lua_ls.setup { 44 22 settings = { 45 23 Lua = { 46 24 runtime = { ··· 56 34 library = vim.api.nvim_get_runtime_file("", true) 57 35 }, 58 36 -- Do not send telemetry data containing a randomized but unique identifier 59 - telemetry = { 60 - enable = false 61 - } 37 + telemetry = {enable = false} 62 38 } 63 39 } 64 40 } 65 41 66 42 -- LSPs that just use default config 67 43 local simple_lsps = { 68 - "fennel_ls", 69 - "nil_ls", 70 - "htmx", 71 - "bzl", 72 - "bufls", 73 - "crystalline", 74 - "dockerls", 75 - "erlangls", 76 - "elixirls", 77 - "fortls", 78 - "gleam", 79 - "gopls", 80 - "hls", 81 - "jsonls", 82 - "vimls", 83 - "asm_lsp", 84 - "ccls", 85 - "pyright", 86 - -- ruff", idk if this is wrong? 87 - "ruff_lsp", 88 - "clojure_lsp", 89 - "guile_ls", 44 + "fennel_ls", "nil_ls", "htmx", "bzl", "bufls", "crystalline", "dockerls", 45 + "erlangls", "elixirls", "fortls", "gleam", "gopls", "hls", "jsonls", 46 + "vimls", "asm_lsp", "ccls", "pyright", -- ruff", idk if this is wrong? 47 + "ruff_lsp", "clojure_lsp", "guile_ls", 90 48 -- Of course the Java-based ones are verbose af 91 - "kotlin_language_server", 92 - "java_language_server", 93 - "jsonls", 94 - "pest_ls", 95 - "ocamllsp", 96 - "reason_ls", 97 - "racket_langserver", 98 - "rust_analyzer", 99 - "scheme_langserver", 100 - "sqls", 101 - "thriftls", 102 - "typst_lsp", 103 - "vhdl_ls", 104 - "yamlls", 105 - "zls", 106 - "tsserver", 107 - "eslint", 49 + "kotlin_language_server", "java_language_server", "jsonls", "pest_ls", 50 + "ocamllsp", "reason_ls", "racket_langserver", "rust_analyzer", 51 + "scheme_langserver", "sqls", "thriftls", "typst_lsp", "vhdl_ls", "yamlls", 52 + "zls", "tsserver", "eslint", "metals" 53 + -- disabled because it's broken 54 + -- "scheme_langserver", 108 55 } 109 56 -- #simple_lsps is the length of the table when treated as a list... funky! 110 - for _,v in pairs(simple_lsps) do 111 - nvim_lsp[v].setup{} 112 - end 57 + for _, v in pairs(simple_lsps) do nvim_lsp[v].setup { 58 + capabilities = capabilities 59 + } end 113 60 114 61 -- Whenever an LSP is attached to a buffer 115 62 local on_attach = function(ev) 116 - --Enable completion triggered by <c-x><x-o> 63 + -- Enable completion triggered by <c-x><x-o> 117 64 vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' 118 65 119 66 local opts = {noremap = true, silent = true, buffer = ev.buf} ··· 127 74 vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, opts) 128 75 vim.keymap.set("n", "<space>wa", vim.lsp.buf.add_workspace_folder, opts) 129 76 vim.keymap.set("n", "<space>wr", vim.lsp.buf.remove_workspace_folder, opts) 130 - vim.keymap.set("n", "<space>wl", function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, opts) 77 + vim.keymap.set("n", "<space>wl", function() 78 + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) 79 + end, opts) 131 80 vim.keymap.set("n", "<space>D", vim.lsp.buf.type_definition, opts) 132 81 vim.keymap.set("n", "<space>rn", vim.lsp.buf.rename, opts) 133 82 vim.keymap.set("n", "<space>ca", vim.lsp.buf.code_action, opts) ··· 136 85 vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) 137 86 vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts) 138 87 vim.keymap.set("n", "<space>q", vim.diagnostic.setloclist, opts) 139 - vim.keymap.set("n", "<space>f", function() 140 - vim.lsp.buf.format{ async = true } 141 - end, opts) 88 + vim.keymap.set("n", "<space>f", 89 + function() vim.lsp.buf.format {async = true} end, opts) 142 90 vim.keymap.set("n", "<space>s", vim.lsp.buf.workspace_symbol, opts) 143 91 144 92 -- require'completion'.on_attach(client, bufnr)
+165 -192
nvim/lua/plugins.lua
··· 2 2 local ensure_lazy = function() 3 3 local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 4 4 if not vim.loop.fs_stat(lazypath) then 5 - vim.fn.system( 6 - { 7 - "git", 8 - "clone", 9 - "--filter=blob:none", 10 - "https://github.com/folke/lazy.nvim.git", 11 - "--branch=stable", -- latest stable release 12 - lazypath 13 - } 14 - ) 5 + vim.fn.system({ 6 + "git", "clone", "--filter=blob:none", 7 + "https://github.com/folke/lazy.nvim.git", "--branch=stable", -- latest stable release 8 + lazypath 9 + }) 15 10 end 16 11 vim.opt.rtp:prepend(lazypath) 17 12 end 18 13 19 14 local lazy_bootstrap = ensure_lazy() 20 - if lazy_bootstrap then 21 - print("Bootstrapped lazy.nvim") 22 - end 15 + if lazy_bootstrap then print("Bootstrapped lazy.nvim") end 23 16 24 - require("lazy").setup( 17 + require("lazy").setup({ 18 + -- Color themes 19 + "shaunsingh/nord.nvim", "shaunsingh/moonlight.nvim", 20 + "folke/tokyonight.nvim", "cranberry-clockworks/coal.nvim", 21 + "hardselius/warlock", 22 + {"catppuccin/nvim", name = "catppuccin", priority = 1000}, { 23 + "neanias/everforest-nvim", 24 + version = false, 25 + lazy = false, 26 + priority = 500, -- make sure to load this before all the other start plugins 27 + main = "everforest", 28 + opts = {background = "hard"} 29 + }, {"rebelot/kanagawa.nvim", opts = {compile = true}}, 30 + -- show indents and whitespace characters 31 + "lukas-reineke/indent-blankline.nvim", -- Completion 32 + -- Completion 25 33 { 26 - -- Color themes 27 - "shaunsingh/nord.nvim", 28 - "shaunsingh/moonlight.nvim", 29 - "folke/tokyonight.nvim", 30 - "cranberry-clockworks/coal.nvim", 31 - "hardselius/warlock", 32 - { 33 - "neanias/everforest-nvim", 34 - version = false, 35 - lazy = false, 36 - priority = 1000, -- make sure to load this before all the other start plugins 37 - main = "everforest", 38 - opts = { 39 - background = "hard", 40 - }, 34 + "hrsh7th/nvim-cmp", 35 + dependencies = { 36 + "hrsh7th/cmp-nvim-lsp", "hrsh7th/cmp-buffer", "hrsh7th/cmp-path", 37 + "hrsh7th/cmp-vsnip", "hrsh7th/vim-vsnip", "petertriho/cmp-git", 38 + "hrsh7th/cmp-cmdline" 39 + } 40 + }, -- nvim lsp plugins 41 + "neovim/nvim-lspconfig", { 42 + "nvimdev/lspsaga.nvim", 43 + dependencies = { 44 + "nvim-tree/nvim-web-devicons", "nvim-treesitter/nvim-treesitter" 41 45 }, 42 - { 43 - "rebelot/kanagawa.nvim", 44 - opts = {compile = true} 45 - }, 46 - -- show indents and whitespace characters 47 - "lukas-reineke/indent-blankline.nvim", 48 - -- Completion 49 - "hrsh7th/nvim-compe", 50 - "hrsh7th/vim-vsnip", 51 - -- nvim lsp plugins 52 - "neovim/nvim-lspconfig", 53 - { 54 - "nvimdev/lspsaga.nvim", 55 - dependencies = { 56 - "nvim-tree/nvim-web-devicons", 57 - "nvim-treesitter/nvim-treesitter" 58 - }, 59 - opts = {lightbulb = {enable = false}}, 60 - event = "LspAttach" 61 - }, 62 - -- Syntax Highlighting from the future 63 - { 64 - "nvim-treesitter/nvim-treesitter", 65 - init = function() 66 - vim.cmd([[":TSUpdate"]]) 67 - end 68 - }, 69 - -- GitGutter, shows inline difs 70 - "airblade/vim-gitgutter", 71 - -- Git wrapper plugin 72 - "tpope/vim-fugitive", 73 - -- surround with pairs )))))) 74 - --"tpope/vim-surround", 75 - -- Auto format tool 76 - {"sbdchd/neoformat", lazy = true, cmd = "Neoformat"}, 77 - -- Distraction free writing: GoYo + Limelight 78 - {"junegunn/limelight.vim", lazy = true, ft = "markdown"}, 79 - {"junegunn/goyo.vim", lazy = true, ft = "markdown"}, 80 - -- Golang plugins 81 - --use {"fatih/vim-go", run = ":GoUpdateBinaries", lazy = true, ft = "go"} 82 - { 83 - "ray-x/go.nvim", 84 - ft = "go", 85 - lazy = true, 86 - dependencies = { 87 - "ray-x/guihua.lua", 88 - "neovim/nvim-lspconfig", 89 - "nvim-treesitter/nvim-treesitter" 90 - } 91 - }, 92 - { 93 - "nvim-lualine/lualine.nvim", 94 - dependencies = {"nvim-tree/nvim-web-devicons"} 95 - }, 96 - "junegunn/fzf.vim", 97 - { 98 - dir = "~/.fzf", 99 - build = function() 100 - vim.fn["fzf#install"](0) 101 - end, 102 - dependencies = {"junegunn/fzf.vim"} 103 - }, 104 - -- Polyglot 105 - "sheerun/vim-polyglot", 106 - -- Telescope, find anything fast 107 - "nvim-lua/plenary.nvim", 108 - {"nvim-telescope/telescope.nvim", dependencies = {"nvim-lua/plenary.nvim"}}, 109 - "nvim-telescope/telescope-symbols.nvim", 110 - {"folke/trouble.nvim", dependencies = "nvim-tree/nvim-web-devicons"}, 111 - -- Which key is bound? 112 - "folke/which-key.nvim", -- literally the best plugin ever 113 - -- Lithsps 114 - { 115 - "guns/vim-sexp", 116 - ft = {"hy", "scheme", "clojure"}, 117 - }, -- )))))) 118 - {"hiphish/rainbow-delimiters.nvim"}, 119 - --{"gpanders/nvim-parinfer", ft = {"scheme", "lisp", "fennel", "clojure", "lua"}}, 120 - --{ 121 - -- "eraserhd/parinfer-rust", 122 - -- build = "RUSTFLAGS='-C target-feature=+crt-static' cargo build --release", 123 - -- ft = {"scheme", "lisp", "fennel", "clojure", "lua"}, 124 - --}, 125 - -- Conjure, lisp is magical 126 - { 127 - "Olical/conjure", 128 - ft = {"scheme", "lisp", "fennel", "clojure", "lua"}, 129 - config = function() 130 - vim.g["conjure#client#scheme#stdio#command"] = "gxi" 131 - vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "%d*> $?" 132 - end 133 - }, 134 - {"p1xelHer0/gerbil.nvim", ft = "scheme"}, 135 - -- Fennel, Luasthp 136 - {"jaawerth/fennel.vim", lazy = true, ft = "fennel"}, 137 - {"rktjmp/hotpot.nvim", lazy = true, ft = "fennel"}, 138 - {"Olical/nfnl", ft = "fennel"}, 139 - -- Rust stuff 140 - { 141 - "simrat39/rust-tools.nvim", 142 - ft = {"rust"}, 143 - config = function() 144 - local rt = require("rust-tools") 145 - rt.setup( 146 - { 147 - server = { 148 - on_attach = function(_, bufnr) 149 - -- Hover actions 150 - vim.keymap.set("n", "<C-space>", rt.hover_actions.hover_actions, {buffer = bufnr}) 151 - -- Code action groups 152 - vim.keymap.set( 153 - "n", 154 - "<Leader>a", 155 - rt.code_action_group.code_action_group, 156 - {buffer = bufnr} 157 - ) 158 - end 159 - } 160 - } 161 - ) 162 - end, 163 - dependencies = {"nvim-lua/plenary.nvim"} 164 - }, 165 - {"mfussenegger/nvim-dap", lazy = true, ft = {"c", "rust"}}, 166 - { 167 - "saecki/crates.nvim", 168 - tag = "v0.4.0", 169 - dependencies = {"nvim-lua/plenary.nvim"}, 170 - config = function() 171 - require("crates").setup() 172 - end, 173 - ft = {"rust"} 174 - }, 175 - -- RISC-V Assembly syntax highlighting 176 - {"kylelaker/riscv.vim", ft = "riscv"}, 177 - -- Hare Stuff 178 - 179 - -- Haredoc 180 - {url = "https://git.sr.ht/~torresjrjr/vim-haredoc", ft = {"hare"}, branch = "dev"}, 181 - -- Hare.vim 182 - {url = "https://git.sr.ht/~sircmpwn/hare.vim", ft = {"hare"}}, 183 - -- TCL 184 - {"lewis6991/tree-sitter-tcl", build = "make"}, 185 - -- LF 186 - {"ptzz/lf.vim", cmd = {"Lf"}, dependencies = {"voldikss/vim-floaterm"}}, 187 - -- Copilot 188 - -- use {"github/copilot.vim", lazy = true, cmd = {"Copilot"}} 189 - -- Mason 190 - { 191 - "williamboman/mason.nvim", 192 - init = function() 193 - vim.cmd([[":MasonUpdate"]]) 194 - end, 195 - dependencies = { 196 - "williamboman/mason-lspconfig.nvim", 197 - "mfussenegger/nvim-dap", 198 - "jose-elias-alvarez/null-ls.nvim" 199 - }, 200 - config = function() 201 - require("mason").setup() 202 - end 46 + opts = {lightbulb = {enable = false}}, 47 + event = "LspAttach" 48 + }, -- Syntax Highlighting from the future 49 + { 50 + "nvim-treesitter/nvim-treesitter", 51 + init = function() vim.cmd([[":TSUpdate"]]) end 52 + }, -- Git stuff 53 + -- GitGutter, shows inline difs 54 + "airblade/vim-gitgutter", -- "tpope/vim-fugitive", -- old git command 55 + { 56 + "NeogitOrg/neogit", 57 + dependencies = { 58 + "nvim-lua/plenary.nvim", -- required 59 + "sindrets/diffview.nvim", -- optional - Diff integration 60 + "nvim-telescope/telescope.nvim" 61 + } 62 + }, -- surround with pairs )))))) 63 + -- "tpope/vim-surround", 64 + -- Auto format tool 65 + {"sbdchd/neoformat", lazy = true, cmd = "Neoformat"}, 66 + -- Distraction free writing: GoYo + Limelight 67 + {"junegunn/limelight.vim", lazy = true, ft = "markdown"}, 68 + {"junegunn/goyo.vim", lazy = true, ft = "markdown"}, -- Golang plugins 69 + -- use {"fatih/vim-go", run = ":GoUpdateBinaries", lazy = true, ft = "go"} 70 + { 71 + "ray-x/go.nvim", 72 + ft = "go", 73 + lazy = true, 74 + dependencies = { 75 + "ray-x/guihua.lua", "neovim/nvim-lspconfig", 76 + "nvim-treesitter/nvim-treesitter" 203 77 } 204 78 }, 205 - nil 206 - ) 79 + { 80 + "nvim-lualine/lualine.nvim", 81 + dependencies = {"nvim-tree/nvim-web-devicons"} 82 + }, "junegunn/fzf.vim", { 83 + dir = "~/.fzf", 84 + build = function() vim.fn["fzf#install"](0) end, 85 + dependencies = {"junegunn/fzf.vim"} 86 + }, -- Polyglot 87 + "sheerun/vim-polyglot", -- Telescope, find anything fast 88 + "nvim-lua/plenary.nvim", 89 + {"nvim-telescope/telescope.nvim", dependencies = {"nvim-lua/plenary.nvim"}}, 90 + "nvim-telescope/telescope-symbols.nvim", 91 + {"folke/trouble.nvim", dependencies = "nvim-tree/nvim-web-devicons"}, 92 + -- Which key is bound? 93 + "folke/which-key.nvim", -- literally the best plugin ever 94 + -- Developing my neovim 95 + { "folke/neodev.nvim", opts = {}}, 96 + -- Lithsps 97 + {"guns/vim-sexp", ft = {"hy", "scheme", "clojure"}}, -- )))))) 98 + {"hiphish/rainbow-delimiters.nvim"}, 99 + -- {"gpanders/nvim-parinfer", ft = {"scheme", "lisp", "fennel", "clojure", "lua"}}, 100 + -- { 101 + -- "eraserhd/parinfer-rust", 102 + -- build = "RUSTFLAGS='-C target-feature=+crt-static' cargo build --release", 103 + -- ft = {"scheme", "lisp", "fennel", "clojure", "lua"}, 104 + -- }, 105 + -- Conjure, lisp is magical 106 + { 107 + "Olical/conjure", 108 + ft = {"scheme", "lisp", "fennel", "clojure", "lua"}, 109 + config = function() 110 + vim.g["conjure#client#scheme#stdio#command"] = "gxi" 111 + vim.g["conjure#client#scheme#stdio#prompt_pattern"] = "%d*> $?" 112 + end 113 + }, {"p1xelHer0/gerbil.nvim", ft = "scheme"}, -- Fennel, Luasthp 114 + {"jaawerth/fennel.vim", lazy = true, ft = "fennel"}, 115 + {"rktjmp/hotpot.nvim", lazy = true, ft = "fennel"}, 116 + {"Olical/nfnl", ft = "fennel"}, -- Rust stuff 117 + { 118 + "simrat39/rust-tools.nvim", 119 + ft = {"rust"}, 120 + config = function() 121 + local rt = require("rust-tools") 122 + rt.setup({ 123 + server = { 124 + on_attach = function(_, bufnr) 125 + -- Hover actions 126 + vim.keymap.set("n", "<C-space>", 127 + rt.hover_actions.hover_actions, 128 + {buffer = bufnr}) 129 + -- Code action groups 130 + vim.keymap.set("n", "<Leader>a", 131 + rt.code_action_group.code_action_group, 132 + {buffer = bufnr}) 133 + end 134 + } 135 + }) 136 + end, 137 + dependencies = {"nvim-lua/plenary.nvim"} 138 + }, {"mfussenegger/nvim-dap", lazy = true, ft = {"c", "rust"}}, { 139 + "saecki/crates.nvim", 140 + tag = "v0.4.0", 141 + dependencies = {"nvim-lua/plenary.nvim"}, 142 + config = function() require("crates").setup() end, 143 + ft = {"rust"} 144 + }, -- RISC-V Assembly syntax highlighting 145 + {"kylelaker/riscv.vim", ft = "riscv"}, -- Hare Stuff 146 + -- Haredoc 147 + { 148 + url = "https://git.sr.ht/~torresjrjr/vim-haredoc", 149 + ft = {"hare"}, 150 + branch = "dev" 151 + }, -- Hare.vim 152 + {url = "https://git.sr.ht/~sircmpwn/hare.vim", ft = {"hare"}}, -- TCL 153 + {"lewis6991/tree-sitter-tcl", build = "make"}, -- LF 154 + {"ptzz/lf.vim", cmd = {"Lf"}, dependencies = {"voldikss/vim-floaterm"}}, 155 + -- Copilot 156 + -- use {"github/copilot.vim", lazy = true, cmd = {"Copilot"}} 157 + -- SuperMaven, another AI coding tool 158 + { 159 + "supermaven-inc/supermaven-nvim", 160 + opts = {keymaps = {accept_suggestion = "<C-f>"}}, 161 + lazy = true, 162 + cmd = "SupermavenActivate" 163 + }, -- Mason 164 + -- { 165 + -- "williamboman/mason.nvim", 166 + -- init = function() 167 + -- vim.cmd([[":MasonUpdate"]]) 168 + -- end, 169 + -- dependencies = { 170 + -- "williamboman/mason-lspconfig.nvim", 171 + -- "mfussenegger/nvim-dap", 172 + -- "jose-elias-alvarez/null-ls.nvim" 173 + -- }, 174 + -- config = function() 175 + -- require("mason").setup() 176 + -- end 177 + -- }, 178 + "imsnif/kdl.vim" 179 + }, nil)