diff --git a/docs/release-notes/rl-0.6.md b/docs/release-notes/rl-0.6.md index 50a95cd..f75c54a 100644 --- a/docs/release-notes/rl-0.6.md +++ b/docs/release-notes/rl-0.6.md @@ -2,6 +2,41 @@ Release notes for release 0.6 +## Breaking Changes and Migration Guide {#sec-breaking-changes-and-migration-guide} + +In v0.6 we are introducing `setupOpts`: many plugin related options are moved into their respective `setupOpts` +submodule, e.g. `nvimTree.disableNetrw` is renamed to `nvimTree.setupOpts.disable_netrw`. + +_Why?_ in short, you can now pass in anything to setupOpts and it will be passed to your `require'plugin'.setup{...}`. +No need to wait for us to support every single plugin option. + +The warnings when you rebuild your config should be enough to guide you through what you need to do, if there's an +option that was renamed but wasn't listed in the warning, please file a bug report! + +To make your migration process less annoying, here's a keybind that will help you with renaming stuff from camelCase to +snake_case (you'll be doing that a lot): + +```lua +-- paste this in a temp.lua file and load it in vim with :source /path/to/temp.lua +function camelToSnake() + -- Get the current word under the cursor + local word = vim.fn.expand("") + -- Replace each capital letter with an underscore followed by its lowercase equivalent + local snakeCase = string.gsub(word, "%u", function(match) + return "_" .. string.lower(match) + end) + -- Remove the leading underscore if present + if string.sub(snakeCase, 1, 1) == "_" then + snakeCase = string.sub(snakeCase, 2) + end + vim.fn.setreg(vim.v.register, snakeCase) + -- Select the word under the cursor and paste + vim.cmd("normal! viwP") +end + +vim.api.nvim_set_keymap('n', 'a', ':lua camelToSnake()', { noremap = true, silent = true }) +``` + ## Changelog {#sec-release-0.6-changelog} [ksonj](https://github.com/ksonj): diff --git a/lib/types/plugins.nix b/lib/types/plugins.nix index 1ac74a6..e1b8259 100644 --- a/lib/types/plugins.nix +++ b/lib/types/plugins.nix @@ -90,7 +90,13 @@ in { */ mkPluginSetupOption = pluginName: opts: mkOption { - description = "Option table to pass into the setup function of " + pluginName; + description = '' + Option table to pass into the setup function of ${pluginName} + + You can pass in any additional options even if they're + not listed in the docs + ''; + default = {}; type = submodule { freeformType = attrsOf anything;