From 585b87d3f3dc012fc61738db83a5334d310ba01d Mon Sep 17 00:00:00 2001 From: vorboyvo Date: Fri, 14 Jun 2024 17:18:23 -0400 Subject: [PATCH] Set indent width (for increase and decrease indent) to 2. Added markdown word wrap which I don't think actually works. Defined select all usermode control. Set up divider for max line width. --- programs/kakoune.nix | 31 +++++++++++++++++++----- programs/kakoune/divider.kak | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 programs/kakoune/divider.kak diff --git a/programs/kakoune.nix b/programs/kakoune.nix index 62389b2..ab1b5e0 100644 --- a/programs/kakoune.nix +++ b/programs/kakoune.nix @@ -8,13 +8,29 @@ enable = true; highlightCursor = true; }; - hooks = [{ - # 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 }"; - }]; + indentWidth = 2; + hooks = [ + { + # 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 = "BufSetOption"; + option = "filetype=markdown"; + commands = "add-highlighter buffer wrap -word"; + } + ]; keyMappings = [ + # Define select all + { + key = "a"; + mode = "user"; + effect = "*%s"; + docstring = "Select all"; + } # Define usermode yank/copy and paste { key = "y"; @@ -39,6 +55,9 @@ # 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 eval %sh{kak-lsp --kakoune -s $kak_session} lsp-enable diff --git a/programs/kakoune/divider.kak b/programs/kakoune/divider.kak new file mode 100644 index 0000000..6b82b89 --- /dev/null +++ b/programs/kakoune/divider.kak @@ -0,0 +1,46 @@ +# A script for long-line coloring. + +# We use almr's looping techniques, as described in: + +# https://discuss.kakoune.com/t/kakscript-has-loop-catch-this-head-tail-shift-int-0-streq-etc/1885 +# https://gitlab.com/kstr0k/sel-editor.kak/-/snippets/2178452 + +declare-option -docstring 'divider pane coloring' \ +str divider_face 'default,rgb:dae3e6' + +declare-option -hidden int divider_column + +define-command -params 1 -docstring 'divider-on : colorize right side starting from column' \ +divider-on %{ + add-highlighter -override window/divider group + set-option window divider_column %arg(1) + divider-do-256 divider-colorize +} -override + +define-command -docstring 'divider-off: remove right-side coloring' \ +divider-off %{ + remove-highlighter window/divider +} -override + +define-command -hidden -params .. divider-do-2 %{ + %arg(@) + %arg(@) +} -override + +define-command -hidden -params .. divider-do-4 %{ + divider-do-2 divider-do-2 %arg(@) +} -override + +define-command -hidden -params .. divider-do-16 %{ + divider-do-4 divider-do-4 %arg(@) +} -override + +define-command -hidden -params .. divider-do-256 %{ + divider-do-16 divider-do-16 %arg(@) +} -override + +define-command -hidden divider-colorize %{ + add-highlighter "window/divider/%opt(divider_column)" column %opt(divider_column) %opt(divider_face) + set-option -add window divider_column 1 +} -override +