configs/dot.config/kak/autoload/explore-buffers.kak
2019-09-03 17:47:20 +02:00

58 lines
1.9 KiB
Text

declare-option -hidden str explore_buffers_current
set-face global ExploreBuffers 'yellow,default'
add-highlighter shared/buffers regions
add-highlighter shared/buffers/content default-region group
add-highlighter shared/buffers/content/buffers regex '^.+$' 0:ExploreBuffers
define-command -hidden explore-buffers -docstring 'Explore buffers' %{ evaluate-commands -save-regs '"/' %{
set-option current explore_buffers_current %val(bufname)
edit! -scratch *buffers*
set-option buffer filetype buffers
evaluate-commands set-register dquote %val(buflist)
execute-keys '<a-R>)<a-space>i<ret><esc><space>'
set-register / "\Q%opt(explore_buffers_current)\E"
execute-keys n
}}
define-command -hidden explore-buffers-parent -docstring 'Explore the parent directory of the selected buffer' %{
explore-buffers-validate
explore-files %sh(dirname "$kak_buffile")
}
define-command -hidden explore-buffers-validate -docstring 'Edit selected buffer' %{
execute-keys '<space><a-x>_'
buffer %reg(.)
delete-buffer *buffers*
}
define-command -hidden explore-buffers-delete -docstring 'Delete selected buffer' %{
execute-keys '<space><a-x>_'
delete-buffer %reg(.)
explore-buffers
}
hook global WinSetOption filetype=buffers %{
add-highlighter window/ ref buffers
map window normal <ret> ': explore-buffers-validate<ret>'
map window normal <backspace> ': explore-buffers-parent<ret>'
map window normal q ': delete-buffer<ret>'
map window normal <esc> ': delete-buffer<ret>'
map window normal d ': explore-buffers-delete<ret>'
hook -always -once window WinSetOption filetype=.* %{
remove-highlighter window/buffers
}
}
define-command -hidden explore-buffers-enable %{
hook window -group explore-buffers RuntimeError '\d+:\d+: ''(buffer|b)'' wrong argument count' %{
# Hide error message
echo
explore-buffers
}
}
hook -group explore-buffers global WinCreate .* %{
explore-buffers-enable
}