nix-dotfiles/snippets/kakoune.nix

96 lines
2.5 KiB
Nix
Raw Normal View History

{ 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 = ".*";
}
2024-11-12 11:49:21 -05:00
{
name = "BufCreate";
commands = "set buffer filetype typst";
option = ".*\.typ";
}
{
# 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 }";
}
2024-11-12 11:49:21 -05:00
{
name = "BufSetOption";
option = "filetype=typst";
commands = "hook buffer BufWritePost .* %{ nop %sh{ typst compile $kak_buffile } }";
}
{
# When the filetype=markdown option is set (automatically), set word wrap on
2024-07-20 02:22:07 -04:00
name = "WinSetOption";
option = "filetype=markdown";
2024-07-20 02:22:07 -04:00
commands = "set-option window lintcmd \"proselint\"";
}
# {
# name = "BufSetOption";
# option = "filetype=markdown";
# commands = ''
# hook buffer BufWritePost .* %{ %sh{
#
# } };
# '';
# }
];
2024-04-13 23:45:36 -04:00
keyMappings = [
# Define select all
{
key = "a";
mode = "user";
effect = "*%s<ret>";
docstring = "Select all";
}
2024-04-13 23:45:36 -04:00
# Define usermode yank/copy and paste
{
2024-04-13 23:45:36 -04:00
key = "y";
mode = "user";
effect = "<a-|> wl-copy<ret>";
}
{
key = "p";
mode = "user";
effect = "<a-!> wl-paste -n<ret>";
2024-04-13 23:45:36 -04:00
}
{
key = "P";
mode = "user";
effect = "! wl-paste -n<ret>";
}
2024-03-24 23:18:13 -04:00
];
};
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
'';
}