contributing: reduce emphasis on settingsOptions

- Add an additional caution in CONTRIBUTING.md#declaring-plugin-options
- Remove `settingsOptions` from plugins/TEMPLATE.nix
This commit is contained in:
Matt Sturgeon 2025-04-21 10:02:30 +01:00
parent 55ad604d44
commit 86a887025f
No known key found for this signature in database
GPG key ID: 4F91844CED1A8299
2 changed files with 4 additions and 15 deletions

View file

@ -185,6 +185,8 @@ list-plugins -k vim
> Declaring `settings`-options is **not required**, because the `settings` option is a freeform type. > Declaring `settings`-options is **not required**, because the `settings` option is a freeform type.
> >
> While `settings` options can be helpful for documentation and type-checking purposes, this is a double-edged sword because we have to ensure the options are correctly typed and documented to avoid unnecessary restrictions or confusion. > While `settings` options can be helpful for documentation and type-checking purposes, this is a double-edged sword because we have to ensure the options are correctly typed and documented to avoid unnecessary restrictions or confusion.
>
> We usually recommend **not** declaring `settings` options, however there are exceptions where the trade-off is worth it.
> [!TIP] > [!TIP]
> Learn more about the [RFC 42](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) which motivated this new approach. > Learn more about the [RFC 42](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) which motivated this new approach.

View file

@ -1,7 +1,4 @@
{ lib, ... }: { lib, ... }:
let
inherit (lib.nixvim) defaultNullOpts;
in
lib.nixvim.plugins.mkNeovimPlugin { lib.nixvim.plugins.mkNeovimPlugin {
name = "my-plugin"; name = "my-plugin";
moduleName = "my-plugin"; # TODO replace (or remove entirely if it is the same as `name`) moduleName = "my-plugin"; # TODO replace (or remove entirely if it is the same as `name`)
@ -10,18 +7,8 @@ lib.nixvim.plugins.mkNeovimPlugin {
maintainers = [ lib.maintainers.MyName ]; # TODO replace with your name maintainers = [ lib.maintainers.MyName ]; # TODO replace with your name
# Optionally, explicitly declare some options. You don't have to. # TODO provide an example for the `settings` option (or remove entirely if there is no useful example)
settingsOptions = { # NOTE you can use `lib.literalExpression` or `lib.literalMD` if needed
foo = defaultNullOpts.mkUnsignedInt 97 ''
The best birth year.
'';
great_feature = defaultNullOpts.mkBool false ''
Whether to enable the great feature.
'';
};
# Optionally, provide an example for the `settings` option.
settingsExample = { settingsExample = {
foo = 42; foo = 42;
bar.__raw = "function() print('hello') end"; bar.__raw = "function() print('hello') end";