From e72bc10296c0d4c145abd69a2b00bc8aad0004bb Mon Sep 17 00:00:00 2001 From: Jack Jamison Date: Mon, 16 Jun 2025 22:53:16 -0400 Subject: reorg --- .config/nvim/lua/plugins/cmp.lua | 53 ++++++++++++++++++++++ .config/nvim/lua/plugins/colorscheme.lua | 6 +++ .config/nvim/lua/plugins/comment.lua | 4 ++ .config/nvim/lua/plugins/compile.lua | 15 ++++++ .config/nvim/lua/plugins/cursorline.lua | 11 +++++ .config/nvim/lua/plugins/fidget.lua | 17 +++++++ .config/nvim/lua/plugins/init.lua | 1 + .config/nvim/lua/plugins/lspconfig.lua | 78 ++++++++++++++++++++++++++++++++ .config/nvim/lua/plugins/luadev.lua | 5 ++ .config/nvim/lua/plugins/luasnip.lua | 12 +++++ .config/nvim/lua/plugins/mini.lua | 5 ++ .config/nvim/lua/plugins/neogit.lua | 8 ++++ .config/nvim/lua/plugins/oil.lua | 7 +++ .config/nvim/lua/plugins/telescope.lua | 54 ++++++++++++++++++++++ .config/nvim/lua/plugins/treesitter.lua | 24 ++++++++++ .config/nvim/lua/plugins/trouble.lua | 5 ++ .config/nvim/lua/plugins/zig.lua | 5 ++ 17 files changed, 310 insertions(+) create mode 100644 .config/nvim/lua/plugins/cmp.lua create mode 100644 .config/nvim/lua/plugins/colorscheme.lua create mode 100644 .config/nvim/lua/plugins/comment.lua create mode 100644 .config/nvim/lua/plugins/compile.lua create mode 100644 .config/nvim/lua/plugins/cursorline.lua create mode 100644 .config/nvim/lua/plugins/fidget.lua create mode 100644 .config/nvim/lua/plugins/init.lua create mode 100644 .config/nvim/lua/plugins/lspconfig.lua create mode 100644 .config/nvim/lua/plugins/luadev.lua create mode 100644 .config/nvim/lua/plugins/luasnip.lua create mode 100644 .config/nvim/lua/plugins/mini.lua create mode 100644 .config/nvim/lua/plugins/neogit.lua create mode 100644 .config/nvim/lua/plugins/oil.lua create mode 100644 .config/nvim/lua/plugins/telescope.lua create mode 100644 .config/nvim/lua/plugins/treesitter.lua create mode 100644 .config/nvim/lua/plugins/trouble.lua create mode 100644 .config/nvim/lua/plugins/zig.lua (limited to '.config/nvim/lua/plugins') diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..f515e17 --- /dev/null +++ b/.config/nvim/lua/plugins/cmp.lua @@ -0,0 +1,53 @@ +return { + 'hrsh7th/nvim-cmp', + event = { 'InsertEnter', 'CmdlineEnter' }, + dependencies = { + 'saadparwaiz1/cmp_luasnip', + 'hrsh7th/cmp-buffer', + 'hrsh7th/cmp-cmdline', + 'hrsh7th/cmp-path', + }, + opts = function() + local cmp = require('cmp') + local select_opts = {behavior = cmp.SelectBehavior.Select} + + return { + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + mapping = { + [''] = cmp.mapping.select_prev_item(select_opts), + [''] = cmp.mapping.select_next_item(select_opts), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({select = true}), + }, + sources = cmp.config.sources({ + { name = 'nvim_lsp', max_item_count = 5, keyword_length = 1 }, + { name = "luasnip", max_item_count = 5, keyword_length = 2 }, + }, { + { name = 'buffer', max_item_count = 2, keyword_length = 3 }, + }, { + { name = 'path', max_item_count = 2 }, + }), + sorting = { + comparators = { + cmp.config.compare.offset, + cmp.config.compare.exact, + --cmp.config.compare.scopes, + cmp.config.compare.score, + + cmp.config.compare.locality, + cmp.config.compare.kind, + --cmp.config.compare.sort_text, + cmp.config.compare.length, + cmp.config.compare.order, + }, + }, + } + end, +} + diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua new file mode 100644 index 0000000..acdc3ee --- /dev/null +++ b/.config/nvim/lua/plugins/colorscheme.lua @@ -0,0 +1,6 @@ +return { + "folke/tokyonight.nvim", + config = function () + vim.cmd[[colorscheme tokyonight-moon]] + end +} diff --git a/.config/nvim/lua/plugins/comment.lua b/.config/nvim/lua/plugins/comment.lua new file mode 100644 index 0000000..4fbab38 --- /dev/null +++ b/.config/nvim/lua/plugins/comment.lua @@ -0,0 +1,4 @@ +return { + 'numToStr/Comment.nvim', + config = true, +} diff --git a/.config/nvim/lua/plugins/compile.lua b/.config/nvim/lua/plugins/compile.lua new file mode 100644 index 0000000..7b1ce10 --- /dev/null +++ b/.config/nvim/lua/plugins/compile.lua @@ -0,0 +1,15 @@ +return { + "ej-shafran/compile-mode.nvim", + dependencies = { + "nvim-lua/plenary.nvim", + { "m00qek/baleia.nvim", tag = "v1.3.0" }, + }, + config = function() + vim.keymap.set('n', 'cc', ':vert Compile', { desc = "Compile"}) + vim.keymap.set('n', 'cr', ':vert Recompile', { desc = "Recompile"}) + vim.g.compile_mode = { + -- to add ANSI escape code support, add: + baleia_setup = true, + } + end +} diff --git a/.config/nvim/lua/plugins/cursorline.lua b/.config/nvim/lua/plugins/cursorline.lua new file mode 100644 index 0000000..19839ce --- /dev/null +++ b/.config/nvim/lua/plugins/cursorline.lua @@ -0,0 +1,11 @@ +return { + "ya2s/nvim-cursorline", + opts = { + cursorline = { enable = false }, -- I don't want this plugin fucking with my cursorline + cursorword = { + enable = true, + min_length = 3, + hl = { underline = true }, + } + } +} diff --git a/.config/nvim/lua/plugins/fidget.lua b/.config/nvim/lua/plugins/fidget.lua new file mode 100644 index 0000000..facf28b --- /dev/null +++ b/.config/nvim/lua/plugins/fidget.lua @@ -0,0 +1,17 @@ +return { + 'j-hui/fidget.nvim', + tag = 'v1.4.1', + lazy = true, + opts = { + progress = { + display = { + progress_icon = { pattern = 'line', period = 0.7 }, + }, + }, + notification = { + window = { + winblend = 0, + }, + }, + }, +} diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua new file mode 100644 index 0000000..a564707 --- /dev/null +++ b/.config/nvim/lua/plugins/init.lua @@ -0,0 +1 @@ +return {} diff --git a/.config/nvim/lua/plugins/lspconfig.lua b/.config/nvim/lua/plugins/lspconfig.lua new file mode 100644 index 0000000..2fcfa9b --- /dev/null +++ b/.config/nvim/lua/plugins/lspconfig.lua @@ -0,0 +1,78 @@ +local on_attach = function(client, bufnr) + local keymap = function(mode, keys, func, opts) + opts.buffer = bufnr + vim.keymap.set(mode, keys, func, opts) + end + + keymap('n', 'gd', vim.lsp.buf.definition, { desc = 'Go to definition' }) + keymap('n', 'gD', vim.lsp.buf.declaration, { desc = 'Go to declaration' }) + keymap('n', 'gI', vim.lsp.buf.implementation, { desc = 'Go to implementation' }) + keymap('n', 'gy', vim.lsp.buf.type_definition, { desc = 'Go to type definition' }) + keymap('n', 'gr', vim.lsp.buf.references, { desc = 'List references' }) + + keymap('n', 'ds', vim.lsp.buf.document_symbol, { desc = 'List document symbols' }) + keymap('n', 'ws', vim.lsp.buf.workspace_symbol, { desc = 'List workspace symbols' }) + + keymap('n', 'K', vim.lsp.buf.hover, { desc = 'Show documentation' }) + keymap('n', 'gK', vim.lsp.buf.signature_help, { desc = 'Show signature' }) + keymap('i', '', vim.lsp.buf.signature_help, { desc = 'Show signature' }) + + keymap('n', 'rn', vim.lsp.buf.rename, { desc = 'Rename symbol' }) + keymap('n', 'ca', vim.lsp.buf.code_action, { desc = 'Code action' }) + + keymap('n', 'wa', vim.lsp.buf.add_workspace_folder, { desc = 'Add workspace folder' }) + keymap('n', 'wr', vim.lsp.buf.remove_workspace_folder, { desc = 'Remove workspace folder' }) + keymap('n', 'cf', vim.cmd.ClangdSwitchSourceHeader, { desc = 'Switch source with header' }) + keymap( + 'n', + 'wl', + function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, + { desc = 'List workspace folders' } + ) +end + +return { + 'neovim/nvim-lspconfig', + dependencies = { + "hrsh7th/cmp-nvim-lsp", + 'j-hui/fidget.nvim', + }, + ft = { 'c', 'cpp', 'lua', 'zig' }, + opts = { + servers = { + lua_ls = { + settings = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + }, + }, + clangd = { + settings = {}, + }, + zls = { + settings = {}, + }, + }, + }, + config = function(_, opts) + local lspconfig = require('lspconfig'); + local capabilities = require('cmp_nvim_lsp').default_capabilities() + + for name, conf in pairs(opts.servers) do + lspconfig[name].setup { + capabilities = capabilities, + settings = conf.settings, + on_attach = function(client, bufnr) + local _, err = pcall(on_attach, client, bufnr) + if err then + vim.notify('[on_attach] error: ' .. err, vim.log.levels.ERROR) + else + vim.notify('[on_attach] ' .. client.name .. ' attached to buffer ' .. bufnr, vim.log.levels.INFO) + end + end, + } + end + end +} diff --git a/.config/nvim/lua/plugins/luadev.lua b/.config/nvim/lua/plugins/luadev.lua new file mode 100644 index 0000000..7011f66 --- /dev/null +++ b/.config/nvim/lua/plugins/luadev.lua @@ -0,0 +1,5 @@ +return { + "folke/lazydev.nvim", + ft = "lua", + config = true, +} diff --git a/.config/nvim/lua/plugins/luasnip.lua b/.config/nvim/lua/plugins/luasnip.lua new file mode 100644 index 0000000..8ed8c24 --- /dev/null +++ b/.config/nvim/lua/plugins/luasnip.lua @@ -0,0 +1,12 @@ +return { + 'L3MON4D3/LuaSnip', + lazy = true, + dependencies = { 'rafamadriz/friendly-snippets' }, + keys = { + { '', function() require('luasnip').jump(-1) end, mode = { 'i', 's' } }, + { '', function() require('luasnip').jump(1) end, mode = { 'i', 's' } }, + }, + config = function() + require('luasnip.loaders.from_vscode').lazy_load() + end, +} diff --git a/.config/nvim/lua/plugins/mini.lua b/.config/nvim/lua/plugins/mini.lua new file mode 100644 index 0000000..5698563 --- /dev/null +++ b/.config/nvim/lua/plugins/mini.lua @@ -0,0 +1,5 @@ +return { + 'windwp/nvim-autopairs', + event = "InsertEnter", + config = true +} diff --git a/.config/nvim/lua/plugins/neogit.lua b/.config/nvim/lua/plugins/neogit.lua new file mode 100644 index 0000000..0f5f90e --- /dev/null +++ b/.config/nvim/lua/plugins/neogit.lua @@ -0,0 +1,8 @@ +return { + "NeogitOrg/neogit", + dependencies = { + "nvim-lua/plenary.nvim", -- required + "sindrets/diffview.nvim", -- optional - Diff integration + "nvim-telescope/telescope.nvim", -- optional + }, +} diff --git a/.config/nvim/lua/plugins/oil.lua b/.config/nvim/lua/plugins/oil.lua new file mode 100644 index 0000000..714a05f --- /dev/null +++ b/.config/nvim/lua/plugins/oil.lua @@ -0,0 +1,7 @@ +return { + 'stevearc/oil.nvim', + ---@module 'oil' + opts = {}, + dependencies = { { "echasnovski/mini.icons", opts = {} } }, + lazy = false, +} diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..ab0e24f --- /dev/null +++ b/.config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,54 @@ +return { + 'nvim-telescope/telescope.nvim', + cmd = 'Telescope', + dependencies = { + 'nvim-lua/plenary.nvim', + { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' }, + }, + keys = function() + local lazy_telescope = function(builtin) + return function(...) + require('telescope.builtin')[builtin](...) + end + end + return { + { 'fb', lazy_telescope('buffers'), desc = 'Find buffers' }, + { 'fd', lazy_telescope('diagnostics'), desc = 'Find diagnostics' }, + { 'ff', lazy_telescope('git_files'), desc = 'Find Git files' }, + { 'fF', lazy_telescope('find_files'), desc = 'Find files' }, + { 'fg', lazy_telescope('live_grep'), desc = 'Find files by content' }, + { 'fh', lazy_telescope('help_tags'), desc = 'Find help tags' }, + { 'fo', lazy_telescope('oldfiles'), desc = 'Find recently opened files' }, + { 'fw', lazy_telescope('grep_string'), desc = 'Find word in buffer' }, + { 'f/', lazy_telescope('current_buffer_fuzzy_find'), desc = 'Find fuzzy match in current buffer' }, + } + end, + opts = function() + return { + extensions = { + fzf = { + fuzzy = true, + override_generic_sorter = true, + override_file_sorter = true, + case_mode = 'smart_case', + } + }, + } + end, + config = function() + local telescope = require('telescope') + telescope.setup({ + defaults = { + mappings = { + i = { + [""] = require('telescope.actions').close, + }, + n = { + [""] = require('telescope.actions').close, + }, + }, + }, + }) + telescope.load_extension('fzf') + end, +} diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..268e13d --- /dev/null +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,24 @@ +return { + 'nvim-treesitter/nvim-treesitter', + ft = { 'c', 'cpp', 'zig', 'lua', 'rust' }, + build = ':TSUpdate', + config = function() + require('nvim-treesitter.configs').setup { + -- Add languages to be installed here that you want installed for treesitter + ensure_installed = { 'c', 'cpp', 'lua', 'rust', 'vimdoc', 'vim', 'zig' }, + + -- Install parsers synchronously (only applied to `ensure_installed`) + sync_install = false, + + -- Automatically install missing parsers when entering buffer + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = false, + + highlight = { + enable = true, + disable = function(_, bufnr) return vim.api.nvim_buf_line_count(bufnr) > 10000 end, + additional_vim_regex_highlighting = false, + }, + } + end, +} diff --git a/.config/nvim/lua/plugins/trouble.lua b/.config/nvim/lua/plugins/trouble.lua new file mode 100644 index 0000000..1e81a92 --- /dev/null +++ b/.config/nvim/lua/plugins/trouble.lua @@ -0,0 +1,5 @@ +return { + "folke/trouble.nvim", + config = true, + cmd = "Trouble" +} diff --git a/.config/nvim/lua/plugins/zig.lua b/.config/nvim/lua/plugins/zig.lua new file mode 100644 index 0000000..394c450 --- /dev/null +++ b/.config/nvim/lua/plugins/zig.lua @@ -0,0 +1,5 @@ +return { + "ziglang/zig.vim", + ft = "zig", +} + -- cgit v1.2.3