From a20d95625bee35b6230503ee21f930d3fe7dfa2c Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Sat, 14 Sep 2024 21:15:38 -0500 Subject: [PATCH] plugins/precognition: init --- plugins/by-name/precognition/default.nix | 132 ++++++++++++++++++ .../plugins/by-name/precognition/default.nix | 81 +++++++++++ 2 files changed, 213 insertions(+) create mode 100644 plugins/by-name/precognition/default.nix create mode 100644 tests/test-sources/plugins/by-name/precognition/default.nix diff --git a/plugins/by-name/precognition/default.nix b/plugins/by-name/precognition/default.nix new file mode 100644 index 00000000..e05ef693 --- /dev/null +++ b/plugins/by-name/precognition/default.nix @@ -0,0 +1,132 @@ +{ + lib, + ... +}: +let + inherit (lib.nixvim) defaultNullOpts; + inherit (lib) types; +in +lib.nixvim.neovim-plugin.mkNeovimPlugin { + name = "precognition"; + originalName = "precognition.nvim"; + package = "precognition-nvim"; + + maintainers = [ lib.maintainers.khaneliman ]; + + settingsOptions = { + startVisible = defaultNullOpts.mkBool true '' + Whether to show precognition.nvim on startup. + ''; + + showBlankVirtLine = defaultNullOpts.mkBool true '' + Setting this option will mean that if a Virtual Line would be blank it won't be rendered. + ''; + + disabled_fts = defaultNullOpts.mkListOf types.str [ + "startify" + ] "`precognition.nvim` is disabled under these filetypes."; + + highlightColor = + defaultNullOpts.mkAttrsOf types.anything + { + link = "Comment"; + } + '' + Highlight groups for the hints. + + Can be defined as either: + - As a table containing a link property pointing to an existing highlight group. + - As a table specifying custom highlight values, such as foreground and background colors. + ''; + + hints = + defaultNullOpts.mkAttrsOf types.anything + { + Caret = { + text = "^"; + prio = 2; + }; + Dollar = { + text = "$"; + prio = 1; + }; + MatchingPair = { + text = "%"; + prio = 5; + }; + Zero = { + text = "0"; + prio = 1; + }; + w = { + text = "w"; + prio = 10; + }; + b = { + text = "b"; + prio = 9; + }; + e = { + text = "e"; + prio = 8; + }; + W = { + text = "W"; + prio = 7; + }; + B = { + text = "B"; + prio = 6; + }; + E = { + text = "E"; + prio = 5; + }; + } + '' + Hints that will be shown on the virtual line. + Priority is used to determine which hint to show when two can be shown at the same spot. + + Hints can be hidden by setting their priority to `0`. + If you want to hide the entire virtual line, set all elements to `prio = 0`. + ''; + + gutterHints = + defaultNullOpts.mkAttrsOf types.anything + { + G = { + text = "G"; + prio = 10; + }; + gg = { + text = "gg"; + prio = 9; + }; + PrevParagraph = { + text = "{"; + prio = 8; + }; + NextParagraph = { + text = "}"; + prio = 8; + }; + } + '' + Hints that will be shown on the gutter. + + Hints can be hidden by setting their priority to `0`. + ''; + }; + + settingsExample = { + startVisible = false; + showBlankVirtLine = false; + highlightColor = { + link = "Text"; + }; + disabled_fts = [ + "startify" + "dashboard" + ]; + }; +} diff --git a/tests/test-sources/plugins/by-name/precognition/default.nix b/tests/test-sources/plugins/by-name/precognition/default.nix new file mode 100644 index 00000000..5222cd8a --- /dev/null +++ b/tests/test-sources/plugins/by-name/precognition/default.nix @@ -0,0 +1,81 @@ +{ + empty = { + plugins.precognition.enable = true; + }; + + default = { + plugins.precognition = { + enable = true; + settings = { + startVisible = true; + showBlankVirtLine = true; + highlightColor = { + link = "Comment"; + }; + hints = { + Caret = { + text = "^"; + prio = 2; + }; + Dollar = { + text = "$"; + prio = 1; + }; + MatchingPair = { + text = "%"; + prio = 5; + }; + Zero = { + text = "0"; + prio = 1; + }; + w = { + text = "w"; + prio = 10; + }; + b = { + text = "b"; + prio = 9; + }; + e = { + text = "e"; + prio = 8; + }; + W = { + text = "W"; + prio = 7; + }; + B = { + text = "B"; + prio = 6; + }; + E = { + text = "E"; + prio = 5; + }; + }; + gutterHints = { + G = { + text = "G"; + prio = 10; + }; + gg = { + text = "gg"; + prio = 9; + }; + PrevParagraph = { + text = "{"; + prio = 8; + }; + NextParagraph = { + text = "}"; + prio = 8; + }; + }; + disabled_fts = [ + "startify" + ]; + }; + }; + }; +}