colorscheme mygruvbox
add-highlighter global/ number-lines -hlcursor

# Highlight trailing whitespace
# Softwrap long lines
add-highlighter global/ wrap -word -indent -marker ">>>"
add-highlighter global/ show-whitespaces

set-option global ui_options terminal_status_on_top=true

set-option global tabstop 4
set-option global indentwidth 4
set-option global scrolloff 1,3

# Clipboard management mappings
map -docstring "yank the selection into the clipboard" global user y "<a-|> wl-copy<ret>"
map -docstring "paste the clipboard" global user p "<a-!> wl-paste<ret>"

map -docstring "Show filetype" global user t ': echo %opt{filetype}<ret>'
map -docstring "Open file" global user o ': tmux-repl-vertical "echo ""evaluate-commands -client %val{client} e $(fzf)"" | kak -p %val{session}"<ret>'
map -docstring "Zeile auskommentieren" global normal <C-l> ":comment-line<ret>"
map -docstring "Speichern" global normal <C-s> ":w<ret>"
map -docstring "Beenden" global normal <C-q> ":q<ret>"
map -docstring "Cursor nach oben erweitern" global normal <C-k> "<a-C><ret>"
map -docstring "Cursor nach unten erweitern" global normal <C-j> "<C><ret>"

map global normal <C-up> '|echo "$(($kak_selection + 1))"<ret>'
map global normal <C-down> '|echo "$(($kak_selection - 1))"<ret>'

# hook global InsertCompletionShow .* %{
#     try %{
#         # this command temporarily removes cursors preceded by whitespace;
#         # if there are no cursors left, it raises an error, does not
#         # continue to execute the mapping commands, and the error is eaten
#         # by the `try` command so no warning appears.
#         execute-keys -draft 'h<a-K>\h<ret>'
#         map window insert <tab> <c-n>
#         map window insert <ret> <c-m>
#         map window insert <s-tab> <c-p>
#         hook -once -always window InsertCompletionHide .* %{
#             unmap window insert <tab> <c-n>
#             unmap window insert <ret> <c-m>
#             unmap window insert <s-tab> <c-p>
#         }
#     }
# }

#   Convert spaces to   tabs
hook global BufWritePre .* %{
    try %{ execute-keys -draft '%@' }
}

# hook global BufWritePost .* %{
#     echo %sh{ sassc main.scss > main.css }
# }

eval %sh{kak-lsp}
lsp-enable

lsp-inlay-diagnostics-enable global


declare-option str fim_tmp "/tmp/kak-fim.buf"

define-command fim-complete -docstring "FIM-Completion am Cursor (Mistral)" %{
    write -force %opt{fim_tmp}
    execute-keys "!python3 %val{config}/mistral-fim.py %opt{fim_tmp} %val{cursor_line} %val{cursor_column}<ret>"
}
map global user f ': fim-complete<ret>' -docstring 'FIM complete'
