uses non-breaking space as a separator and assumes that first numeric token (starting from second one) is the line number (i.e., assumes that the searched token does not contain space delimited number)
296 lines
12 KiB
Plaintext
296 lines
12 KiB
Plaintext
# OPTIONS
|
|
|
|
set-option global startup_info_version 20260412
|
|
set-option global ui_options terminal_assistant=none
|
|
|
|
hook global WinCreate .* %{
|
|
add-highlighter window/number-lines number-lines -relative -hlcursor
|
|
}
|
|
add-highlighter global/ show-matching
|
|
|
|
# LOCAL
|
|
|
|
nop %sh{
|
|
mkdir -p "$kak_config/autoload"
|
|
[ -e "$kak_config/autoload/stdlib" ] || ln -s "$kak_runtime/autoload" "$kak_config/autoload/stdlib"
|
|
}
|
|
|
|
map global -docstring 'Buffer' user ' ' ': buffer '
|
|
|
|
declare-user-mode file-mode
|
|
map global -docstring 'Search/open' user 's' ': enter-user-mode file-mode<ret>'
|
|
|
|
map global -docstring 'Open (git)' file-mode 'a' ': file-open-git<ret>'
|
|
map global -docstring 'Open (fd)' file-mode 'f' ': file-open<ret>'
|
|
map global -docstring 'Open (fd -H)' file-mode 'h' ': file-open-with-hidden<ret>'
|
|
map global -docstring 'Open (recent)' file-mode 'r' ': file-open-recent<ret>'
|
|
map global -docstring 'Open (nnn)' file-mode 'd' ': nnn-open %val{buffile}<ret>'
|
|
map global -docstring 'Open (nnn)' file-mode 'D' ': nnn-open .<ret>'
|
|
map global -docstring 'Open/create in dir' file-mode 'c' ': open-create-in-dir<ret>'
|
|
map global -docstring 'ctags file symbols' file-mode 's' ': ctags-file-symbols<ret>'
|
|
map global -docstring 'ctags project symbols' file-mode 'w' ': ctags-project-symbols<ret>'
|
|
map global -docstring 'Grep' file-mode 'g' ':grep '
|
|
map global -docstring 'Grep next match' file-mode 'n' ': grep-next-match<ret>'
|
|
map global -docstring 'Grep previous match' file-mode 'p' ': grep-prev-match<ret>'
|
|
map global -docstring 'Grep current file' file-mode 'l' ':grep-file '
|
|
map global -docstring 'Grep current file' file-mode 'L' ': grep-file %val{selection}<ret>'
|
|
map global -docstring 'Delete buffer' file-mode 'x' ': delete-buffer '
|
|
|
|
declare-user-mode git-mode
|
|
map global -docstring 'Git' user 'g' ': enter-user-mode git-mode<ret>'
|
|
|
|
map global -docstring 'Blame' git-mode 'b' ': git blame<ret>'
|
|
map global -docstring 'Blame' git-mode 'B' ': git blame-jump<ret>'
|
|
map global -docstring 'Diff file' git-mode 'd' ': git diff %val{buffile}<ret>'
|
|
map global -docstring 'Diff' git-mode 'D' ': git diff<ret>'
|
|
map global -docstring 'Grep' git-mode 'g' ':git grep '
|
|
map global -docstring 'Grep' git-mode 'G' ': git grep %val{selection}<ret>'
|
|
map global -docstring 'Log' git-mode 'l' ': git log -- %val{buffile}<ret>'
|
|
map global -docstring 'Log' git-mode 'L' ': git log<ret>'
|
|
map global -docstring 'Show branch' git-mode 'c' ': git show-branch<ret>'
|
|
map global -docstring 'Status' git-mode 't' ': git status<ret>'
|
|
map global -docstring 'Show diff' git-mode 's' ': git-show-diff<ret>'
|
|
map global -docstring 'Show' git-mode 'S' ': git show<ret>'
|
|
map global -docstring 'Hide diff' git-mode 'h' ': git-hide-diff<ret>'
|
|
map global -docstring 'Next hunk' git-mode 'n' ': git next-hunk<ret>'
|
|
map global -docstring 'Prev hunk' git-mode 'p' ': git prev-hunk<ret>'
|
|
|
|
declare-user-mode options-mode
|
|
map global -docstring 'Options' user 'o' ': enter-user-mode options-mode<ret>'
|
|
|
|
map global -docstring 'Five Dark mode' options-mode 'd' ': colorscheme five-colors-dark<ret>'
|
|
map global -docstring 'Five Light mode' options-mode 'l' ': colorscheme five-colors-light<ret>'
|
|
map global -docstring 'Light mode' options-mode 'L' ': colorscheme one-light<ret>'
|
|
map global -docstring 'Dark mode' options-mode 'D' ': colorscheme one-darker<ret>'
|
|
|
|
declare-user-mode make-mode
|
|
map global -docstring 'Make' user 'k' ': enter-user-mode make-mode<ret>'
|
|
|
|
map global -docstring 'Make' make-mode 'a' ':make '
|
|
map global -docstring 'Next' make-mode 'n' ': make-next-error<ret>'
|
|
map global -docstring 'Previous' make-mode 'p' ': make-previous-error<ret>'
|
|
map global -docstring 'General messages' make-mode 'g' ': set window make_error_pattern "^([^:\n]+):(\d+):(?:(\d+):)? ([^\n]+)?"<ret>'
|
|
|
|
evaluate-commands %sh{
|
|
if [ -n "$WAYLAND_DISPLAY" ]; then
|
|
echo "
|
|
map global -docstring 'Paste clipboard (append)' user 'p' '<a-!> wl-paste -n<ret>'
|
|
map global -docstring 'Paste clipboard (insert)' user 'P' '! wl-paste -n<ret>'
|
|
map global -docstring 'Yank to clipboard' user 'y' '<a-|> wl-copy<ret>'
|
|
"
|
|
elif [ -n "$DISPLAY" ]; then
|
|
echo "
|
|
map global -docstring 'Paste clipboard (append)' user 'p' '<a-!> xsel -bo<ret>'
|
|
map global -docstring 'Paste clipboard (insert)' user 'P' '! xsel -bo<ret>'
|
|
map global -docstring 'Yank to clipboard' user 'y' '<a-|> xsel -bi<ret>'
|
|
"
|
|
fi
|
|
}
|
|
|
|
map global -docstring 'Replace jump mode' user 'j' ': enter_jump_mode_with_replace_select_mode<ret>'
|
|
map global -docstring 'Extend jump mode' user 'e' ': enter_jump_mode_with_extend_select_mode<ret>'
|
|
map global -docstring 'Append jump mode' user 'a' ': enter_jump_mode_with_append_select_mode<ret>'
|
|
|
|
define-command -override file-open %{
|
|
prompt -menu -shell-script-candidates %{ fd -t f } 'File: ' %{ edit -- %val{text} }
|
|
}
|
|
|
|
define-command -override file-open-with-hidden %{
|
|
prompt -menu -shell-script-candidates %{ fd -t f -H } 'File: ' %{ edit -- %val{text} }
|
|
}
|
|
|
|
define-command -override file-open-git %{
|
|
prompt -menu -shell-script-candidates %{ git ls-files } 'File (git): ' %{ edit -- %val{text} }
|
|
}
|
|
|
|
define-command -override file-open-recent %{
|
|
prompt -menu -shell-script-candidates %{ cat ~/.cache/kak-mru } 'File (recent): ' %{ edit -- %val{text} }
|
|
}
|
|
|
|
define-command -override grep-file -params 1- %{
|
|
grep %arg{@} -- %val{buffile}
|
|
}
|
|
|
|
define-command -override -params 1 nnn-open %{
|
|
terminal nnn-kak-edit %arg{1} %val{session} %val{client}
|
|
}
|
|
|
|
define-command -override open-create-in-dir %{
|
|
execute-keys ': edit ' %sh{dirname "$kak_buffile"}/
|
|
}
|
|
|
|
define-command git-log-show-current-commit %{
|
|
execute-keys ';<a-/>^commit\s[0-9a-f]+<ret>b'
|
|
git show %val{selection}
|
|
}
|
|
|
|
define-command -override git-show-diff %{
|
|
hook buffer -group git-show-diff NormalIdle .* %{ git update-diff }
|
|
git show-diff
|
|
}
|
|
|
|
define-command -override git-hide-diff %{
|
|
remove-hooks buffer git-show-diff
|
|
git hide-diff
|
|
}
|
|
|
|
define-command -override ctags-file-symbols %{
|
|
prompt -menu -shell-script-candidates %{
|
|
ctags -uo - -x "$kak_buffile" | awk -f "$kak_config/scripts/filesymbols.awk"
|
|
} 'File symbols: ' %{
|
|
evaluate-commands %sh{ awk -f "$kak_config/scripts/filesymbolscmd.awk" # "$kak_text" }
|
|
}
|
|
}
|
|
|
|
define-command -override ctags-project-symbols %{
|
|
prompt -menu -shell-script-candidates %{
|
|
git ls-files | xargs wc | awk '$1 > 0 && $3/$1 < 1024 { print $4 }' | xargs ctags -uo - -x | awk -f "$kak_config/scripts/projectsymbols.awk"
|
|
} 'Project symbols: ' %{
|
|
evaluate-commands %sh{ awk -f "$kak_config/scripts/projectsymbolscmd.awk" # "$kak_text" }
|
|
}
|
|
}
|
|
|
|
set-face global JumpLabel 'rgb:faf8f5,rgb:af8842+F'
|
|
|
|
# CHANGE STATUS BAR COLOR IN INSERT MODE
|
|
|
|
hook global ModeChange push:.*:insert %{
|
|
set-face window StatusLine 'default,rgb:04785d'
|
|
set-option window idle_timeout 500
|
|
}
|
|
|
|
hook global ModeChange pop:insert:.* %{
|
|
unset-face window StatusLine
|
|
unset-option window idle_timeout
|
|
}
|
|
|
|
# ODIN
|
|
|
|
hook global BufSetOption filetype=odin %{
|
|
set-option buffer formatcmd 'odinfmt -stdin'
|
|
}
|
|
|
|
hook global BufSetOption filetype=go %{
|
|
hook -group buf-write-pre-fmt buffer BufWritePre .* %{
|
|
lsp-formatting-sync
|
|
}
|
|
}
|
|
|
|
# LSP
|
|
|
|
eval %sh{kak-lsp}
|
|
lsp-enable
|
|
|
|
set-option global modelinefmt "%opt{lsp_modeline} %opt{modelinefmt}"
|
|
|
|
map global user l ': enter-user-mode lsp<ret>' -docstring 'LSP mode'
|
|
|
|
map global goto d <esc>:lsp-definition<ret> -docstring 'LSP definition'
|
|
map global goto r <esc>:lsp-references<ret> -docstring 'LSP references'
|
|
map global goto y <esc>:lsp-type-definition<ret> -docstring 'LSP type definition'
|
|
|
|
map global insert <tab> '<a-;>:try lsp-snippets-select-next-placeholders catch %{ execute-keys -with-hooks <lt>tab> }<ret>' -docstring 'Select next snippet placeholder'
|
|
|
|
map global object a '<a-semicolon>lsp-object<ret>' -docstring 'LSP any symbol'
|
|
map global object <a-a> '<a-semicolon>lsp-object<ret>' -docstring 'LSP any symbol'
|
|
map global object f '<a-semicolon>lsp-object Function Method<ret>' -docstring 'LSP function or method'
|
|
map global object t '<a-semicolon>lsp-object Class Interface Module Namespace Struct<ret>' -docstring 'LSP class or module'
|
|
map global object d '<a-semicolon>lsp-diagnostic-object error warning<ret>' -docstring 'LSP errors and warnings'
|
|
map global object D '<a-semicolon>lsp-diagnostic-object error<ret>' -docstring 'LSP errors'
|
|
|
|
map global lsp p '<esc>: lsp-find-error --previous error<ret>' -docstring 'find previous error'
|
|
|
|
# BUNDLE
|
|
|
|
source "%val{config}/bundle/kak-bundle/rc/kak-bundle.kak"
|
|
bundle-noload kak-bundle https://codeberg.org/jdugan6240/kak-bundle
|
|
|
|
# COLORSCHEME
|
|
|
|
bundle-theme kak-one 'https://codeberg.org/raiguard/kak-one'
|
|
|
|
bundle-theme kakoune-themes 'https://codeberg.org/anhsirk0/kakoune-themes'
|
|
|
|
# FZF
|
|
|
|
bundle fzf.kak 'https://github.com/andreyorst/fzf.kak' %{
|
|
map global -docstring 'FZF menu' user 'f' ': fzf-mode<ret>'
|
|
require-module fzf
|
|
set-option global fzf_highlight_command "bat"
|
|
}
|
|
|
|
hook global BufCreate [^*].* %{
|
|
nop %sh{
|
|
mru=~/.cache/kak-mru
|
|
echo "$kak_buffile" | awk '!seen[$0]++' - "$mru" | sponge "$mru"
|
|
}}
|
|
|
|
# MATCH
|
|
|
|
bundle match 'https://github.com/kmafeni04/match.kak' %{
|
|
declare-user-mode match
|
|
map global user m ': enter-user-mode match<ret>' -docstring 'Match'
|
|
map global match m m -docstring 'Match next matching pair'
|
|
map global match i ': match-inside<ret>' -docstring 'Match inside object'
|
|
map global match a ': match-around<ret>' -docstring 'Match around object'
|
|
map global match n ': match-next<ret>' -docstring 'Match next object'
|
|
map global match p ': match-prev<ret>' -docstring 'Match previous object'
|
|
map global match s ': match-surround-add<ret>' -docstring 'Surround selection with character'
|
|
map global match d ': match-surround-delete<ret>' -docstring "Delete selection's surrounding character"
|
|
map global match r ': match-surround-replace<ret>' -docstring "Replace selection's surrounding character"
|
|
map global match u ': match-surround-undo<ret>' -docstring "Undo"
|
|
map global match U ': match-surround-redo<ret>' -docstring "Redo"
|
|
}
|
|
|
|
# HARPOON
|
|
|
|
bundle kak-harpoon 'https://codeberg.org/raiguard/kak-harpoon' %{
|
|
harpoon-add-bindings
|
|
}
|
|
|
|
# PENEIRA
|
|
|
|
bundle 'luar' 'https://github.com/gustavo-hms/luar' %{
|
|
require-module luar
|
|
}
|
|
|
|
bundle 'peneira' 'https://github.com/gustavo-hms/peneira' %{
|
|
require-module peneira
|
|
|
|
define-command buffers %{
|
|
peneira 'buffers: ' %{ eval "printf '%s\n' $kak_quoted_buflist" } %{
|
|
buffer %arg{1}
|
|
}
|
|
}
|
|
define-command peneira-git-files %{
|
|
peneira 'git files: ' %{ git ls-files } %{ edit -- %arg{1} }
|
|
}
|
|
define-command peneira-files-with-hidden %{
|
|
peneira 'git files: ' %{ fd -t f -H } %{ edit -- %arg{1} }
|
|
}
|
|
define-command peneira-recent-files %{
|
|
peneira 'mru files: ' %{ cat ~/.cache/kak-mru } %{ edit -- %arg{1} }
|
|
}
|
|
|
|
map global -docstring 'Buffer' user ' ' ': buffers<ret>'
|
|
|
|
map global -docstring 'Git files' file-mode 'a' ': peneira-git-files<ret>'
|
|
map global -docstring 'Buffers' file-mode 'b' ': buffers<ret>'
|
|
map global -docstring 'Files' file-mode 'f' ': peneira-files<ret>'
|
|
map global -docstring 'Files' file-mode 'F' ': peneira-local-files<ret>'
|
|
map global -docstring 'Files (with hidden)' file-mode 'h' ': peneira-files-with-hidden<ret>'
|
|
map global -docstring 'Lines' file-mode 'l' ': peneira-lines<ret>'
|
|
map global -docstring 'Symbols' file-mode 's' ': peneira-symbols<ret>'
|
|
map global -docstring 'Recent files' file-mode 'r' ': peneira-recent-files<ret>'
|
|
}
|
|
|
|
# LOCAL
|
|
|
|
colorscheme %sh{
|
|
if [ -e ~/.lightmode ]; then
|
|
echo five-colors-light
|
|
else
|
|
echo five-colors-dark
|
|
fi
|
|
}
|