mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-22 00:48:58 +02:00
183 lines
5.4 KiB
Nix
183 lines
5.4 KiB
Nix
{
|
|
lib,
|
|
helpers,
|
|
config,
|
|
pkgs,
|
|
...
|
|
}:
|
|
with lib; let
|
|
cfg = config.plugins.rest;
|
|
in {
|
|
meta.maintainers = [maintainers.GaetanLepage];
|
|
|
|
options.plugins.rest =
|
|
helpers.neovim-plugin.extraOptionsOptions
|
|
// {
|
|
enable = mkEnableOption "rest.nvim";
|
|
|
|
package = helpers.mkPackageOption "rest.nvim" pkgs.vimPlugins.rest-nvim;
|
|
|
|
resultSplitHorizontal = helpers.defaultNullOpts.mkBool false ''
|
|
Open request results in a horizontal split (default opens on vertical).
|
|
'';
|
|
|
|
resultSplitInPlace = helpers.defaultNullOpts.mkBool false ''
|
|
Keep the http file buffer above|left when split horizontal|vertical.
|
|
'';
|
|
|
|
stayInCurrentWindowAfterSplit = helpers.defaultNullOpts.mkBool false ''
|
|
Stay in current windows (`.http` file) or change to results window (default).
|
|
'';
|
|
|
|
skipSslVerification = helpers.defaultNullOpts.mkBool false ''
|
|
Skip SSL verification, useful for unknown certificates.
|
|
'';
|
|
|
|
encodeUrl = helpers.defaultNullOpts.mkBool true ''
|
|
Encode URL before making request.
|
|
'';
|
|
|
|
highlight = {
|
|
enabled = helpers.defaultNullOpts.mkBool true ''
|
|
Enable the highlighting of the selected request when send.
|
|
'';
|
|
|
|
timeout = helpers.defaultNullOpts.mkUnsignedInt 150 ''
|
|
Timeout for highlighting.
|
|
'';
|
|
};
|
|
|
|
result = {
|
|
showUrl = helpers.defaultNullOpts.mkBool true ''
|
|
Toggle showing URL, HTTP info, headers at top the of result window.
|
|
'';
|
|
|
|
showCurlCommand = helpers.defaultNullOpts.mkBool true ''
|
|
Show the generated curl command in case you want to launch the same request via the
|
|
terminal (can be verbose).
|
|
'';
|
|
|
|
showHttpInfo = helpers.defaultNullOpts.mkBool true ''
|
|
Show HTTP information.
|
|
'';
|
|
|
|
showHeaders = helpers.defaultNullOpts.mkBool true ''
|
|
Show headers information.
|
|
'';
|
|
|
|
showStatistics =
|
|
helpers.defaultNullOpts.mkNullable
|
|
(
|
|
with types;
|
|
either
|
|
(enum [false])
|
|
(
|
|
listOf
|
|
(
|
|
either
|
|
str
|
|
(listOf str)
|
|
)
|
|
)
|
|
)
|
|
"false"
|
|
''
|
|
Table of curl `--write-out` variables or false if disabled.
|
|
For more granular control see [Statistics Spec](https://github.com/rest-nvim/rest.nvim?tab=readme-ov-file#statistics-spec).
|
|
'';
|
|
|
|
formatters =
|
|
helpers.defaultNullOpts.mkAttrsOf
|
|
(
|
|
with types;
|
|
either str (enum [false])
|
|
)
|
|
''
|
|
{
|
|
json = "jq";
|
|
html.__raw = \'\'
|
|
function(body)
|
|
if vim.fn.executable("tidy") == 0 then
|
|
return body
|
|
end
|
|
-- stylua: ignore
|
|
return vim.fn.system({
|
|
"tidy", "-i", "-q",
|
|
"--tidy-mark", "no",
|
|
"--show-body-only", "auto",
|
|
"--show-errors", "0",
|
|
"--show-warnings", "0",
|
|
"-",
|
|
}, body):gsub("\n$", "")
|
|
end
|
|
\'\';
|
|
}
|
|
''
|
|
''
|
|
Executables or functions for formatting response body [optional].
|
|
Set them to false if you want to disable them.
|
|
'';
|
|
};
|
|
|
|
jumpToRequest = helpers.defaultNullOpts.mkBool false ''
|
|
Moves the cursor to the selected request line when send.
|
|
'';
|
|
|
|
envFile = helpers.defaultNullOpts.mkStr ".env" ''
|
|
Specifies file name that consist environment variables.
|
|
'';
|
|
|
|
customDynamicVariables = mkOption {
|
|
type = with helpers.nixvimTypes; nullOr (attrsOf strLuaFn);
|
|
default = null;
|
|
description = ''
|
|
Allows to extend or overwrite built-in dynamic variable functions.
|
|
'';
|
|
apply = v: helpers.ifNonNull' v (mapAttrs (_: helpers.mkRaw) v);
|
|
};
|
|
|
|
yankDryRun = helpers.defaultNullOpts.mkBool true "";
|
|
|
|
searchBack = helpers.defaultNullOpts.mkBool true "";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
extraPlugins = [cfg.package];
|
|
|
|
extraPackages = [pkgs.curl];
|
|
|
|
extraConfigLua = let
|
|
setupOptions = with cfg;
|
|
{
|
|
result_split_horizontal = resultSplitHorizontal;
|
|
result_split_in_place = resultSplitInPlace;
|
|
stay_in_current_window_after_split = stayInCurrentWindowAfterSplit;
|
|
skip_ssl_verification = skipSslVerification;
|
|
encode_url = encodeUrl;
|
|
highlight = with highlight; {
|
|
inherit
|
|
(highlight)
|
|
enabled
|
|
timeout
|
|
;
|
|
};
|
|
result = with result; {
|
|
show_url = showUrl;
|
|
show_curl_command = showCurlCommand;
|
|
show_http_info = showHttpInfo;
|
|
show_headers = showHeaders;
|
|
show_statistics = showStatistics;
|
|
inherit formatters;
|
|
};
|
|
jump_to_request = jumpToRequest;
|
|
env_file = envFile;
|
|
custom_dynamic_variables = customDynamicVariables;
|
|
yank_dry_run = yankDryRun;
|
|
search_back = searchBack;
|
|
}
|
|
// cfg.extraOptions;
|
|
in ''
|
|
require('rest-nvim').setup(${helpers.toLuaObject setupOptions})
|
|
'';
|
|
};
|
|
}
|