Updated kakoune and emacs

This commit is contained in:
Michael Chalupiak
2026-07-25 13:38:59 -06:00
parent 7cd118b1a1
commit 3aa286c2bf
4 changed files with 224 additions and 257 deletions

View File

@@ -16,111 +16,125 @@ plug "andreyorst/smarttab.kak" defer smarttab %{
plug "occivink/kakoune-sudo-write"
plug "kak-lsp/kak-lsp" do %{
cargo install --locked --force --path .
}
plug "gustavo-hms/luar" %{
plug "gustavo-hms/peneira" %{
require-module peneira
}
cargo install --locked --force --path .
}
plug "h-youhei/kakoune-surround"
plug "your-tools/kak-subvert" do %{
cargo install --locked --force --path .
plug "eburghar/kakpipe" do %{
cargo install --force --path . --root ~/.local
} config %{
require-module kakpipe
}
plug "https://git.sr.ht/~nasmevka/repl.kak"
plug "https://gitlab.com/kstr0k/mru-files.kak" demand mru-files %{ # %{} needed even if empty
# suggested mappings: *after* plugin loads
# think "go alt[ernate]-f[iles]"
# map global goto <a-f> '<esc>: mru-files ' -docstring 'mru-files'
# map global goto <a-F> '<esc>: mru-files-related<ret>' -docstring 'mru-files-related'
plug "gustavo-hms/luar" %{
require-module luar
}
plug "gustavo-hms/peneira" %{
require-module peneira
}
plug "custom-filetypes" load-path "~/.config/kak/al"
plug "caksoylar/kakoune-focus" config %{
# configuration here
}
plug "jtrv/grep-write.kak"
# # Color Themes
plug "tinted-theming/base16-kakoune" theme
plug "https://git.sr.ht/~hadronized/kakoune-tree-sitter-themes" theme
### End Of Plugins ###
set-option global luar_interpreter luajit
## Treesitter ##
eval %sh{ kak-tree-sitter -dksvvv --with-highlighting --with-text-objects --init $kak_session }
#eval %sh{ kak-tree-sitter -dks --with-text-objects --session $kak_session }
#eval %sh{ kak-tree-sitter -dks --with-highlighting --session $kak_session }
#eval %sh{ kak-tree-sitter -dksvvv --init $kak_session }
#
# evaluate-commands %sh{
# echo "colorscheme base16-$BASE16_THEME"
# }
## Popup ##
evaluate-commands %sh{kak-popup init}
## Highlighting ##
hook global WinCreate .* %{ add-highlighter window/number-lines number-lines -relative -hlcursor}
add-highlighter global/ show-matching
add-highlighter global/ column 80 MenuBackground
add-highlighter global/ show-whitespaces -spc " " -nbsp ""
#add-highlighter global/ show-whitespaces -nbsp "" -lf "" -indent "|"
## Wrapping ##
add-highlighter global/ wrap -word -indent
## Formatting ##
# define-command enable-autofmt -docstring 'enable autoformatting of buffer' %{
#
#
# hook global -group autofmt BufSetOption filetype=(zig) %{
# set-option buffer formatcmd 'zig fmt --stdin'
#
# hook -group autofmt buffer BufOpenFile .* %{
# format
# }
#
# hook -group autofmt buffer BufWritePre .* %{
# format
# }
# }
#
# hook global -group autofmt BufSetOption filetype=(html) %{
# set-option buffer formatcmd 'prettier --tab-width 4 --parser html'
#
# hook -group autofmt buffer BufOpenFile .* %{
# format
# }
#
# hook -group autofmt buffer BufWritePre .* %{
# format
# }
# }
#
# hook global -group autofmt BufSetOption filetype=(css) %{
# set-option buffer formatcmd 'prettier --tab-width 4 --parser css'
#
# hook -group autofmt buffer BufOpenFile .* %{
# format
# }
#
# hook -group autofmt buffer BufWritePre .* %{
# format
# }
# }
define-command enable-autofmt -docstring 'enable autoformatting of buffer' %{
hook global -group autofmt BufSetOption filetype=(zig) %{
set-option buffer formatcmd 'zig fmt --stdin'
hook -group autofmt buffer BufOpenFile .* %{
format
}
hook -group autofmt buffer BufWritePre .* %{
format
}
}
hook global -group autofmt BufSetOption filetype=(html) %{
set-option buffer formatcmd 'prettier --tab-width 4 --parser html'
hook -group autofmt buffer BufOpenFile .* %{
format
}
hook -group autofmt buffer BufWritePre .* %{
format
}
}
hook global -group autofmt BufSetOption filetype=(css) %{
set-option buffer formatcmd 'prettier --tab-width 4 --parser css'
hook -group autofmt buffer BufOpenFile .* %{
format
}
hook -group autofmt buffer BufWritePre .* %{
format
}
}
hook global -group autofmt BufSetOption filetype=(javascript) %{
set-option buffer formatcmd 'prettier --tab-width 4 --parser typescript'
hook -group autofmt buffer BufOpenFile .* %{
format
}
hook -group autofmt buffer BufWritePre .* %{
format
}
}
hook global -group autofmt BufSetOption filetype=(go) %{
set-option buffer formatcmd 'gofmt'
hook -group autofmt buffer BufOpenFile .* %{
format
}
hook -group autofmt buffer BufWritePre .* %{
format
}
}
}
define-command disable-autofmt -docstring 'disable autoformatting of buffer' %{
remove-hooks global autofmt
}
# enable-autofmt
## Indentation ##
set global tabstop 4
set global indentwidth 4
hook global WinSetOption filetype=.* expandtab
hook global WinSetOption filetype=(makefile|gas) noexpandtab
hook global BufCreate .* %{
editorconfig-load
autoconfigtab
}
hook global WinSetOption filetype=(makefile|gas|go) noexpandtab
# hook global BufCreate .* %{
# editorconfig-load
# autoconfigtab
# }
define-command set-spell -docstring 'Enable spellcheck' %{
# hook -group spellcheck global BufOpenFile .* %{
@@ -145,6 +159,7 @@ define-command set-nospell -docstring 'Disable spellcheck' %{
define-command sleuth -docstring 'Heuristically set buffer options' %{
try %{
evaluate-commands -draft %{
info 'trying'
# Search the first indent level
execute-keys 'gg' '/' '^\h+' '<ret>'
@@ -191,6 +206,8 @@ define-command sleuth-disable -docstring 'Disable sleuth' %{
remove-hooks global sleuth
}
sleuth-enable
## LSP ##
lsp-enable
lsp-inlay-diagnostics-enable global
@@ -244,154 +261,79 @@ hook -group lsp-filetype-typst global BufSetOption filetype=typst %{
# previewFeature = "disable"
}
}
set-option global lsp_config %{
}
declare-option str findcmd 'fd'
define-command -docstring 'Find file' fd -params 1 %{
edit %arg{1}
}
complete-command fd shell-script-candidates %opt{findcmd}
declare-option -hidden str-list last_command
define-command -hidden run_cmd -params .. %{
kakpipe -n %arg{1} %arg{@}
}
define-command -hidden run_cmd_bg -params .. %{
kakpipe-bg -n %arg{1} %arg{@}
}
define-command -docstring 'run command in fifo' cmd -params .. %{
run_cmd %arg{@}
set-option global last_command %arg{@}
set-option buffer filetype cmd
}
define-command -docstring 'run command in fifo (background buffer)' cmd-bg -params .. %{
run_cmd_bg %arg{@}
set-option global last_command %arg{@}
set-option buffer filetype cmd
}
define-command -docstring 'rerun last command' rcmd %{
cmd %opt{last_command}
}
define-command -docstring 'rerun last command in background' rcmd-bg %{
cmd-bg %opt{last_command}
}
define-command -hidden cmd-jump %{
evaluate-commands -save-regs a %{
try %{
execute-keys 'ght<ret>"ay'
evaluate-commands -try-client %opt{jumpclient} -verbatim -- edit -existing -- %reg{a}
try %{ focus %opt{jumpclient} }
} catch %{
jump
}
}
}
hook -group cmd-highlight global WinSetOption filetype=cmd %{
add-highlighter window/cmd group
add-highlighter window/cmd/location regex "^([^:\n]+):(\d+):(\d+)?" 1:cyan 2:green 3:green
add-highlighter window/cmd/path regex "^([^:\n]+[^/])$" 1:cyan
add-highlighter window/cmd/ line %{%opt{jump_current_line}} default+b
hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/cmd }
}
hook global WinSetOption filetype=cmd %{
hook buffer -group cmd-hooks NormalKey <ret> cmd-jump
hook -once -always window WinSetOption filetype=.* %{ remove-hooks buffer cmd-hooks }
}
define-command fzf-buffer -docstring 'Invoke fzf to select a buffer' %{
evaluate-commands %sh{
tmux split-window -l 20% "(printf \"%s\n\" $kak_quoted_buflist | fzf --bind 'focus:execute-silent(echo \"eval -client $kak_client %{ e {} }\" | kak -p $kak_session)' || echo \"$kak_buffile\") | xargs -I{} echo \"eval -client $kak_client %{ e '{}' }\" | /usr/bin/kak -p $kak_session"
}
}
define-command -docstring 'Invoke fzf to select a buffer' prev-fzf-buff %{
evaluate-commands %sh{
BUFFER=$(
(
eval "set -- $kak_buflist"
while [ $# -gt 0 ]; do
printf "%s\0" "$1"
shift
done
) |
fzf-tmux --cycle -p 80%,90% --read0 --preview='bat --theme=base16-256 --color=always {} 2>/dev/null'
)
if [ -n "$BUFFER" ]; then
printf "buffer %s" "${BUFFER}"
fi
}
}
define-command -docstring 'live grep' live-grep %{
evaluate-commands %sh{
if [ -z "${kak_client_env_TMUX}" ]; then
printf 'fail "client was not started under tmux"\n'
else
file="$(rfv.sh)"
if [ -n "$file" ]; then
printf "edit %s\n" "$file"
fi
fi
}
}
define-command -docstring 'exact grep' exact-grep %{
evaluate-commands %sh{
if [ -z "${kak_client_env_TMUX}" ]; then
printf 'fail "client was not started under tmux"\n'
else
file="$(rfve.sh)"
if [ -n "$file" ]; then
printf "edit %s\n" "$file"
fi
fi
}
}
define-command -docstring 'search contents of current file' file-search %{
evaluate-commands -save-regs '"' %{
set-register dquote %sh{ mktemp }
execute-keys -draft '%<a-|> cat > $kak_reg_dquote<ret>'
evaluate-commands %sh{
if [ -z "${kak_client_env_TMUX}" ]; then
printf 'fail "client was not started under tmux"\n'
else
file="$(rfs.sh ${kak_reg_dquote} ${kak_buffile})"
if [ -n "$file" ]; then
printf "edit %s\n" "$file"
fi
rm $kak_reg_dquote
fi
}
}
}
define-command -docstring 'search contents of current file with regex' regex-file-search %{
evaluate-commands -save-regs '"' %{
set-register dquote %sh{ mktemp }
execute-keys -draft '%<a-|> cat > $kak_reg_dquote<ret>'
evaluate-commands %sh{
if [ -z "${kak_client_env_TMUX}" ]; then
printf 'fail "client was not started under tmux"\n'
else
file="$(rgrs.sh ${kak_reg_dquote} ${kak_buffile})"
if [ -n "$file" ]; then
printf "edit %s\n" "$file"
fi
rm $kak_reg_dquote
fi
}
}
}
define-command -docstring 'Invoke fzf to open a file' -params 0 fzf-edit %{
evaluate-commands %sh{
if [ -z "${kak_client_env_TMUX}" ]; then
printf 'fail "client was not started under tmux"\n'
else
file="$(fd -t f . |TMUX="${kak_client_env_TMUX}" fzf-tmux --cycle -p 80%,90% --preview='bat --theme=base16-256 --color=always {} 2>/dev/null || cat {} 2>/dev/null')"
if [ -n "$file" ]; then
printf "edit %s\n" "$file"
fi
fi
}
}
define-command -docstring 'Invoke fzf to open a file local to the current file' -params 0 fzf-edit-local %{
evaluate-commands %sh{
if [ -z "${kak_client_env_TMUX}" ]; then
printf 'fail "client was not started under tmux"\n'
else
dir="$(get_local_path ${kak_buffile})"
if [ -n "$dir" ]; then
file="$(fd -u -t f . $dir |TMUX="${kak_client_env_TMUX}" fzf-tmux --cycle -p 80%,90% --preview='bat --theme=base16-256 --color=always {} 2>/dev/null || cat {} 2>/dev/null')"
fi
if [ -n "$file" ]; then
printf "edit %s\n" "$file"
fi
fi
}
}
define-command -docstring 'Pick project' -params 0 switch-project %{
evaluate-commands %sh{
if [ -z "${kak_client_env_TMUX}" ]; then
printf 'fail "client was not started under tmux"\n'
else
proj="$(cat ~/.scripts/projects | TMUX="${kak_client_env_TMUX}" fzf-tmux --cycle -p 80%,90% | cut -d' ' -f1)"
if [ -n "$proj" ]; then
printf "cd %s\n" "$proj"
printf 'fzf-edit\n'
fi
fi
}
}
define-command -docstring 'Project wide search' project-search %{
evaluate-commands %sh{
if [ -z "${kak_client_env_TMUX}" ]; then
printf 'fail "client was not started under tmux"\n'
else
file="$(rgfs.sh)"
if [ -n "$file" ]; then
printf "edit %s\n" "$file"
fi
fi
}
}
define-command -docstring 'Print Working Directory' -params 0 pwd %{
evaluate-commands echo %sh{ echo "$(pwd)"}
}
@@ -423,8 +365,8 @@ map -docstring 'enter config mode' global user e ':enter-user-mode config<ret>'
map -docstring 'edit kakoune config' global config k ':e ~/.config/kak/kakrc<ret>'
map -docstring 'edit tmux config' global config t ':e ~/.tmux.conf<ret>'
map -docstring 'edit bash config' global config b ':e ~/.bashrc<ret>'
map -docstring 'edit scripts folder' global config s ':cd ~/.scripts<ret>:fzf-edit<ret>'
map -docstring 'edit .config folder' global config c ':cd ~/.config<ret>:fzf-edit<ret>'
map -docstring 'edit scripts folder' global config s ':cd ~/.scripts<ret>:peneira-files<ret>'
map -docstring 'edit .config folder' global config c ':cd ~/.config<ret>:peneira-files<ret>'
declare-user-mode buffer
map -docstring 'enter buffer mode' global user b ':enter-user-mode buffer<ret>'
@@ -436,20 +378,15 @@ map -docstring 'list and select a buffer' global buffer b ':fzf-buffer<ret>'
declare-user-mode find
map -docstring 'enter find mode' global user f ':enter-user-mode find<ret>'
map -docstring 'find files' global find f ':fzf-edit<ret>'
map -docstring 'find tags for the current project' global find t ':ctags-search '
map -docstring 'find line in current file' global find l ':file-search<ret>'
map -docstring 'find line in current file with regex' global find L ':regex-file-search<ret>'
map -docstring 'find files in current directory' global find F ':fzf-edit-local<ret>'
map -docstring "grep file contents recursively" global find g ':live-grep<ret>'
map -docstring "grep exact file contents recursively" global find e ':exact-grep<ret>'
map -docstring 'project wide search' global find p ':project-search<ret>'
map -docstring 'find files' global find f ':peneira-files<ret>'
map -docstring 'find tags for the current project' global find t ':peneira-symbols<ret>'
map -docstring 'find files in current directory' global find F ':peneira-local-files<ret>'
map -docstring 'enter lsp mode' global user l ':enter-user-mode lsp<ret>'
map -docstring 'goto definition (tag)' global lsp t '<a-i>w:ctags-search<ret>'
map -docstring 'enter treesitter mode' global user t ':enter-user-mode tree-sitter<ret>'
map -docstring 'enter treesitter search mode' global user s ':enter-user-mode tree-sitter-search<ret>'
# map -docstring 'enter treesitter search mode' global user s ':enter-user-mode tree-sitter-search<ret>'
declare-user-mode tmux
map -docstring 'enter tmux/window mode' global user w ':enter-user-mode tmux<ret>'
@@ -461,23 +398,28 @@ map -docstring 'horizontal terminal split' global tmux H ':tmux-repl-vertical ba
map -docstring 'new terminal tab' global tmux T ':tmux-repl-window<ret>'
map -docstring 'new git window' global tmux g ':tmux-terminal-window lazygit<ret>'
declare-user-mode project
map -docstring 'enter project mode' global user p ':enter-user-mode project<ret>'
map -docstring 'open project' global project o ':switch-project<ret>'
map -docstring 'enter man mode' global user m ':enter-user-mode man<ret>'
declare-user-mode general
map -docstring 'enter general keybinds mode' global user g ':enter-user-mode general<ret>'
#map -docstring 'clipboard yank' global user y '<a-|>clip.exe<ret>'
map -docstring 'clipboard yank' global general y ':xcopy<ret>'
map -docstring 'clipboard yank' global user y ':xcopy<ret>'
#map -docstring 'clipboard paste' global user p '|powershell.exe -C Get-Clipboard | tr -d "\r"<ret>'
map -docstring 'clipboard paste' global general p ':xpaste<ret>'
map -docstring 'quit kakoune' global general q ':q<ret>'
map -docstring 'toggle comments' global general c ':comment-line<ret>'
map -docstring 'clipboard paste' global user p ':xpaste<ret>'
map -docstring 'toggle comments' global user c ':comment-line<ret>'
declare-user-mode subvert
map global user s ':enter-user-mode subvert<ret>' -docstring 'enter subvert user mode'
map global subvert a '<esc>| kak-subvert ada <ret>' -docstring 'convert to Ada case'
map global subvert c '<esc>| kak-subvert camel <ret>' -docstring 'convert to camel case'
map global subvert k '<esc>| kak-subvert kebab <ret>' -docstring 'convert to kebab case'
map global subvert p '<esc>| kak-subvert pascal <ret>' -docstring 'convert to pascal case'
map global subvert . '<esc>| kak-subvert sentence <ret>' -docstring 'convert to sentence case'
map global subvert s '<esc>| kak-subvert snake <ret>' -docstring 'convert to snake case'
map global subvert S '<esc>| kak-subvert screaming <ret>' -docstring 'convert to screaming case'
map global subvert t '<esc>| kak-subvert train <ret>' -docstring 'convert to train case'
map global subvert T '<esc>| kak-subvert title <ret>' -docstring 'convert to title case'
declare-user-mode spell
map -docstring 'enter spell mode' global general s ':enter-user-mode spell<ret>'
map -docstring 'enter spell mode' global user S ':enter-user-mode spell<ret>'
map -docstring 'enable spell check' global spell s ':spell<ret>'
map -docstring 'clear spell check' global spell c ':spell-clear<ret>'
map -docstring 'next spell check' global spell n ':spell-next<ret>'