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 }