## Highlight whitespace at end of line add-highlighter global/ regex '^.*[^ ]( +)$' 1:black,red add-highlighter global/ number-lines -relative -hlcursor hook global WinSetOption .* %{ remove-highlighter global/show-ws add-highlighter global/show-ws show-whitespaces -tabpad ' ' face global Whitespace rgb:3c3836+f face global comment rgb:665c54+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 } hook global WinSetOption filetype=vhdl %{ set buffer comment_block_begin '/*' set buffer comment_block_end '/*' set buffer comment_line '--' } ## == keybinds == map global normal 'J' "Jx" map global normal 'K' "Kx" # tabs map global insert '<tab>' '<a-;><a-gt>' map global insert '<s-tab>' '<a-;><a-lt>' define-command W w # Commenting map global normal '#' ':comment-line<ret>' map global user '#' ':comment-block<ret>' -docstring 'Block comment' # Clipboard commands map global normal '<a-y>' '|pbcopy<ret>u:echo "Copied text to clipboard"<ret>' map global normal '<c-v>' '!pbpaste<ret>' # Buffer user mode map global user 'b' ':enter-user-mode buffers<ret>' -docstring 'buffer mode' map global user 'B' ':enter-user-mode -lock buffers<ret>' -docstring 'buffer mode (lock)' # command to copy <filename>:<line> into the clipboard (useful for pasting into debugger) define-command copy-location -docstring "Copies <filename>:<line> for the current cursor into the clipboard" %{ evaluate-commands %sh{ set -e printf "%s" "$kak_bufname:$kak_cursor_line" | pbcopy echo "echo 'Copied $kak_bufname:$kak_cursor_line into clipboard'" } } define-command copy-location-path -docstring "Copies <full path>:<line> for the current cursor into the clipboard" %{ evaluate-commands %sh{ set -e printf "%s" "$kak_buffile:$kak_cursor_line" | pbcopy echo "echo 'Copied $kak_buffile:$kak_cursor_line into clipboard'" } } map global user 'y' ':copy-location<ret>' -docstring "Copy location" map global user 'Y' ':copy-location-path<ret>' -docstring "Copy location (full path)" ## == plugin configuration == # Custom function surround define-command -hidden surround-function %{ prompt 'function: ' %{ execute-keys "<a-:><a-;>Z;ha%val{text}(<esc><a-;>L<a-z>ua)<esc>" } } define-command -hidden surround-tag %{ prompt 'tag: ' %{ execute-keys "<a-:><a-;>Z;ha<lt>%val{text}<gt><esc><a-;>L<a-z>ua<lt>/%val{text}<gt><esc>" } } define-command -hidden surround-Tag %{ prompt 'tag: ' %{ execute-keys "xZ<a-:><a-;>gih<a-h>yz<gt>xZO<c-r>""<lt>%val{text}<gt><esc>zo<c-r>""<lt>%val{text}<gt><esc>z" } } define-command -hidden surround-ins %{ prompt 'prefix: ' %{ execute-keys "<a-:><a-;>Z;ha%val{text}<esc><a-;>L<a-z>u" } } map global mirror 'f' ':surround-function<ret>' -docstring 'function' map global mirror 't' ':surround-tag<ret>' -docstring 'function' map global mirror 'T' ':surround-Tag<ret>' -docstring 'function' map global mirror 'i' ':surround-ins<ret>' -docstring 'function' map global normal ö ':enter-user-mode mirror<ret>' -docstring 'mirror mode' # LSP stuff map global normal 'Å' ':lsp-enable<ret>' -docstring 'Enable LSP' map global normal 'å' ':enter-user-mode lsp<ret>' -docstring 'LSP mode' map global lsp 'R' ':lsp-rename-prompt<ret>' -docstring 'Rename symbol' define-command lsp-clear-references %{ set-option window lsp_references # empty } map global lsp '"' ':lsp-clear-references<ret>' -docstring "Clear references" face global Reference white,rgb:550055 face global ReferenceBind white,rgb:552200 map global insert '<c-s>' '<a-;>:enter-user-mode lsp<ret>s' #TODO # map global user '&' ':qhl-word<ret>' -docstring "Highlight current word" # map global user '"' ':unqhl<ret>' -docstring "Remove highlight" ## == Colors == 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 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 -' } set-option global ignored_files "^(\..*|.*\.(o|so|a)|__pycache__)$" ## APL execute on = define-command -hidden dyalog-execute %{ execute-keys -itersel 'i⎕←<esc>HH|dyalogscript /dev/fd/0<ret>' } map global normal '=' ':dyalog-execute<ret>'