From 7e5936ba23246e431e9bdc1c8cc5b842ceb61d56 Mon Sep 17 00:00:00 2001 From: Jason Felice Date: Sun, 22 Mar 2020 16:52:40 -0400 Subject: [PATCH] diff.kak: add diff file and diff hunk text objects --- rc/filetype/diff.kak | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/rc/filetype/diff.kak b/rc/filetype/diff.kak index 5b4e065b..d904ce5a 100644 --- a/rc/filetype/diff.kak +++ b/rc/filetype/diff.kak @@ -11,3 +11,36 @@ hook -group diff-highlight global WinSetOption filetype=diff %{ add-highlighter window/diff ref diff hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/diff } } + +define-command \ + -docstring %{diff-select-file: Select surrounding patch file} \ + -params 0 \ + diff-select-file %{ + evaluate-commands -itersel -save-regs 'ose/' %{ + try %{ + execute-keys '"oZgl^diff ;"sZ' 'Ge"eZ' + try %{ execute-keys '"sz?\n(?=diff )"e' } + execute-keys '"ez' + } catch %{ + execute-keys '"oz' + fail 'Not in a diff file' + } + } +} + +define-command \ + -docstring %{diff-select-hunk: Select surrounding patch hunk} \ + -params 0 \ + diff-select-hunk %{ + evaluate-commands -itersel -save-regs 'ose/' %{ + try %{ + execute-keys '"oZgl^@@ ;"sZ' 'Ge"eZ' + try %{ execute-keys '"sz?\n(?=diff )"e' } + try %{ execute-keys '"sz?\n(?=@@ )"e' } + execute-keys '"ez' + } catch %{ + execute-keys '"oz' + fail 'Not in a diff hunk' + } + } +}