mirror of
https://github.com/nix-community/nixvim.git
synced 2025-11-08 19:46:06 +01:00
We used to only think of it as the plugin repo's name, but we have been needing to use it for the name of the plugin's packpath location.
243 lines
5.5 KiB
Nix
243 lines
5.5 KiB
Nix
{
|
|
lib,
|
|
helpers,
|
|
...
|
|
}:
|
|
with lib;
|
|
helpers.neovim-plugin.mkNeovimPlugin {
|
|
name = "comment";
|
|
packPathName = "Comment.nvim";
|
|
luaName = "Comment";
|
|
package = "comment-nvim";
|
|
|
|
maintainers = [ maintainers.GaetanLepage ];
|
|
|
|
# TODO introduced 2024-03-24: remove 2024-05-24
|
|
imports =
|
|
let
|
|
oldPluginPath = [
|
|
"plugins"
|
|
"comment-nvim"
|
|
];
|
|
newPluginPath = [
|
|
"plugins"
|
|
"comment"
|
|
];
|
|
settingsPath = newPluginPath ++ [ "settings" ];
|
|
in
|
|
[
|
|
(mkRenamedOptionModule (oldPluginPath ++ [ "enable" ]) (newPluginPath ++ [ "enable" ]))
|
|
(mkRenamedOptionModule (oldPluginPath ++ [ "package" ]) (newPluginPath ++ [ "package" ]))
|
|
(mkRenamedOptionModule (oldPluginPath ++ [ "padding" ]) (settingsPath ++ [ "padding" ]))
|
|
(mkRenamedOptionModule (oldPluginPath ++ [ "sticky" ]) (settingsPath ++ [ "sticky" ]))
|
|
(mkRenamedOptionModule (oldPluginPath ++ [ "ignore" ]) (settingsPath ++ [ "ignore" ]))
|
|
(mkRenamedOptionModule
|
|
(
|
|
oldPluginPath
|
|
++ [
|
|
"toggler"
|
|
"line"
|
|
]
|
|
)
|
|
(
|
|
settingsPath
|
|
++ [
|
|
"toggler"
|
|
"line"
|
|
]
|
|
)
|
|
)
|
|
(mkRenamedOptionModule
|
|
(
|
|
oldPluginPath
|
|
++ [
|
|
"toggler"
|
|
"block"
|
|
]
|
|
)
|
|
(
|
|
settingsPath
|
|
++ [
|
|
"toggler"
|
|
"block"
|
|
]
|
|
)
|
|
)
|
|
(mkRenamedOptionModule
|
|
(
|
|
oldPluginPath
|
|
++ [
|
|
"opleader"
|
|
"line"
|
|
]
|
|
)
|
|
(
|
|
settingsPath
|
|
++ [
|
|
"opleader"
|
|
"line"
|
|
]
|
|
)
|
|
)
|
|
(mkRenamedOptionModule
|
|
(
|
|
oldPluginPath
|
|
++ [
|
|
"opleader"
|
|
"block"
|
|
]
|
|
)
|
|
(
|
|
settingsPath
|
|
++ [
|
|
"opleader"
|
|
"block"
|
|
]
|
|
)
|
|
)
|
|
(mkRenamedOptionModule
|
|
(
|
|
oldPluginPath
|
|
++ [
|
|
"mappings"
|
|
"basic"
|
|
]
|
|
)
|
|
(
|
|
settingsPath
|
|
++ [
|
|
"mappings"
|
|
"basic"
|
|
]
|
|
)
|
|
)
|
|
(mkRenamedOptionModule
|
|
(
|
|
oldPluginPath
|
|
++ [
|
|
"mappings"
|
|
"extra"
|
|
]
|
|
)
|
|
(
|
|
settingsPath
|
|
++ [
|
|
"mappings"
|
|
"extra"
|
|
]
|
|
)
|
|
)
|
|
(mkRemovedOptionModule (
|
|
oldPluginPath
|
|
++ [
|
|
"mappings"
|
|
"extended"
|
|
]
|
|
) "This option has been removed upstream.")
|
|
(mkRenamedOptionModule (oldPluginPath ++ [ "preHook" ]) (settingsPath ++ [ "pre_hook" ]))
|
|
(mkRenamedOptionModule (oldPluginPath ++ [ "postHook" ]) (settingsPath ++ [ "post_hook" ]))
|
|
];
|
|
|
|
settingsOptions = {
|
|
padding = helpers.defaultNullOpts.mkBool true ''
|
|
Add a space b/w comment and the line.
|
|
'';
|
|
|
|
sticky = helpers.defaultNullOpts.mkBool true ''
|
|
Whether the cursor should stay at its position.
|
|
'';
|
|
|
|
ignore = helpers.mkNullOrStr ''
|
|
Lines to be ignored while (un)comment.
|
|
'';
|
|
|
|
toggler = {
|
|
line = helpers.defaultNullOpts.mkStr "gcc" ''
|
|
Line-comment toggle keymap in NORMAL mode.
|
|
'';
|
|
|
|
block = helpers.defaultNullOpts.mkStr "gbc" ''
|
|
Block-comment toggle keymap in NORMAL mode.
|
|
'';
|
|
};
|
|
|
|
opleader = {
|
|
line = helpers.defaultNullOpts.mkStr "gc" ''
|
|
Line-comment operator-pending keymap in NORMAL and VISUAL mode.
|
|
'';
|
|
|
|
block = helpers.defaultNullOpts.mkStr "gb" ''
|
|
Block-comment operator-pending keymap in NORMAL and VISUAL mode.
|
|
'';
|
|
};
|
|
|
|
extra = {
|
|
above = helpers.defaultNullOpts.mkStr "gcO" ''
|
|
Add comment on the line above.
|
|
'';
|
|
|
|
below = helpers.defaultNullOpts.mkStr "gco" ''
|
|
Add comment on the line below.
|
|
'';
|
|
|
|
eol = helpers.defaultNullOpts.mkStr "gcA" ''
|
|
Add comment at the end of line.
|
|
'';
|
|
};
|
|
|
|
mappings =
|
|
helpers.defaultNullOpts.mkNullable
|
|
(
|
|
with types;
|
|
either (enum [ false ]) (submodule {
|
|
options = {
|
|
basic = helpers.defaultNullOpts.mkBool true ''
|
|
Enable operator-pending mappings (`gcc`, `gbc`, `gc[count]{motion}`, `gb[count]{motion}`).
|
|
'';
|
|
|
|
extra = helpers.defaultNullOpts.mkBool true ''
|
|
Enable extra mappings (`gco`, `gcO`, `gcA`).
|
|
'';
|
|
};
|
|
})
|
|
)
|
|
{
|
|
basic = true;
|
|
extra = true;
|
|
}
|
|
''
|
|
Enables keybindings.
|
|
NOTE: If given 'false', then the plugin won't create any mappings.
|
|
'';
|
|
|
|
pre_hook = helpers.mkNullOrLuaFn ''
|
|
Lua function called before (un)comment.
|
|
'';
|
|
|
|
post_hook = helpers.mkNullOrLuaFn ''
|
|
Lua function called after (un)comment.
|
|
'';
|
|
};
|
|
|
|
settingsExample = {
|
|
ignore = "^const(.*)=(%s?)%((.*)%)(%s?)=>";
|
|
toggler = {
|
|
line = "gcc";
|
|
block = "gbc";
|
|
};
|
|
opleader = {
|
|
line = "gc";
|
|
block = "gb";
|
|
};
|
|
pre_hook = "require('ts_context_commentstring.integrations.comment_nvim').create_pre_hook()";
|
|
post_hook = ''
|
|
function(ctx)
|
|
if ctx.range.srow == ctx.range.erow then
|
|
-- do something with the current line
|
|
else
|
|
-- do something with lines range
|
|
end
|
|
end
|
|
'';
|
|
};
|
|
}
|