dots-of-war/eggs/kakoune/.config/kak/kakrc
2024-12-05 22:10:22 +01:00

99 lines
3.6 KiB
Text

source "%val{config}/plugins/plug.kak/rc/plug.kak"
plug "h-youhei/kakoune-surround"
plug "andreyorst/fzf.kak" config %{
map global user -docstring 'fzf' f ': fzf-mode<ret>'
} defer fzf %{
set-option global fzf_grep_command rg
set-option global fzf_file_command rg
}
plug "ul/kak-lsp" do %{
cargo install --locked --force --path .
} config %{
hook global WinSetOption filetype=(rust|python|go|javascript|typescript|c|cpp) %{
lsp-enable-window
# lsp-auto-hover-enable
lsp-auto-hover-insert-mode-disable
set-option window lsp_hover_anchor true
set-face window DiagnosticError default+u
set-face window DiagnosticWarning default+u
set global lsp_hover_anchor true
}
hook global WinSetOption filetype=rust %{
# hook window -group rust-inlay-hints BufReload .* rust-analyzer-inlay-hints
# hook window -group rust-inlay-hints NormalIdle .* rust-analyzer-inlay-hints
# hook window -group rust-inlay-hints InsertIdle .* rust-analyzer-inlay-hints
# hook -once -always window WinSetOption filetype=.* %{
# remove-hooks window rust-inlay-hints
# }
#
hook window -group semantic-tokens BufReload .* lsp-semantic-tokens
hook window -group semantic-tokens NormalIdle .* lsp-semantic-tokens
hook window -group semantic-tokens InsertIdle .* lsp-semantic-tokens
hook -once -always window WinSetOption filetype=.* %{
remove-hooks window semantic-tokens
}
lsp-inlay-diagnostics-enable global
}
}
plug 'delapouite/kakoune-buffers' %{
map global normal ^ q
map global normal <a-^> Q
map global normal q b
map global normal Q B
map global normal <a-q> <a-b>
map global normal <a-Q> <a-B>
map global user b ': enter-buffers-mode<ret>' -docstring 'buffers'
map global normal B ': enter-user-mode -lock buffers<ret>' -docstring 'buffers (lock)'
}
map global user m ':enter-user-mode lsp<ret>' -docstring 'code stuff'
map global lsp g ':lsp-definition<ret>' -docstring 'go to definition'
map global lsp d ':lsp-hover<ret>' -docstring 'lsp hover'
map global lsp n ':lsp-rename-prompt<ret>' -docstring 'rename symbol'
map global lsp m ':lsp-find-error --next<ret>' -docstring 'next error'
map global normal , '<space>'
map global normal <space> ':enter-user-mode user<ret>'
map global insert <tab> '<a-;><a-gt>'
map global insert <s-tab> '<a-;><a-lt>'
map global insert <c-w> '<esc>bc'
declare-user-mode surround
map global surround s ':surround<ret>' -docstring 'surround'
map global surround c ':change-surround<ret>' -docstring 'change'
map global surround d ':delete-surround<ret>' -docstring 'delete'
map global surround t ':select-surrounding-tag<ret>' -docstring 'select tag'
map global user s ':enter-user-mode surround<ret>' -docstring 'surround mode'
# map global user b ':buffer ' -docstring 'switch buffer'
map global normal <c-p> ':fzf-mode<ret>'
declare-user-mode commenting
map global user c ':enter-user-mode commenting<ret>' -docstring 'comment'
map global commenting <space> ':comment-line<ret>' -docstring 'comment block'
map global user y '<a-|>xsel -i -b<ret>' -docstring 'yank to system clipboard'
map global user P '!xsel --output --clipboard<ret>' -docstring 'paste before from system clipboard'
map global user p '<a-!>xsel --output --clipboard<ret>' -docstring 'paste after from system clipboard'
colorscheme gruvbox
add-highlighter global/ show-matching
# fancy rust :; shit
hook global InsertChar ";" %{ try %{
exec -draft hH "<a-k>:;<ret>" d
exec "::"
}}