From e80aa6667166334119d567567e7d1e1eed3ae2fb Mon Sep 17 00:00:00 2001 From: Elijah Manor Date: Mon, 21 Nov 2022 06:47:24 -0600 Subject: [PATCH] Add optional packer plugins hook (#20) * Add optional packer plugins hook * Provide help in README and simplify module * Fix spelling and tweak verbiage about after/plugin --- README.md | 31 +++++++++++++++++++++++++++++++ init.lua | 4 ++++ 2 files changed, 35 insertions(+) diff --git a/README.md b/README.md index 61b559a..e5f8075 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,37 @@ This repo is meant to be used as a starting point for a user's own configuration * Start Neovim (`nvim`) and run `:PackerInstall` - ignore any error message about missing plugins, `:PackerInstall` will fix that shortly * Restart Neovim +### Configuration + +You could directly modify the `init.lua` file with your personal customizations. This option is the most straightforward, but if you update your config from this repo, you may need to reapply your changes. + +An alternative approach is to create a separate `custom.plugins` module to register your own plugins. In addition, you can handle further customizations in the `/after/plugin/` directory (see `:help load-plugins`). See the following examples for more information. Leveraging this technique should make upgrading to a newer version of this repo easier. + +#### Example `plugins.lua` + +The following is an example of a `plugins.lua` module (located at `$HOME/.config/nvim/lua/custom/plugins.lua`) where you can register your own plugins. + +```lua +return function(use) + use({ + "folke/which-key.nvim", + config = function() + require("which-key").setup({}) + end + }) +end +``` + +#### Example `defaults.lua` + +For further customizations, you can add a file in the `/after/plugin/` folder (see `:help load-plugins`) to include your own options, keymaps, autogroups, and more. The following is an example `defaults.lua` file (located at `$HOME/.config/nvim/after/plugin/defaults.lua`). + +```lua +vim.opt.relativenumber = true + +vim.keymap.set('n', 'sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' }) +``` + ### Contribution Pull-requests are welcome. The goal of this repo is not to create a Neovim configuration framework, but to offer a starting template that shows, by example, available features in Neovim. Some things that will not be included: diff --git a/init.lua b/init.lua index 5ed766c..88c3857 100644 --- a/init.lua +++ b/init.lua @@ -57,6 +57,10 @@ require('packer').startup(function(use) -- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make', cond = vim.fn.executable 'make' == 1 } + -- Add custom plugins to packer from /nvim/lua/custom/plugins.lua + local has_plugins, plugins = pcall(require, "custom.plugins") + if has_plugins then plugins(use) end + if is_bootstrap then require('packer').sync() end