2023-02-20 11:42:13 +01:00
|
|
|
{
|
2023-11-06 15:04:08 +01:00
|
|
|
lib,
|
|
|
|
helpers,
|
2023-02-20 11:42:13 +01:00
|
|
|
pkgs,
|
|
|
|
...
|
2024-03-16 15:30:02 +00:00
|
|
|
}:
|
|
|
|
with lib;
|
2024-09-01 12:52:28 +01:00
|
|
|
helpers.neovim-plugin.mkNeovimPlugin {
|
2024-03-16 15:30:02 +00:00
|
|
|
name = "trouble";
|
|
|
|
originalName = "trouble-nvim";
|
|
|
|
defaultPackage = pkgs.vimPlugins.trouble-nvim;
|
2024-05-05 19:39:35 +02:00
|
|
|
|
2024-03-16 15:30:02 +00:00
|
|
|
maintainers = [ maintainers.loicreynier ];
|
2024-05-05 19:39:35 +02:00
|
|
|
|
2024-03-16 15:30:02 +00:00
|
|
|
# TODO introduced 2024-03-15: remove 2024-05-15
|
|
|
|
optionsRenamedToSettings = [
|
|
|
|
"autoClose"
|
|
|
|
"autoFold"
|
|
|
|
"autoOpen"
|
|
|
|
"autoJump"
|
|
|
|
"autoPreview"
|
|
|
|
"foldClosed"
|
|
|
|
"foldOpen"
|
|
|
|
"group"
|
|
|
|
"height"
|
|
|
|
"icons"
|
|
|
|
"indentLines"
|
2024-05-05 19:39:35 +02:00
|
|
|
"mode"
|
2024-03-16 15:30:02 +00:00
|
|
|
"padding"
|
2024-05-05 19:39:35 +02:00
|
|
|
"position"
|
2024-03-16 15:30:02 +00:00
|
|
|
"width"
|
|
|
|
"useDiagnosticSigns"
|
2024-05-05 19:39:35 +02:00
|
|
|
|
|
|
|
[
|
2024-03-16 15:30:02 +00:00
|
|
|
"actionKeys"
|
2024-05-05 19:39:35 +02:00
|
|
|
"cancel"
|
|
|
|
]
|
|
|
|
[
|
2024-03-16 15:30:02 +00:00
|
|
|
"actionKeys"
|
|
|
|
"close"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"closeFolds"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"hover"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"jump"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"jumpClose"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"next"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"openFolds"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"openSplit"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"openTab"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"openVsplit"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"previous"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"refresh"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"toggleFold"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"toggleMode"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"actionKeys"
|
|
|
|
"togglePreview"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"signs"
|
|
|
|
"error"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"signs"
|
|
|
|
"hint"
|
|
|
|
]
|
|
|
|
[
|
|
|
|
"signs"
|
|
|
|
"other"
|
2024-05-05 19:39:35 +02:00
|
|
|
]
|
|
|
|
[
|
2024-03-16 15:30:02 +00:00
|
|
|
"signs"
|
2024-05-05 19:39:35 +02:00
|
|
|
"warning"
|
|
|
|
]
|
2024-03-16 15:30:02 +00:00
|
|
|
];
|
2024-05-05 19:39:35 +02:00
|
|
|
|
2024-03-16 15:30:02 +00:00
|
|
|
settingsOptions = {
|
|
|
|
position =
|
|
|
|
helpers.defaultNullOpts.mkEnum
|
|
|
|
[
|
|
|
|
"top"
|
|
|
|
"left"
|
|
|
|
"right"
|
2024-05-05 19:39:35 +02:00
|
|
|
"bottom"
|
2024-03-16 15:30:02 +00:00
|
|
|
]
|
|
|
|
"bottom"
|
2024-05-05 19:39:35 +02:00
|
|
|
''
|
2024-03-16 15:30:02 +00:00
|
|
|
Position of the list.
|
|
|
|
'';
|
|
|
|
|
|
|
|
height = helpers.defaultNullOpts.mkInt 10 ''
|
|
|
|
Height of the trouble list when position is top or bottom.
|
|
|
|
'';
|
|
|
|
|
|
|
|
width = helpers.defaultNullOpts.mkInt 50 ''
|
|
|
|
Width of the list when position is left or right.
|
|
|
|
'';
|
|
|
|
|
|
|
|
icons = helpers.defaultNullOpts.mkBool true "Use devicons for filenames";
|
|
|
|
|
|
|
|
mode = helpers.defaultNullOpts.mkEnum [
|
|
|
|
"workspace_diagnostics"
|
|
|
|
"document_diagnostics"
|
|
|
|
"quickfix"
|
|
|
|
"lsp_references"
|
|
|
|
"loclist"
|
|
|
|
] "workspace_diagnostics" "Mode for default list";
|
|
|
|
|
|
|
|
fold_open = helpers.defaultNullOpts.mkStr "" "Icon used for open folds";
|
|
|
|
|
|
|
|
fold_closed = helpers.defaultNullOpts.mkStr "" "Icon used for closed folds";
|
2024-05-05 19:39:35 +02:00
|
|
|
|
2024-03-16 15:30:02 +00:00
|
|
|
group = helpers.defaultNullOpts.mkBool true "Group results by file";
|
2024-05-05 19:39:35 +02:00
|
|
|
|
2024-03-16 15:30:02 +00:00
|
|
|
padding = helpers.defaultNullOpts.mkBool true "Add an extra new line on top of the list";
|
2024-05-05 19:39:35 +02:00
|
|
|
|
2024-03-16 15:30:02 +00:00
|
|
|
cycle_results = helpers.defaultNullOpts.mkBool true "Whether to cycle item list when reaching beginning or end of list";
|
2024-05-05 19:39:35 +02:00
|
|
|
|
2024-03-16 15:30:02 +00:00
|
|
|
action_keys =
|
|
|
|
mapAttrs
|
|
|
|
(
|
|
|
|
action: config:
|
|
|
|
helpers.defaultNullOpts.mkNullable (
|
|
|
|
with types; either str (listOf str)
|
|
|
|
) config.default config.description
|
|
|
|
)
|
|
|
|
{
|
|
|
|
close = {
|
|
|
|
default = "q";
|
|
|
|
description = "Close the list";
|
|
|
|
};
|
|
|
|
cancel = {
|
|
|
|
default = "<esc>";
|
|
|
|
description = "Cancel the preview and get back to your last window / buffer / cursor";
|
|
|
|
};
|
|
|
|
refresh = {
|
|
|
|
default = "r";
|
|
|
|
description = "Manually refresh";
|
|
|
|
};
|
|
|
|
jump = {
|
2024-06-11 16:53:12 +01:00
|
|
|
default = [
|
|
|
|
"<cr>"
|
|
|
|
"<tab>"
|
|
|
|
];
|
2024-03-16 15:30:02 +00:00
|
|
|
description = "Jump to the diagnostic or open / close folds";
|
|
|
|
};
|
|
|
|
open_split = {
|
2024-06-11 16:53:12 +01:00
|
|
|
default = [ "<c-x>" ];
|
2024-03-16 15:30:02 +00:00
|
|
|
description = "Open buffer in new split";
|
|
|
|
};
|
|
|
|
open_vsplit = {
|
2024-06-11 16:53:12 +01:00
|
|
|
default = [ "<c-v>" ];
|
2024-03-16 15:30:02 +00:00
|
|
|
description = "Open buffer in new vsplit";
|
|
|
|
};
|
|
|
|
open_tab = {
|
2024-06-11 16:53:12 +01:00
|
|
|
default = [ "<c-t>" ];
|
2024-03-16 15:30:02 +00:00
|
|
|
description = "Open buffer in new tab";
|
|
|
|
};
|
|
|
|
jump_close = {
|
2024-06-11 16:53:12 +01:00
|
|
|
default = [ "o" ];
|
2024-03-16 15:30:02 +00:00
|
|
|
description = "Jump to the diagnostic and close the list";
|
|
|
|
};
|
|
|
|
toggle_mode = {
|
|
|
|
default = "m";
|
|
|
|
description = "toggle between 'workspace' and 'document' diagnostics mode";
|
|
|
|
};
|
|
|
|
toggle_preview = {
|
|
|
|
default = "P";
|
|
|
|
description = "Toggle auto_preview";
|
|
|
|
};
|
|
|
|
hover = {
|
|
|
|
default = "K";
|
|
|
|
description = "Opens a small popup with the full multiline message";
|
2023-12-09 23:09:50 +01:00
|
|
|
};
|
2024-03-16 15:30:02 +00:00
|
|
|
preview = {
|
|
|
|
default = "p";
|
|
|
|
description = "Preview the diagnostic location";
|
|
|
|
};
|
|
|
|
close_folds = {
|
2024-06-11 16:53:12 +01:00
|
|
|
default = [
|
|
|
|
"zM"
|
|
|
|
"zm"
|
|
|
|
];
|
2024-03-16 15:30:02 +00:00
|
|
|
description = "Close all folds";
|
|
|
|
};
|
|
|
|
open_folds = {
|
2024-06-11 16:53:12 +01:00
|
|
|
default = [
|
|
|
|
"zR"
|
|
|
|
"zr"
|
|
|
|
];
|
2024-03-16 15:30:02 +00:00
|
|
|
description = "Open all folds";
|
|
|
|
};
|
|
|
|
toggle_fold = {
|
2024-06-11 16:53:12 +01:00
|
|
|
default = [
|
|
|
|
"zA"
|
|
|
|
"za"
|
|
|
|
];
|
2024-03-16 15:30:02 +00:00
|
|
|
description = "Toggle fold of current file";
|
|
|
|
};
|
|
|
|
previous = {
|
|
|
|
default = "k";
|
|
|
|
description = "Previous item";
|
|
|
|
};
|
|
|
|
next = {
|
|
|
|
default = "j";
|
|
|
|
description = "Next item";
|
|
|
|
};
|
|
|
|
};
|
2023-02-24 09:55:03 +01:00
|
|
|
|
2024-03-16 15:30:02 +00:00
|
|
|
indent_lines = helpers.defaultNullOpts.mkBool true ''
|
|
|
|
Add an indent guide below the fold icons.
|
|
|
|
'';
|
2023-02-24 09:55:03 +01:00
|
|
|
|
2024-06-11 16:53:12 +01:00
|
|
|
win_config = helpers.defaultNullOpts.mkAttrsOf types.anything {
|
|
|
|
border = "single";
|
|
|
|
} "Configuration for floating windows. See `|nvim_open_win()|`.";
|
2024-03-16 15:30:02 +00:00
|
|
|
|
|
|
|
auto_open = helpers.defaultNullOpts.mkBool false ''
|
|
|
|
Automatically open the list when you have diagnostics.
|
2023-02-24 09:55:03 +01:00
|
|
|
'';
|
|
|
|
|
2024-03-16 15:30:02 +00:00
|
|
|
auto_close = helpers.defaultNullOpts.mkBool false ''
|
|
|
|
Automatically close the list when you have no diagnostics.
|
|
|
|
'';
|
|
|
|
|
|
|
|
auto_preview = helpers.defaultNullOpts.mkBool true ''
|
|
|
|
Automatically preview the location of the diagnostic.
|
|
|
|
<esc> to close preview and go back to last window.
|
|
|
|
'';
|
|
|
|
|
|
|
|
auto_fold = helpers.defaultNullOpts.mkBool false ''
|
|
|
|
Automatically fold a file trouble list at creation.
|
|
|
|
'';
|
|
|
|
|
2024-06-11 16:53:12 +01:00
|
|
|
auto_jump = helpers.defaultNullOpts.mkListOf types.str [ "lsp_definitions" ] ''
|
2024-03-16 15:30:02 +00:00
|
|
|
For the given modes, automatically jump if there is only a single result.
|
|
|
|
'';
|
|
|
|
|
2024-06-11 16:53:12 +01:00
|
|
|
include_declaration = helpers.defaultNullOpts.mkListOf types.str [
|
|
|
|
"lsp_references"
|
|
|
|
"lsp_implementations"
|
|
|
|
"lsp_definitions"
|
|
|
|
] "For the given modes, include the declaration of the current symbol in the results.";
|
2024-03-16 15:30:02 +00:00
|
|
|
|
|
|
|
signs =
|
|
|
|
mapAttrs
|
|
|
|
(
|
|
|
|
diagnostic: default:
|
|
|
|
helpers.defaultNullOpts.mkStr default "Icon/text for ${diagnostic} diagnostics."
|
|
|
|
)
|
|
|
|
{
|
|
|
|
error = "";
|
|
|
|
warning = "";
|
|
|
|
hint = "";
|
|
|
|
information = "";
|
|
|
|
other = "";
|
|
|
|
};
|
|
|
|
|
|
|
|
use_diagnostic_signs = helpers.defaultNullOpts.mkBool false ''
|
|
|
|
Enabling this will use the signs defined in your lsp client
|
|
|
|
'';
|
2023-02-24 09:55:03 +01:00
|
|
|
};
|
2024-08-29 09:12:57 -05:00
|
|
|
|
|
|
|
extraOptions = {
|
|
|
|
iconsPackage = helpers.mkPackageOption {
|
|
|
|
name = "nvim-web-devicons";
|
|
|
|
default = pkgs.vimPlugins.nvim-web-devicons;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
extraConfig = cfg: {
|
|
|
|
extraPlugins = mkIf (cfg.iconsPackage != null) [ cfg.iconsPackage ];
|
|
|
|
};
|
2023-02-24 09:55:03 +01:00
|
|
|
}
|