nix-community.nixvim/plugins/utils/comment.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

248 lines
5.5 KiB
Nix
Raw Normal View History

{
lib,
helpers,
config,
pkgs,
...
}:
with lib;
helpers.neovim-plugin.mkNeovimPlugin config {
name = "comment";
originalName = "Comment.nvim";
luaName = "Comment";
defaultPackage = pkgs.vimPlugins.comment-nvim;
2024-05-05 19:39:35 +02:00
maintainers = [ maintainers.GaetanLepage ];
2024-05-05 19:39:35 +02:00
# 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
2024-05-05 19:39:35 +02:00
++ [
"toggler"
"line"
]
)
(
settingsPath
2024-05-05 19:39:35 +02:00
++ [
"toggler"
"line"
]
)
)
(mkRenamedOptionModule
2024-05-05 19:39:35 +02:00
(
oldPluginPath
++ [
2024-05-05 19:39:35 +02:00
"toggler"
"block"
]
)
(
settingsPath
++ [
2024-05-05 19:39:35 +02:00
"toggler"
"block"
]
)
)
(mkRenamedOptionModule
2024-05-05 19:39:35 +02:00
(
oldPluginPath
2024-05-05 19:39:35 +02:00
++ [
"opleader"
2024-05-05 19:39:35 +02:00
"line"
]
)
(
settingsPath
2024-05-05 19:39:35 +02:00
++ [
"opleader"
2024-05-05 19:39:35 +02:00
"line"
]
)
)
(mkRenamedOptionModule
(
oldPluginPath
++ [
"opleader"
"block"
2024-05-05 19:39:35 +02:00
]
)
(
settingsPath
++ [
"opleader"
"block"
2024-05-05 19:39:35 +02:00
]
)
)
(mkRenamedOptionModule
(
oldPluginPath
++ [
"mappings"
"basic"
2024-05-05 19:39:35 +02:00
]
)
(
settingsPath
++ [
"mappings"
"basic"
2024-05-05 19:39:35 +02:00
]
)
)
(mkRenamedOptionModule
(
oldPluginPath
++ [
"mappings"
"extra"
2024-05-05 19:39:35 +02:00
]
)
(
settingsPath
++ [
"mappings"
"extra"
2024-05-05 19:39:35 +02:00
]
)
)
(mkRemovedOptionModule (
oldPluginPath
++ [
"mappings"
"extended"
2024-05-05 19:39:35 +02:00
]
) "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}`).
'';
2024-05-05 19:39:35 +02:00
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
2024-05-05 19:39:35 +02:00
else
-- do something with lines range
2024-05-05 19:39:35 +02:00
end
end
'';
};
}