hook global WinSetOption .* %{ remove-highlighter global/show-ws add-highlighter global/show-ws show-whitespaces -tabpad ' ' face global Whitespace rgb:3c3836+f } add-highlighter global/ show-matching set global indentwidth 4 hook global WinSetOption filetype=(verilog|nix|vhdl) %{ set buffer tabstop 2 set buffer indentwidth 2 } set-option global ignored_files "^(\..*|.*\.(o|so|a)|__pycache__)$" ## == keybinds == map global normal 'J' "Jx" map global normal 'K' "Kx" # tabs map global insert '' '' map global insert '' '' define-command W w # Commenting map global normal '#' ':comment-line' map global user '#' ':comment-block' -docstring 'Block comment' # Clipboard commands map global normal '' '|pbcopyu:echo "Copied text to clipboard"' map global normal '' '!pbpaste' # Buffer user mode map global user 'b' ':enter-user-mode buffers' -docstring 'buffer mode' map global user 'B' ':enter-user-mode -lock buffers' -docstring 'buffer mode (lock)' ## == plugin configuration == # Custom function surround define-command -hidden surround-function %{ prompt 'function: ' %{ execute-keys "Z;ha%val{text}(Lua)" } } define-command -hidden surround-tag %{ prompt 'tag: ' %{ execute-keys "Z;ha%val{text}Lua/%val{text}" } } define-command -hidden surround-Tag %{ prompt 'tag: ' %{ execute-keys "xZgihyzxZO""%val{text}zo""%val{text}z" } } define-command -hidden surround-space %{ execute-keys "i Ha " } map global mirror 'f' ':surround-function' -docstring 'function' map global mirror 't' ':surround-tagmjau' -docstring 'tag' map global mirror 'T' ':surround-Tag' -docstring 'tag, break line' map global mirror ' ' ':surround-space' -docstring 'spaces' map global normal ö ':enter-user-mode mirror' -docstring 'mirror mode' # LSP stuff map global normal 'Å' ':lsp-enable' -docstring 'Enable LSP' map global normal 'å' ':enter-user-mode lsp' -docstring 'LSP mode' map global lsp 'R' ':lsp-rename-prompt' -docstring 'Rename symbol' define-command lsp-clear-references %{ set-option window lsp_references # empty } map global lsp '"' ':lsp-clear-references' -docstring "Clear references" face global Reference white,rgb:550055 face global ReferenceBind white,rgb:552200 # tree-sitter tree-always-highlight set-option global tree_highlight_style ",rgb:404040" declare-user-mode tree map global normal 't' ":enter-user-mode tree" map global normal '' ":enter-user-mode tree" map global normal 'T' ":enter-user-mode -lock tree" map -docstring "select node" global tree 'n' ":tree-select-node" map -docstring "select parent" global tree 'k' ":tree-select-parent-node" map -docstring "select children" global tree 'C' ":tree-select-children" map -docstring "select children of type" global tree 'c' ":enter-user-mode tree-children" map -docstring "select next node of type" global tree 'l' ":enter-user-mode tree-next" map -docstring "select previous node of type" global tree 'h' ":enter-user-mode tree-prev" map -docstring "show sexp" global tree 's' ":tree-node-sexp" map -docstring "enable highlighting" global tree '"' ":tree-always-highlight" map -docstring "disable highlighting" global tree '&' ":tree-always-highlight-disable" declare-user-mode tree-children declare-user-mode tree-next declare-user-mode tree-prev declare-user-mode tree-quickjump map global normal 'f' ":enter-user-mode tree-quickjump" map global normal 'F' ":enter-user-mode tree-next" map global normal '' ":enter-user-mode tree-children" evaluate-commands %sh{ echo "i,identifier t,type c,call a,arguments s,statement d,declaration n,number b,block \",string" | while IFS=, read -r cmd group ; do echo "map -docstring '$group child' global tree-children '$cmd' ':tree-select-children $group'" echo "map -docstring 'next $group' global tree-next '$cmd' ':tree-select-next-node $group'" echo "map -docstring 'previous $group' global tree-prev '$cmd' ':tree-select-previous-node $group'" echo "map -docstring 'quickjump to $group' global tree-quickjump '$cmd' ':tree-quickjump $group'" done } #TODO # map global user '&' ':qhl-word' -docstring "Highlight current word" # map global user '"' ':unqhl' -docstring "Remove highlight" ## == Colors == ## Highlight whitespace at end of line add-highlighter global/ regex '^.*[^ ]( +)$' 1:black,red add-highlighter global/ number-lines -relative -hlcursor define-command update-cursor-style %{ evaluate-commands %sh{ if [ $(echo "$kak_selection" | wc -c) -eq 2 ] ; then echo 'face buffer PrimaryCursor white,+uiF' else echo 'face buffer PrimaryCursor white,rgb:b05fde+uiF' fi } } hook global NormalKey .* %{ update-cursor-style } hook global WinCreate .* %{ update-cursor-style } face global PrimaryCursorEol PrimaryCursor face global SecondaryCursorEol SecondaryCursor face global operator blue face global type rgb:aa66ee+b face global comment rgb:928374+f # gruvbox-dark inverts the comments which looks bad face global MenuBackground rgb:eecc44+i face global MenuForeground blue+bi face global Information rgb:44ccee+b face global MatchingChar ,rgb:665c54+bF ## Filetype formatting hook global BufSetOption filetype=rust %{ set-option buffer formatcmd 'rustfmt' hook buffer -group rust-inlay-hints BufReload .* rust-analyzer-inlay-hints hook buffer -group rust-inlay-hints NormalIdle .* rust-analyzer-inlay-hints } hook global WinSetOption filetype=python %{ set-option window formatcmd 'black -q -' } hook global BufCreate .*\.gleam %{ set-option buffer filetype gleam }