diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index 740891c..3fb813d 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -8,123 +8,121 @@ if vim.fn.empty(vim.fn.glob(install_path)) > 0 then packer_bootstrap = vim.fn.system({"git", "clone", "https://github.com/wbthomason/packer.nvim", install_path}) end -return require("packer").startup(function(use) - -- Let the package manager manage itself. - use { "wbthomason/packer.nvim" } +local packer = require("packer") +local util = require("packer.util") - -- Custom color themes! - use { "rktjmp/lush.nvim" } +return packer.startup({ + function(use) + -- Let the package manager manage itself. + use { "wbthomason/packer.nvim" } - -- EditorConfig plugin - use { "editorconfig/editorconfig-vim" } + -- Custom color themes! + use { "rktjmp/lush.nvim" } - -- Colorize common color strings - use { - "norcalli/nvim-colorizer.lua", - config = function() - require("colorizer").setup() - end - } + -- EditorConfig plugin + use { "editorconfig/editorconfig-vim" } - -- Snippets engine. - -- A must have for me. - use { - "L3MON4D3/LuaSnip", - requires = { - "rafamadriz/friendly-snippets", - }, - config = function () - require("luasnip.loaders.from_vscode").lazy_load() - require("luasnip.loaders.from_lua").lazy_load() + -- Colorize common color strings + use { + "norcalli/nvim-colorizer.lua", + config = function() + require("colorizer").setup() + end + } - local ls = require("luasnip") - local types = require("luasnip.util.types") - ls.config.set_config { - history = true, - update_events = "TextChanged,TextChangedI", - ext_opts = { - [types.choiceNode] = { - active = { - virt_text = { {"<- Current choice", "Comment"} }, + -- Snippets engine. + -- A must have for me. + use { + "L3MON4D3/LuaSnip", + requires = { + "rafamadriz/friendly-snippets", + }, + config = function () + require("luasnip.loaders.from_vscode").lazy_load() + require("luasnip.loaders.from_lua").lazy_load() + + local ls = require("luasnip") + local types = require("luasnip.util.types") + ls.config.set_config { + history = true, + update_events = "TextChanged,TextChangedI", + ext_opts = { + [types.choiceNode] = { + active = { + virt_text = { {"<- Current choice", "Comment"} }, + }, }, }, + } - [types.insertNode] = { - active = { - virt_text = { {"<>", "Comment"} }, + vim.keymap.set({ "i", "s" }, "", function() + if ls.jumpable(1) then + ls.jump(1) + end + end) + + vim.keymap.set({ "i", "s" }, "", function() + if ls.jumpable(-1) then + ls.jump(-1) + end + end) + + vim.keymap.set({ "i", "s" }, "", function() + if ls.expand_or_jumpable() then + ls.expand_or_jump() + end + end) + + vim.keymap.set({ "i", "s" }, "", function() + require("luasnip.extras.select_choice")() + end) + end, + } + + -- Fuzzy finder of lists + use { + "nvim-telescope/telescope.nvim", + requires = { + {"nvim-lua/popup.nvim"}, + {"nvim-lua/plenary.nvim"}, + {"nvim-telescope/telescope-project.nvim"} + }, + + config = function() + -- Telescope setup + require("telescope").setup { + extensions = { + project = { + base_dirs = { + {"~/library/projects/software", max_depth = 2}, + {"~/library/projects/packages"}, + {"~/library/writings"}, + }, }, }, - }, - } + } - vim.keymap.set({ "i", "s" }, "", function() - if ls.jumpable(1) then - ls.jump(1) - end - end) + require("telescope").load_extension("project") - vim.keymap.set({ "i", "s" }, "", function() - if ls.jumpable(-1) then - ls.jump(-1) - end - end) + vim.keymap.set('n', 'ff', 'lua require("telescope.builtin").find_files({ hidden = true })', { noremap = true }) + vim.keymap.set('n', 'fF', 'lua require("telescope.builtin").find_files({ cwd = require("telescope.utils").buffer_dir(), hidden = true })', { noremap = true }) + vim.keymap.set('n', 'fg', 'lua require("telescope.builtin").grep_string()', { noremap = true }) + vim.keymap.set('n', 'fG', 'lua require("telescope.builtin").live_grep()', { noremap = true }) + vim.keymap.set('n', 'fb', 'lua require("telescope.builtin").buffers()', { noremap = true }) + vim.keymap.set('n', 'fh', 'lua require("telescope.builtin").help_tags()', { noremap = true }) + vim.keymap.set('n', 'ft', 'lua require("telescope.builtin").treesitter()', { noremap = true }) + vim.keymap.set('n', 'fb', 'lua require("telescope.builtin").buffers()', { noremap = true }) + vim.keymap.set('n', 'fr', 'lua require("telescope.builtin").oldfiles()', { noremap = true }) + vim.keymap.set('n', 'fR', 'lua require("telescope.builtin").oldfiles({ only_cwd = true })', { noremap = true }) + vim.keymap.set('n', 'fA', 'lua require("telescope.builtin").resume()', { noremap = true }) - vim.keymap.set({ "i", "s" }, "", function() - if ls.expand_or_jumpable() then - ls.expand_or_jump() - end - end) + -- Ekeymap.set + vim.keymap.set('n', 'fp', 'lua require("telescope").extensions.project.project({})', { noremap = true }) + end, + } - vim.keymap.set({ "i", "s" }, "", function() - require("luasnip.extras.select_choice")() - end) - end, - } - - -- Fuzzy finder of lists - use { - "nvim-telescope/telescope.nvim", - requires = { - {"nvim-lua/popup.nvim"}, - {"nvim-lua/plenary.nvim"}, - {"nvim-telescope/telescope-project.nvim"} - }, - - config = function() - -- Telescope setup - require("telescope").setup { - extensions = { - project = { - base_dirs = { - {"~/library/projects/software", max_depth = 2}, - {"~/library/projects/packages"}, - {"~/library/writings"}, - }, - }, - }, - } - - require("telescope").load_extension("project") - - vim.keymap.set('n', 'ff', 'lua require("telescope.builtin").find_files({ hidden = true })', { noremap = true }) - vim.keymap.set('n', 'fF', 'lua require("telescope.builtin").find_files({ cwd = require("telescope.utils").buffer_dir(), hidden = true })', { noremap = true }) - vim.keymap.set('n', 'fg', 'lua require("telescope.builtin").grep_string()', { noremap = true }) - vim.keymap.set('n', 'fG', 'lua require("telescope.builtin").live_grep()', { noremap = true }) - vim.keymap.set('n', 'fb', 'lua require("telescope.builtin").buffers()', { noremap = true }) - vim.keymap.set('n', 'fh', 'lua require("telescope.builtin").help_tags()', { noremap = true }) - vim.keymap.set('n', 'ft', 'lua require("telescope.builtin").treesitter()', { noremap = true }) - vim.keymap.set('n', 'fb', 'lua require("telescope.builtin").buffers()', { noremap = true }) - vim.keymap.set('n', 'fr', 'lua require("telescope.builtin").oldfiles()', { noremap = true }) - vim.keymap.set('n', 'fR', 'lua require("telescope.builtin").oldfiles({ only_cwd = true })', { noremap = true }) - vim.keymap.set('n', 'fA', 'lua require("telescope.builtin").resume()', { noremap = true }) - - -- Ekeymap.set - vim.keymap.set('n', 'fp', 'lua require("telescope").extensions.project.project({})', { noremap = true }) - end, - } - - -- Marks in ~~steroids~~ coconut oil - use { + -- Marks in ~~steroids~~ coconut oil + use { "ThePrimeagen/harpoon", config = function() vim.keymap.set("n", "fm", "lua require('harpoon.mark').add_file()", {}) @@ -136,143 +134,149 @@ return require("packer").startup(function(use) end end, requires = { {"nvim-lua/plenary.nvim"} } - } + } - -- A completion engine. - -- nvim-cmp is mostly explicit by making the configuration process manual unlike bigger plugins like CoC - use { - "hrsh7th/nvim-cmp", - requires = { - "hrsh7th/cmp-buffer", - "hrsh7th/cmp-path", - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-nvim-lua", - "saadparwaiz1/cmp_luasnip", - }, - config = function() - local cmp = require("cmp") + -- A completion engine. + -- nvim-cmp is mostly explicit by making the configuration process manual unlike bigger plugins like CoC + use { + "hrsh7th/nvim-cmp", + requires = { + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-nvim-lua", + "saadparwaiz1/cmp_luasnip", + }, + config = function() + local cmp = require("cmp") - cmp.setup({ - snippet = { - expand = function (args) - ls.lsp_expand(args.body) - end, - }, - - sources = { - { name = "luasnip" }, - { name = "buffer" }, - { name = "path" }, - { name = "nvim_lua" }, - { name = "nvim_lsp" }, - }, - - mapping = { - [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "c" }), - [""] = cmp.mapping(cmp.mapping.confirm({ select = true }), { "i", "c" }), - [""] = cmp.mapping({ - i = cmp.mapping.abort(), - c = cmp.mapping.close(), - }), - }, - }) - end - } - - -- A linting engine, a DAP client, and an LSP client entered into a bar. - use { - "dense-analysis/ale", - config = function() - vim.g.ale_disable_lsp = 1 - end, - } - use { "neovim/nvim-lspconfig" } - use { "mfussenegger/nvim-dap" } - use { "puremourning/vimspector" } - - -- tree-sitter - use { - "nvim-treesitter/nvim-treesitter", - requires = { - "nvim-treesitter/nvim-treesitter-textobjects" - }, - run = ":TSUpdate", - config = function() - vim.opt.foldmethod = "expr" - vim.opt.foldexpr = "nvim_treesitter#foldexpr()" - - require("nvim-treesitter.configs").setup({ - highlight = { - enable = true, - additional_vim_regex_highlighting = false, - }, - - incremental_selection = { - enable = true, - keymaps = { - init_selection = "gnn", - node_incremental = "grn", - scope_incremental = "grc", - node_decremental = "grm", + cmp.setup({ + snippet = { + expand = function (args) + ls.lsp_expand(args.body) + end, }, - }, - indent = { enable = true }, + sources = { + { name = "luasnip" }, + { name = "buffer" }, + { name = "path" }, + { name = "nvim_lua" }, + { name = "nvim_lsp" }, + }, - -- custom text objects with nvim-treesitter-textobjects - -- I've just copied this from the README but they are reasonable additions to me. - textobjects = { - select = { + mapping = { + [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.confirm({ select = true }), { "i", "c" }), + [""] = cmp.mapping({ + i = cmp.mapping.abort(), + c = cmp.mapping.close(), + }), + }, + }) + end + } + + -- A linting engine, a DAP client, and an LSP client entered into a bar. + use { + "dense-analysis/ale", + config = function() + vim.g.ale_disable_lsp = 1 + end, + } + use { "neovim/nvim-lspconfig" } + use { "mfussenegger/nvim-dap" } + use { "puremourning/vimspector" } + + -- tree-sitter + use { + "nvim-treesitter/nvim-treesitter", + requires = { + "nvim-treesitter/nvim-treesitter-textobjects" + }, + run = ":TSUpdate", + config = function() + vim.opt.foldmethod = "expr" + vim.opt.foldexpr = "nvim_treesitter#foldexpr()" + + require("nvim-treesitter.configs").setup({ + highlight = { enable = true, - lookahead = true, + additional_vim_regex_highlighting = false, + }, + incremental_selection = { + enable = true, keymaps = { - ["af"] = "@function.outer", - ["if"] = "@function.inner", - ["ae"] = "@block.outer", - ["ie"] = "@block.inner", - ["ac"] = "@class.outer", - ["ic"] = "@class.inner", - ["aC"] = "@conditional.outer", - ["iC"] = "@conditional.inner", + init_selection = "gnn", + node_incremental = "grn", + scope_incremental = "grc", + node_decremental = "grm", }, }, - }, - }) + + indent = { enable = true }, + + -- custom text objects with nvim-treesitter-textobjects + -- I've just copied this from the README but they are reasonable additions to me. + textobjects = { + select = { + enable = true, + lookahead = true, + + keymaps = { + ["af"] = "@function.outer", + ["if"] = "@function.inner", + ["ae"] = "@block.outer", + ["ie"] = "@block.inner", + ["ac"] = "@class.outer", + ["ic"] = "@class.inner", + ["aC"] = "@conditional.outer", + ["iC"] = "@conditional.inner", + }, + }, + }, + }) end - } + } - -- One of the most popular plugins. - -- Allows to create more substantial status bars. - use { "vim-airline/vim-airline" } + -- One of the most popular plugins. + -- Allows to create more substantial status bars. + use { "vim-airline/vim-airline" } - -- Fuzzy finder for finding files freely and fastly. - use { - "junegunn/fzf", - requires = "junegunn/fzf.vim" - } + -- Fuzzy finder for finding files freely and fastly. + use { + "junegunn/fzf", + requires = "junegunn/fzf.vim" + } - -- Enable visuals for addition/deletion of lines in the gutter (side) similar to Visual Studio Code. - use { "airblade/vim-gitgutter" } + -- Enable visuals for addition/deletion of lines in the gutter (side) similar to Visual Studio Code. + use { "airblade/vim-gitgutter" } - -- Language plugins. - use { "LnL7/vim-nix" } -- Nix - use { "vmchale/dhall-vim" } -- Dhall - use { "ziglang/zig.vim" } -- Zig + -- Language plugins. + use { "LnL7/vim-nix" } -- Nix + use { "vmchale/dhall-vim" } -- Dhall + use { "ziglang/zig.vim" } -- Zig - -- Use Neovim even inside of browsers. - use { - "glacambre/firenvim", - run = function() - vim.fn["firenvim#install"](0) - end - } + -- Use Neovim even inside of browsers. + use { + "glacambre/firenvim", + run = function() + vim.fn["firenvim#install"](0) + end + } - if packer_bootstrap then - require("packer").sync() - end -end) + use { "https://gitlab.com/HiPhish/guile.vim.git" } + use { + "eraserhd/parinfer-rust", + run = "nix-shell --run 'cargo build --release'", + } + use { "Olical/conjure", } + end, + config = { + compile_path = util.join_paths(vim.fn.stdpath('data'), 'site', 'after', 'plugin', 'packer_compiled.lua'), +}})