2023-02-20 11:42:13 +01:00
|
|
|
{
|
|
|
|
lib,
|
|
|
|
...
|
2024-02-09 14:21:22 +01:00
|
|
|
}:
|
2025-01-22 07:57:18 +01:00
|
|
|
let
|
|
|
|
inherit (lib) types;
|
|
|
|
inherit (lib.nixvim) defaultNullOpts mkNullOrOption;
|
|
|
|
in
|
|
|
|
lib.nixvim.plugins.mkVimPlugin {
|
2024-05-05 19:39:35 +02:00
|
|
|
name = "emmet";
|
2024-12-13 08:27:14 -06:00
|
|
|
packPathName = "emmet-vim";
|
2024-09-02 14:05:11 +01:00
|
|
|
package = "emmet-vim";
|
2024-05-05 19:39:35 +02:00
|
|
|
globalPrefix = "user_emmet_";
|
2024-03-01 18:12:06 +01:00
|
|
|
|
2025-01-22 07:57:18 +01:00
|
|
|
maintainers = [ lib.maintainers.GaetanLepage ];
|
2024-03-04 09:35:28 +01:00
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
# TODO introduced 2024-03-01: remove 2024-05-01
|
|
|
|
deprecateExtraConfig = true;
|
2024-12-16 10:38:12 +01:00
|
|
|
optionsRenamedToSettings = [
|
|
|
|
"mode"
|
|
|
|
{
|
|
|
|
old = "leader";
|
|
|
|
new = "leader_key";
|
|
|
|
}
|
2024-05-05 19:39:35 +02:00
|
|
|
];
|
2022-01-21 19:22:03 -04:00
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
settingsOptions = {
|
2025-01-22 07:57:18 +01:00
|
|
|
mode = defaultNullOpts.mkStr "a" ''
|
2024-05-05 19:39:35 +02:00
|
|
|
Choose modes, in which Emmet mappings will be created.
|
|
|
|
Default value: 'a' - all modes.
|
|
|
|
- 'n' - normal mode.
|
|
|
|
- 'i' - insert mode.
|
|
|
|
- 'v' - visual mode.
|
2022-01-21 19:22:03 -04:00
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
Examples:
|
|
|
|
- create Emmet mappings only for normal mode: `n`
|
|
|
|
- create Emmet mappings for insert, normal and visual modes: `inv`
|
|
|
|
- create Emmet mappings for all modes: `a`
|
|
|
|
'';
|
2024-03-01 18:12:06 +01:00
|
|
|
|
2025-01-22 07:57:18 +01:00
|
|
|
leader_key = defaultNullOpts.mkStr "<C-y>" ''
|
2024-05-05 19:39:35 +02:00
|
|
|
Leading keys to run Emmet functions.
|
|
|
|
'';
|
2024-03-01 18:12:06 +01:00
|
|
|
|
2025-01-22 07:57:18 +01:00
|
|
|
settings = mkNullOrOption (with types; attrsOf anything) ''
|
2024-05-05 19:39:35 +02:00
|
|
|
Emmet settings.
|
2024-03-01 18:12:06 +01:00
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
Defaults: see https://github.com/mattn/emmet-vim/blob/master/autoload/emmet.vim
|
|
|
|
'';
|
|
|
|
};
|
2022-01-21 19:22:03 -04:00
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
settingsExample = {
|
|
|
|
mode = "inv";
|
|
|
|
leader = "<C-Z>";
|
|
|
|
settings = {
|
|
|
|
variables = {
|
|
|
|
lang = "ja";
|
|
|
|
};
|
|
|
|
html = {
|
|
|
|
default_attributes = {
|
|
|
|
option = {
|
|
|
|
value = null;
|
2024-03-01 18:12:06 +01:00
|
|
|
};
|
2024-05-05 19:39:35 +02:00
|
|
|
textarea = {
|
|
|
|
id = null;
|
|
|
|
name = null;
|
|
|
|
cols = 10;
|
|
|
|
rows = 10;
|
2024-03-01 18:12:06 +01:00
|
|
|
};
|
|
|
|
};
|
2024-05-05 19:39:35 +02:00
|
|
|
snippets = {
|
|
|
|
"html:5" = ''
|
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang=\"$\{lang}\">
|
|
|
|
<head>
|
|
|
|
\t<meta charset=\"$\{charset}\">
|
|
|
|
\t<title></title>
|
|
|
|
\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
|
|
|
|
</head>
|
|
|
|
<body>\n\t$\{child}|\n</body>
|
|
|
|
</html>
|
|
|
|
'';
|
|
|
|
};
|
2023-02-20 11:42:13 +01:00
|
|
|
};
|
2024-02-09 14:21:22 +01:00
|
|
|
};
|
2024-05-05 19:39:35 +02:00
|
|
|
};
|
|
|
|
}
|