plugins/overseer: init

This commit is contained in:
Austin Horstman 2024-09-14 22:12:40 -05:00
parent a20d95625b
commit add9aca76e
No known key found for this signature in database
2 changed files with 309 additions and 0 deletions

View file

@ -0,0 +1,132 @@
{
lib,
...
}:
let
inherit (lib.nixvim) defaultNullOpts;
inherit (lib) types;
in
lib.nixvim.neovim-plugin.mkNeovimPlugin {
name = "overseer";
originalName = "overseer.nvim";
package = "overseer-nvim";
maintainers = [ lib.maintainers.khaneliman ];
settingsOptions = {
strategy = defaultNullOpts.mkStr "terminal" ''
Default task strategy.
'';
templates = defaultNullOpts.mkListOf types.str [ "builtin" ] ''
Template modules to load.
'';
auto_detect_success_color = defaultNullOpts.mkBool true ''
When true, tries to detect a green color from your colorscheme to use for success highlight.
'';
dap = defaultNullOpts.mkBool true ''
Whether to patch nvim-dap to support preLaunchTask and postDebugTask
'';
task_list =
defaultNullOpts.mkAttrsOf types.anything
{
default_detail = 1;
max_width = [
100
0.2
];
min_width = [
40
0.1
];
width = null;
max_height = [
20
0.1
];
min_height = 8;
height = null;
separator = "";
direction = "bottom";
bindings = {
"?" = "ShowHelp";
"g?" = "ShowHelp";
"<CR>" = "RunAction";
"<C-e>" = "Edit";
"o" = "Open";
"<C-v>" = "OpenVsplit";
"<C-s>" = "OpenSplit";
"<C-f>" = "OpenFloat";
"<C-q>" = "OpenQuickFix";
"p" = "TogglePreview";
"<C-l>" = "IncreaseDetail";
"<C-h>" = "DecreaseDetail";
"L" = "IncreaseAllDetail";
"H" = "DecreaseAllDetail";
"[" = "DecreaseWidth";
"]" = "IncreaseWidth";
"{" = "PrevTask";
"}" = "NextTask";
"<C-k>" = "ScrollOutputUp";
"<C-j>" = "ScrollOutputDown";
"q" = "Close";
};
}
''The task list displays all tasks that have been created. It shows the task status, name, and a summary of the task output.'';
task_editor = {
bindings =
defaultNullOpts.mkAttrsOf types.anything
{
i = {
"<CR>" = "NextOrSubmit";
"<C-s>" = "Submit";
"<Tab>" = "Next";
"<S-Tab>" = "Prev";
"<C-c>" = "Cancel";
};
n = {
"<CR>" = "NextOrSubmit";
"<C-s>" = "Submit";
"<Tab>" = "Next";
"<S-Tab>" = "Prev";
"q" = "Cancel";
"?" = "ShowHelp";
};
}
''
Set keymap to false to remove default behavior.
You can add custom keymaps here as well (anything vim.keymap.set accepts).
'';
};
task_launcher = {
bindings =
defaultNullOpts.mkAttrsOf types.anything
{
i = {
"<C-s>" = "Submit";
"<C-c>" = "Cancel";
};
n = {
"<CR>" = "Submit";
"<C-s>" = "Submit";
"q" = "Cancel";
"?" = "ShowHelp";
};
}
''
Set keymap to false to remove default behavior.
You can add custom keymaps here as well (anything vim.keymap.set accepts).
'';
};
actions = defaultNullOpts.mkAttrsOf types.anything { } ''
They are simply a custom function that will do something to or with a task.
Please refer to the documentation for details of available builtin actions.
'';
};
}

View file

@ -0,0 +1,177 @@
{
empty = {
plugins.overseer.enable = true;
};
default = {
plugins.overseer = {
settings = {
strategy = "terminal";
templates = [ "builtin" ];
auto_detect_success_color = true;
dap = true;
task_list = {
default_detail = 1;
max_width = [
100
0.2
];
min_width = [
40
0.1
];
width = null;
max_height = [
20
0.1
];
min_height = 8;
height = null;
separator = "";
direction = "bottom";
bindings = {
"?" = "ShowHelp";
"g?" = "ShowHelp";
"<CR>" = "RunAction";
"<C-e>" = "Edit";
"o" = "Open";
"<C-v>" = "OpenVsplit";
"<C-s>" = "OpenSplit";
"<C-f>" = "OpenFloat";
"<C-q>" = "OpenQuickFix";
"p" = "TogglePreview";
"<C-l>" = "IncreaseDetail";
"<C-h>" = "DecreaseDetail";
"L" = "IncreaseAllDetail";
"H" = "DecreaseAllDetail";
"[" = "DecreaseWidth";
"]" = "IncreaseWidth";
"{" = "PrevTask";
"}" = "NextTask";
"<C-k>" = "ScrollOutputUp";
"<C-j>" = "ScrollOutputDown";
"q" = "Close";
};
};
actions = { };
form = {
border = "rounded";
zindex = 40;
min_width = 80;
max_width = 0.9;
width = null;
min_height = 10;
max_height = 0.9;
height = null;
win_opts = {
winblend = 0;
};
};
task_launcher = {
bindings = {
i = {
"<C-s>" = "Submit";
"<C-c>" = "Cancel";
};
n = {
"<CR>" = "Submit";
"<C-s>" = "Submit";
"q" = "Cancel";
"?" = "ShowHelp";
};
};
};
task_editor = {
bindings = {
i = {
"<CR>" = "NextOrSubmit";
"<C-s>" = "Submit";
"<Tab>" = "Next";
"<S-Tab>" = "Prev";
"<C-c>" = "Cancel";
};
n = {
"<CR>" = "NextOrSubmit";
"<C-s>" = "Submit";
"<Tab>" = "Next";
"<S-Tab>" = "Prev";
"q" = "Cancel";
"?" = "ShowHelp";
};
};
};
confirm = {
border = "rounded";
zindex = 40;
min_width = 20;
max_width = 0.5;
width = null;
min_height = 6;
max_height = 0.9;
height = null;
win_opts = {
winblend = 0;
};
};
task_win = {
padding = 2;
border = "rounded";
win_opts = {
winblend = 0;
};
};
help_win = {
border = "rounded";
win_opts = { };
};
component_aliases = {
default = [
{
__unkeyed-1 = "display_duration";
detail_level = 2;
}
"on_output_summarize"
"on_exit_set_status"
"on_complete_notify"
{
__unkeyed-2 = "on_complete_dispose";
require_view = [
"SUCCESS"
"FAILURE"
];
}
];
default_vscode = [
"default"
"on_result_diagnostics"
];
};
bundles = {
save_task_opts = {
bundleable = true;
};
autostart_on_load = true;
};
preload_components = [ ];
default_template_prompt = "allow";
template_timeout = 3000;
template_cache_threshold = 100;
};
};
};
keymaps = {
plugins.overseer = {
enable = true;
settings = {
task_launcher = {
"<C-s>" = false;
"<C-m>" = {
action = "<cmd>make<CR>";
options.silent = true;
};
};
};
};
};
}