From accf5e67b16a857e546abd321877af061319147d Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Sun, 15 Sep 2024 15:50:04 -0500 Subject: [PATCH] plugins/smartcolumn: init --- plugins/by-name/smartcolumn/default.nix | 80 +++++++++++++++++++ .../plugins/by-name/smartcolumn/default.nix | 67 ++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 plugins/by-name/smartcolumn/default.nix create mode 100644 tests/test-sources/plugins/by-name/smartcolumn/default.nix diff --git a/plugins/by-name/smartcolumn/default.nix b/plugins/by-name/smartcolumn/default.nix new file mode 100644 index 00000000..92cc331a --- /dev/null +++ b/plugins/by-name/smartcolumn/default.nix @@ -0,0 +1,80 @@ +{ + lib, + ... +}: +let + inherit (lib.nixvim) defaultNullOpts; + inherit (lib) types; +in +lib.nixvim.neovim-plugin.mkNeovimPlugin { + name = "smartcolumn"; + originalName = "smartcolumn.nvim"; + package = "smartcolumn-nvim"; + + maintainers = [ lib.maintainers.khaneliman ]; + + settingsOptions = { + colorcolumn = defaultNullOpts.mkNullable (with types; either str (listOf str)) "80" '' + Column with to highlight. + Supports multiple values for more column highlights. + ''; + + disabled_filetypes = + defaultNullOpts.mkListOf types.str + [ + "help" + "text" + "markdown" + ] + '' + Filetypes that colorcolumn highlighting will not be displayed. + ''; + + scope = + defaultNullOpts.mkEnumFirstDefault + [ + "file" + "window" + "line" + ] + '' + The scope to check for column width and highlight. + ''; + + custom_colorcolumn = defaultNullOpts.mkAttrsOf types.anything { } '' + Custom colorcolumn definitions for different filetypes. + ''; + }; + + settingsExample = { + colorcolumn = "100"; + disabled_filetypes = [ + "checkhealth" + "help" + "lspinfo" + "markdown" + "neo-tree" + "noice" + "text" + ]; + custom_colorcolumn = { + go = [ + "100" + "130" + ]; + java = [ + "100" + "140" + ]; + nix = [ + "100" + "120" + ]; + rust = [ + "80" + "100" + ]; + }; + scope = "window"; + }; +} diff --git a/tests/test-sources/plugins/by-name/smartcolumn/default.nix b/tests/test-sources/plugins/by-name/smartcolumn/default.nix new file mode 100644 index 00000000..0495fd0d --- /dev/null +++ b/tests/test-sources/plugins/by-name/smartcolumn/default.nix @@ -0,0 +1,67 @@ +{ + empty = { + plugins.smartcolumn.enable = true; + }; + + default = { + plugins.smartcolumn = { + settings = { + colorcolumn = "80"; + disabled_filetypes = [ + "help" + "text" + "markdown" + ]; + scope = "file"; + custom_colorcolumn = { }; + }; + }; + }; + + example = { + plugins.smartcolumn = { + settings = { + colorcolumn = "100"; + disabled_filetypes = [ + "checkhealth" + "help" + "lspinfo" + "markdown" + "neo-tree" + "noice" + "text" + ]; + custom_colorcolumn = { + go = [ + "100" + "130" + ]; + java = [ + "100" + "140" + ]; + nix = [ + "100" + "120" + ]; + rust = [ + "80" + "100" + ]; + }; + scope = "window"; + }; + }; + }; + + function-colorcolumn = { + plugins.smartcolumn = { + settings.custom_colorcolumn.__raw = '' + -- Supports custom logic from a function + function () + return "100" + end + ''; + }; + }; +}