mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 08:35:43 +02:00
plugins/nvim-autopairs: switch to mkNeovimPlugin
This commit is contained in:
parent
ffa3020522
commit
38a4fc7709
2 changed files with 229 additions and 103 deletions
|
@ -5,104 +5,208 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
with lib; let
|
with lib;
|
||||||
cfg = config.plugins.nvim-autopairs;
|
helpers.neovim-plugin.mkNeovimPlugin config {
|
||||||
in {
|
name = "nvim-autopairs";
|
||||||
options.plugins.nvim-autopairs =
|
defaultPackage = pkgs.vimPlugins.nvim-autopairs;
|
||||||
helpers.neovim-plugin.extraOptionsOptions
|
|
||||||
// {
|
|
||||||
enable = mkEnableOption "nvim-autopairs";
|
|
||||||
|
|
||||||
package = helpers.mkPackageOption "nvim-autopairs" pkgs.vimPlugins.nvim-autopairs;
|
maintainers = [maintainers.GaetanLepage];
|
||||||
|
|
||||||
pairs = helpers.mkNullOrOption (types.attrsOf types.str) "Characters to pair up";
|
# TODO: introduced 2024-03-27, remove on 2024-05-27
|
||||||
|
deprecateExtraOptions = true;
|
||||||
|
optionsRenamedToSettings = [
|
||||||
|
"disableInMacro"
|
||||||
|
"disableInVisualblock"
|
||||||
|
"disableInReplaceMode"
|
||||||
|
"ignoredNextChar"
|
||||||
|
"enableMoveright"
|
||||||
|
"enableCheckBracketLine"
|
||||||
|
"enableBracketInQuote"
|
||||||
|
"enableAbbr"
|
||||||
|
"breakUndo"
|
||||||
|
"checkTs"
|
||||||
|
"tsConfig"
|
||||||
|
"mapCr"
|
||||||
|
"mapBs"
|
||||||
|
"mapCH"
|
||||||
|
"mapCW"
|
||||||
|
];
|
||||||
|
imports = let
|
||||||
|
basePluginPaths = ["plugins" "nvim-autopairs"];
|
||||||
|
settingsPath = basePluginPaths ++ ["settings"];
|
||||||
|
in [
|
||||||
|
(
|
||||||
|
mkRenamedOptionModule
|
||||||
|
(basePluginPaths ++ ["disabledFiletypes"])
|
||||||
|
(settingsPath ++ ["disable_filetype"])
|
||||||
|
)
|
||||||
|
(
|
||||||
|
mkRenamedOptionModule
|
||||||
|
(basePluginPaths ++ ["enableAfterQuote"])
|
||||||
|
(settingsPath ++ ["enable_afterquote"])
|
||||||
|
)
|
||||||
|
(
|
||||||
|
mkRemovedOptionModule
|
||||||
|
(basePluginPaths ++ ["pairs"])
|
||||||
|
''
|
||||||
|
This option was having no effect.
|
||||||
|
If you want to customize pairs, please use `extraConfigLua` to define them as described in the plugin documentation.
|
||||||
|
''
|
||||||
|
)
|
||||||
|
];
|
||||||
|
|
||||||
disabledFiletypes =
|
settingsOptions = {
|
||||||
helpers.defaultNullOpts.mkNullable
|
disable_filetype =
|
||||||
(types.listOf types.str)
|
helpers.defaultNullOpts.mkListOf types.str
|
||||||
''["TelescopePrompt" "spectre_panel"]''
|
''["TelescopePrompt" "spectre_panel"]''
|
||||||
"Disabled filetypes";
|
"Disabled filetypes.";
|
||||||
|
|
||||||
disableInMacro = helpers.defaultNullOpts.mkBool false ''
|
disable_in_macro = helpers.defaultNullOpts.mkBool false ''
|
||||||
Disable when recording or executing a macro.
|
Disable when recording or executing a macro.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
disableInVisualblock = helpers.defaultNullOpts.mkBool false ''
|
disable_in_visualblock = helpers.defaultNullOpts.mkBool false ''
|
||||||
Disable when insert after visual block mode.
|
Disable when insert after visual block mode.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
disableInReplaceMode = helpers.defaultNullOpts.mkBool true "Disable in replace mode.";
|
disable_in_replace_mode = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Disable in replace mode.
|
||||||
|
'';
|
||||||
|
|
||||||
ignoredNextChar = helpers.defaultNullOpts.mkLua "[=[[%w%%%'%[%\"%.%`%$]]=]" ''
|
ignored_next_char = helpers.defaultNullOpts.mkLua "[=[[%w%%%'%[%\"%.%`%$]]=]" ''
|
||||||
Regexp to ignore if it matches the next character.
|
Regexp to ignore if it matches the next character.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
enableMoveright = helpers.defaultNullOpts.mkBool true "Enable moveright.";
|
enable_moveright = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Enable moveright.
|
||||||
enableAfterQuote = helpers.defaultNullOpts.mkBool true "Add bracket pairs after quote.";
|
|
||||||
|
|
||||||
enableCheckBracketLine = helpers.defaultNullOpts.mkBool true "Check bracket in same line.";
|
|
||||||
|
|
||||||
enableBracketInQuote = helpers.defaultNullOpts.mkBool true "Enable bracket in quote.";
|
|
||||||
|
|
||||||
enableAbbr = helpers.defaultNullOpts.mkBool false "Trigger abbreviation.";
|
|
||||||
|
|
||||||
breakUndo = helpers.defaultNullOpts.mkBool true "Switch for basic rule break undo sequence.";
|
|
||||||
|
|
||||||
checkTs = helpers.defaultNullOpts.mkBool false "Use treesitter to check for a pair.";
|
|
||||||
|
|
||||||
tsConfig = helpers.mkNullOrOption (types.nullOr types.attrs) ''
|
|
||||||
Configuration for TreeSitter.
|
|
||||||
|
|
||||||
Default:
|
|
||||||
```
|
|
||||||
{
|
|
||||||
lua = [ "string" "source" ];
|
|
||||||
javascript = [ "string" "template_string" ];
|
|
||||||
};
|
|
||||||
```
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
mapCr = helpers.defaultNullOpts.mkBool true "Map the <CR> key to confirm the completion.";
|
enable_afterquote = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Add bracket pairs after quote.
|
||||||
|
'';
|
||||||
|
|
||||||
mapBs = helpers.defaultNullOpts.mkBool true "Map the <BS> key to delete the pair.";
|
enable_check_bracket_line = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Check bracket in same line.
|
||||||
|
'';
|
||||||
|
|
||||||
mapCH = helpers.defaultNullOpts.mkBool false "Map the <C-h> key to delete a pair.";
|
enable_bracket_in_quote = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Enable bracket in quote.
|
||||||
|
'';
|
||||||
|
|
||||||
mapCW = helpers.defaultNullOpts.mkBool false "Map the <C-w> key to delete a pair if possible.";
|
enable_abbr = helpers.defaultNullOpts.mkBool false ''
|
||||||
|
Trigger abbreviation.
|
||||||
|
'';
|
||||||
|
|
||||||
|
break_undo = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Switch for basic rule break undo sequence.
|
||||||
|
'';
|
||||||
|
|
||||||
|
check_ts = helpers.defaultNullOpts.mkBool false ''
|
||||||
|
Use treesitter to check for a pair.
|
||||||
|
'';
|
||||||
|
|
||||||
|
ts_config =
|
||||||
|
helpers.defaultNullOpts.mkAttrsOf types.anything
|
||||||
|
''
|
||||||
|
{
|
||||||
|
lua = [
|
||||||
|
"string"
|
||||||
|
"source"
|
||||||
|
"string_content"
|
||||||
|
];
|
||||||
|
javascript = [
|
||||||
|
"string"
|
||||||
|
"template_string"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
''
|
||||||
|
"Configuration for TreeSitter.";
|
||||||
|
|
||||||
|
map_cr = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Map the `<CR>` key to confirm the completion.
|
||||||
|
'';
|
||||||
|
|
||||||
|
map_bs = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Map the `<BS>` key to delete the pair.
|
||||||
|
'';
|
||||||
|
|
||||||
|
map_c_h = helpers.defaultNullOpts.mkBool false ''
|
||||||
|
Map the `<C-h>` key to delete a pair.
|
||||||
|
'';
|
||||||
|
|
||||||
|
map_c_w = helpers.defaultNullOpts.mkBool false ''
|
||||||
|
Map the `<C-w>` key to delete a pair if possible.
|
||||||
|
'';
|
||||||
|
|
||||||
|
fast_wrap = {
|
||||||
|
map = helpers.defaultNullOpts.mkStr "<M-e>" ''
|
||||||
|
The key to trigger fast_wrap.
|
||||||
|
'';
|
||||||
|
|
||||||
|
chars = helpers.defaultNullOpts.mkListOf types.str ''["{" "[" "(" "\"" "'"]'' ''
|
||||||
|
Characters for which to enable fast wrap.
|
||||||
|
'';
|
||||||
|
|
||||||
|
pattern = helpers.defaultNullOpts.mkLua ''[=[[%'%"%>%]%)%}%,%`]]=]'' ''
|
||||||
|
The pattern to match against.
|
||||||
|
'';
|
||||||
|
|
||||||
|
end_key = helpers.defaultNullOpts.mkStr "$" ''
|
||||||
|
End key.
|
||||||
|
'';
|
||||||
|
|
||||||
|
before_key = helpers.defaultNullOpts.mkStr "h" ''
|
||||||
|
Before key.
|
||||||
|
'';
|
||||||
|
|
||||||
|
after_key = helpers.defaultNullOpts.mkStr "l" ''
|
||||||
|
After key.
|
||||||
|
'';
|
||||||
|
|
||||||
|
cursor_pos_before = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Whether the cursor should be placed before or after the substitution.
|
||||||
|
'';
|
||||||
|
|
||||||
|
keys =
|
||||||
|
helpers.defaultNullOpts.mkStr "qwertyuiopzxcvbnmasdfghjkl" ''
|
||||||
|
'';
|
||||||
|
|
||||||
|
highlight = helpers.defaultNullOpts.mkStr "Search" ''
|
||||||
|
Which highlight group to use for the match.
|
||||||
|
'';
|
||||||
|
|
||||||
|
highlight_grey = helpers.defaultNullOpts.mkStr "Comment" ''
|
||||||
|
Which highlight group to use for the grey part.
|
||||||
|
'';
|
||||||
|
|
||||||
|
manual_position = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Whether to enable manual position.
|
||||||
|
'';
|
||||||
|
|
||||||
|
use_virt_lines = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Whether to use `virt_lines`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = let
|
settingsExample = {
|
||||||
options =
|
disable_filetype = ["TelescopePrompt"];
|
||||||
{
|
fast_wrap = {
|
||||||
pairs_map = cfg.pairs;
|
map = "<M-e>";
|
||||||
|
end_key = "$";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
disable_filetype = cfg.disabledFiletypes;
|
extraConfig = cfg: {
|
||||||
disable_in_macro = cfg.disableInMacro;
|
warnings =
|
||||||
disable_in_visualblock = cfg.disableInVisualblock;
|
optional (
|
||||||
disable_in_replace_mode = cfg.disableInReplaceMode;
|
(isBool cfg.settings.check_ts)
|
||||||
ignored_next_char = cfg.ignoredNextChar;
|
&& cfg.settings.check_ts
|
||||||
enable_moveright = cfg.enableMoveright;
|
&& !config.plugins.treesitter.enable
|
||||||
enable_afterquote = cfg.enableAfterQuote;
|
)
|
||||||
enable_check_bracket_line = cfg.enableCheckBracketLine;
|
''
|
||||||
enable_bracket_in_quote = cfg.enableBracketInQuote;
|
Nixvim (plugins.nvim-autopairs): You have set `settings.check_ts` to `true` but have not enabled the treesitter plugin.
|
||||||
enable_abbr = cfg.enableAbbr;
|
We suggest you to set `plugins.treesitter.enable` to `true`.
|
||||||
break_undo = cfg.breakUndo;
|
|
||||||
check_ts = cfg.checkTs;
|
|
||||||
map_cr = cfg.mapCr;
|
|
||||||
map_bs = cfg.mapBs;
|
|
||||||
map_c_h = cfg.mapCH;
|
|
||||||
map_c_w = cfg.mapCW;
|
|
||||||
}
|
|
||||||
// cfg.extraOptions;
|
|
||||||
in
|
|
||||||
mkIf cfg.enable {
|
|
||||||
extraPlugins = [cfg.package];
|
|
||||||
|
|
||||||
plugins.treesitter.enable = mkIf (cfg.checkTs != null && cfg.checkTs) true;
|
|
||||||
|
|
||||||
extraConfigLua = ''
|
|
||||||
require('nvim-autopairs').setup(${helpers.toLuaObject options})
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,27 +7,49 @@
|
||||||
plugins.nvim-autopairs = {
|
plugins.nvim-autopairs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
pairs = null;
|
settings = {
|
||||||
disabledFiletypes = ["TelescopePrompt" "spectre_panel"];
|
disable_filetype = ["TelescopePrompt" "spectre_panel"];
|
||||||
disableInMacro = false;
|
disable_in_macro = false;
|
||||||
disableInVisualblock = false;
|
disable_in_visualblock = false;
|
||||||
disableInReplaceMode = true;
|
disable_in_replace_mode = true;
|
||||||
ignoredNextChar = "[=[[%w%%%'%[%\"%.%`%$]]=]";
|
ignored_next_char = "[=[[%w%%%'%[%\"%.%`%$]]=]";
|
||||||
enableMoveright = true;
|
enable_moveright = true;
|
||||||
enableAfterQuote = true;
|
enable_afterquote = true;
|
||||||
enableCheckBracketLine = true;
|
enable_check_bracket_line = true;
|
||||||
enableBracketInQuote = true;
|
enable_bracket_in_quote = true;
|
||||||
enableAbbr = false;
|
enable_abbr = false;
|
||||||
breakUndo = true;
|
break_undo = true;
|
||||||
checkTs = false;
|
check_ts = false;
|
||||||
tsConfig = {
|
ts_config = {
|
||||||
lua = ["string" "source"];
|
lua = [
|
||||||
javascript = ["string" "template_string"];
|
"string"
|
||||||
|
"source"
|
||||||
|
"string_content"
|
||||||
|
];
|
||||||
|
javascript = [
|
||||||
|
"string"
|
||||||
|
"template_string"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
map_cr = true;
|
||||||
|
map_bs = true;
|
||||||
|
map_c_h = false;
|
||||||
|
map_c_w = false;
|
||||||
|
fast_wrap = {
|
||||||
|
map = "<M-e>";
|
||||||
|
chars = ["{" "[" "(" "\"" "'"];
|
||||||
|
pattern = ''[=[[%'%"%>%]%)%}%,%`]]=]'';
|
||||||
|
end_key = "$";
|
||||||
|
before_key = "h";
|
||||||
|
after_key = "l";
|
||||||
|
cursor_pos_before = true;
|
||||||
|
keys = "qwertyuiopzxcvbnmasdfghjkl";
|
||||||
|
highlight = "Search";
|
||||||
|
highlight_grey = "Comment";
|
||||||
|
manual_position = true;
|
||||||
|
use_virt_lines = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
mapCr = true;
|
|
||||||
mapBs = true;
|
|
||||||
mapCH = false;
|
|
||||||
mapCW = false;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue