diff --git a/plugins/by-name/glance/default.nix b/plugins/by-name/glance/default.nix new file mode 100644 index 00000000..ddb1ef42 --- /dev/null +++ b/plugins/by-name/glance/default.nix @@ -0,0 +1,29 @@ +{ config, lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "glance"; + packPathName = "glance.nvim"; + package = "glance-nvim"; + + maintainers = [ lib.maintainers.khaneliman ]; + + settingsExample = { + height = 40; + zindex = 50; + border = { + enable = true; + }; + use_trouble_qf = true; + }; + + extraConfig = cfg: { + warnings = + lib.optional + ( + cfg.settings ? use_trouble_qf + && builtins.isBool cfg.settings.use_trouble_qf + && cfg.settings.use_trouble_qf + && !config.plugins.trouble.enable + ) + "Nixvim (plugins.glance): The `trouble` plugin is not enabled, so the `glance` plugin's `use_trouble_qf` setting has no effect."; + }; +} diff --git a/tests/test-sources/plugins/by-name/glance/default.nix b/tests/test-sources/plugins/by-name/glance/default.nix new file mode 100644 index 00000000..bc06ac48 --- /dev/null +++ b/tests/test-sources/plugins/by-name/glance/default.nix @@ -0,0 +1,97 @@ +{ + empty = { + plugins.glance.enable = true; + }; + + default = { + plugins.glance = { + enable = true; + + settings = { + height = 18; + zindex = 45; + preserve_win_context = true; + detached.__raw = '' + function(winid) + -- Automatically detach when parent window width < 100 columns + return vim.api.nvim_win_get_width(winid) < 100 + end + ''; + preview_win_opts = { + cursorline = true; + number = true; + wrap = true; + }; + border = { + enable = false; + top_char = "―"; + bottom_char = "―"; + }; + list = { + position = "right"; + width = 0.33; + }; + theme = { + enable = true; + mode = "auto"; + }; + mappings = { + list = { + "j".__raw = ''require('glance').actions.next''; + "k".__raw = ''require('glance').actions.previous''; + "".__raw = ''require('glance').actions.next''; + "".__raw = ''require('glance').actions.previous''; + "".__raw = ''require('glance').actions.next_location''; + "".__raw = ''require('glance').actions.previous_location''; + "".__raw = ''require('glance').actions.preview_scroll_win(5)''; + "".__raw = ''require('glance').actions.preview_scroll_win(-5)''; + "v".__raw = ''require('glance').actions.jump_vsplit''; + "s".__raw = ''require('glance').actions.jump_split''; + "t".__raw = ''require('glance').actions.jump_tab''; + "".__raw = ''require('glance').actions.jump''; + "o".__raw = ''require('glance').actions.jump''; + "l".__raw = ''require('glance').actions.open_fold''; + "h".__raw = ''require('glance').actions.close_fold''; + "l".__raw = ''require('glance').actions.enter_win("preview")''; + "q".__raw = ''require('glance').actions.close''; + "Q".__raw = ''require('glance').actions.close''; + "".__raw = ''require('glance').actions.close''; + "".__raw = ''require('glance').actions.quickfix''; + }; + preview = { + "Q".__raw = ''require('glance').actions.close''; + "".__raw = ''require('glance').actions.next_location''; + "".__raw = ''require('glance').actions.previous_location''; + "l".__raw = ''require('glance').actions.enter_win("list")''; + }; + }; + hooks = { }; + folds = { + fold_closed = ""; + fold_open = ""; + folded = true; + }; + indent_lines = { + enable = true; + icon = "│"; + }; + winbar = { + enable = true; + }; + use_trouble_qf = false; + }; + }; + }; + + trouble = { + plugins = { + glance = { + enable = true; + + settings.use_trouble_qf = true; + }; + trouble.enable = true; + web-devicons.enable = true; + }; + }; +}