diff --git a/modules/programs/kakoune.nix b/modules/programs/kakoune.nix index 2a01fe7d4..9ef555cdd 100644 --- a/modules/programs/kakoune.nix +++ b/modules/programs/kakoune.nix @@ -513,6 +513,15 @@ let "${optionalString (separator != null) " -separator ${separator}"}" ]; + showWhitespaceOptions = with cfg.config.showWhitespace; + concatStrings [ + (optionalString (tab != null) " -tab ${tab}") + (optionalString (tabStop != null) " -tabpad ${tabStop}") + (optionalString (space != null) " -spc ${space}") + (optionalString (nonBreakingSpace != null) " -nbsp ${nonBreakingSpace}") + (optionalString (lineFeed != null) " -lf ${lineFeed}") + ]; + uiOptions = with cfg.config.ui; concatStringsSep " " [ "ncurses_set_title=${if setTitle then "true" else "false"}" @@ -572,6 +581,8 @@ let ++ optional (numberLines != null && numberLines.enable) "add-highlighter global/ number-lines${numberLinesOptions}" ++ optional showMatching "add-highlighter global/ show-matching" + ++ optional (showWhitespace != null && showWhitespace.enable) + "add-highlighter global/ show-whitespaces${showWhitespaceOptions}" ++ optional (scrollOff != null) "set-option global scrolloff ${toString scrollOff.lines},${ toString scrollOff.columns diff --git a/tests/default.nix b/tests/default.nix index 8913859da..e38975802 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -32,6 +32,7 @@ import nmt { ./modules/programs/fish ./modules/programs/git ./modules/programs/gpg + ./modules/programs/kakoune ./modules/programs/lieer ./modules/programs/mbsync ./modules/programs/neomutt diff --git a/tests/modules/programs/kakoune/default.nix b/tests/modules/programs/kakoune/default.nix new file mode 100644 index 000000000..9d88abf49 --- /dev/null +++ b/tests/modules/programs/kakoune/default.nix @@ -0,0 +1 @@ +{ kakoune-whitespace-highlighter = ./whitespace-highlighter.nix; } diff --git a/tests/modules/programs/kakoune/whitespace-highlighter.nix b/tests/modules/programs/kakoune/whitespace-highlighter.nix new file mode 100644 index 000000000..3ce02e8f5 --- /dev/null +++ b/tests/modules/programs/kakoune/whitespace-highlighter.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + config = { + programs.kakoune = { + enable = true; + config.showWhitespace = { + enable = true; + lineFeed = "1"; + space = "2"; + nonBreakingSpace = "3"; + tab = "4"; + tabStop = "5"; + }; + }; + + nmt.script = let + lineStart = + "^add-highlighter\\s\\+global\\/\\?\\s\\+show-whitespaces\\s\\+" + + "\\(-\\w\\+\\s\\+.\\s\\+\\)*"; + in '' + assertFileExists home-files/.config/kak/kakrc + assertFileRegex home-files/.config/kak/kakrc '${lineStart}-lf\s\+1\b' + assertFileRegex home-files/.config/kak/kakrc '${lineStart}-spc\s\+2\b' + assertFileRegex home-files/.config/kak/kakrc '${lineStart}-nbsp\s\+3\b' + assertFileRegex home-files/.config/kak/kakrc '${lineStart}-tab\s\+4\b' + assertFileRegex home-files/.config/kak/kakrc '${lineStart}-tabpad\s\+5\b' + ''; + }; +}