{ pkgs, ... }: { enable = true; defaultEditor = true; plugins = with pkgs.kakounePlugins; [ kak-fzf byline-kak kakboard auto-pairs-kak ]; config = { colorScheme = "tomorrow-night"; numberLines = { enable = true; highlightCursor = true; }; showMatching = true; tabStop = 2; indentWidth = 2; hooks = [ { name = "WinCreate"; commands = "kakboard-enable"; option = ".*"; } { # When the filetype=latex option is set in a buffer context (automatically), add a new hook to build the latex file on write name = "BufSetOption"; option = "filetype=latex"; commands = "hook buffer BufWritePost .* %{ texlab-build }"; } { # When the filetype=markdown option is set (automatically), set word wrap on name = "WinSetOption"; option = "filetype=markdown"; commands = "set-option window lintcmd \"proselint\""; } # { # name = "BufSetOption"; # option = "filetype=markdown"; # commands = '' # hook buffer BufWritePost .* %{ %sh{ # # } }; # ''; # } ]; keyMappings = [ # Define select all { key = "a"; mode = "user"; effect = "*%s"; docstring = "Select all"; } # Define usermode yank/copy and paste { key = "y"; mode = "user"; effect = " wl-copy"; } { key = "p"; mode = "user"; effect = " wl-paste -n"; } { key = "P"; mode = "user"; effect = "! wl-paste -n"; } ]; }; extraConfig = '' # highlight trailing whitespace add-highlighter global/trailing-whitespace regex '\h+$' 0:Error # don't remove trailing indent set global disabled_hooks .*-trim-indent source ${pkgs.writeText "kakoune-divider.kak" (builtins.readFile ./kakoune/divider.kak)} set-option global divider_face LineNumbers divider-on 80 # byline enables extending selection with x require-module byline eval %sh{kak-lsp --kakoune -s $kak_session} lsp-enable ''; }