diff options
author | Teddy Wing | 2023-12-12 20:07:42 +0100 |
---|---|---|
committer | Teddy Wing | 2023-12-12 23:42:51 +0100 |
commit | cfeee05bb0c327ea3e54ad9846d9eb5da1b443c8 (patch) | |
tree | 251fea231218e540f23e2e5f8fafbdb019eca9f9 | |
parent | d342a9fde06ca48e8a0ca6dc75859b9417410406 (diff) | |
download | dotvim-cfeee05bb0c327ea3e54ad9846d9eb5da1b443c8.tar.bz2 |
prr-ui: Allow `PrrApprove` and `PrrReject` to be called outside of *.prr
Sometimes I don't have any line comments to make and can go ahead and
accept or reject a change immediately.
In those cases, I want `PrrApprove` and `PrrReject` to be available in
any file type buffer, not just in *.prr buffers.
Additionally, those two commands should automatically do `PrrStart` if
it hasn't been executed manually before, like we already do with
`PrrComment`.
-rw-r--r-- | bundle/prr-ui/autoload/prr_ui.vim | 59 | ||||
-rw-r--r-- | bundle/prr-ui/ftplugin/prr/prr_ui.vim | 7 | ||||
-rw-r--r-- | bundle/prr-ui/plugin/prr_ui.vim | 2 |
3 files changed, 56 insertions, 12 deletions
diff --git a/bundle/prr-ui/autoload/prr_ui.vim b/bundle/prr-ui/autoload/prr_ui.vim index c4e2afa..7b152b7 100644 --- a/bundle/prr-ui/autoload/prr_ui.vim +++ b/bundle/prr-ui/autoload/prr_ui.vim @@ -885,6 +885,55 @@ endfunction function! prr_ui#Comment() let current_line = getline('.') + call prr_ui#SplitPrrBuffer() + + call search(current_line) + + " Put the cursor in place to add a comment on the line. + call append('.', ['', '', '']) + call cursor(line('.') + 2, 0) + + startinsert +endfunction + + +function! prr_ui#Approve() + " If current buffer is not prr, then PrrStart. + if !prr_ui#IsCurrentBufferPrr() + call prr_ui#SplitPrrBuffer() + endif + + call append( + \ 0, + \ [ + \ 'Looks good ' . prr_ui#RandomEmoji(), + \ '', + \ '@prr approve', + \ '' + \ ] + \ ) + call cursor(1, 0) +endfunction + +function! prr_ui#Reject() + if !prr_ui#IsCurrentBufferPrr() + call prr_ui#SplitPrrBuffer() + endif + + call append( + \ 0, + \ [ + \ '', + \ '', + \ '@prr reject', + \ '' + \ ] + \ ) + call cursor(1, 0) +endfunction + + +function! prr_ui#SplitPrrBuffer() try " Open the existing Prr review file in a new split. sbuffer prr @@ -893,11 +942,11 @@ function! prr_ui#Comment() execute 'split ' . prr_path endtry - call search(current_line) +endfunction - " Put the cursor in place to add a comment on the line. - call append('.', ['', '', '']) - call cursor(line('.') + 2, 0) +function! prr_ui#IsCurrentBufferPrr() + let current_buffer_name = bufname() + let pos = match(current_buffer_name, '\.prr$') - startinsert + return pos != -1 endfunction diff --git a/bundle/prr-ui/ftplugin/prr/prr_ui.vim b/bundle/prr-ui/ftplugin/prr/prr_ui.vim index 09e02d2..679d0fa 100644 --- a/bundle/prr-ui/ftplugin/prr/prr_ui.vim +++ b/bundle/prr-ui/ftplugin/prr/prr_ui.vim @@ -1,12 +1,5 @@ let b:undo_ftplugin = '' -command! -buffer PrrApprove - \ normal! ggOLooks good <C-r>=prr_ui#RandomEmoji()<CR><CR><CR>@prr approve<CR><Esc>gg -command! -buffer PrrReject normal! ggO<CR><CR>@prr reject<CR><Esc>gg - -let b:undo_ftplugin .= '| delcommand -buffer PrrApprove' -let b:undo_ftplugin .= '| delcommand -buffer PrrReject' - " Educate quotes. if !exists('b:textobj_quote_educate_mapped') \ || b:textobj_quote_educate_mapped == 0 diff --git a/bundle/prr-ui/plugin/prr_ui.vim b/bundle/prr-ui/plugin/prr_ui.vim index 665f65b..74fc1ba 100644 --- a/bundle/prr-ui/plugin/prr_ui.vim +++ b/bundle/prr-ui/plugin/prr_ui.vim @@ -6,3 +6,5 @@ let g:loaded_prr_ui = 1 command! PrrStart call prr_ui#StartInteractive() command! PrrSubmit call prr_ui#Submit() command! PrrComment call prr_ui#Comment() +command! PrrApprove call prr_ui#Approve() +command! PrrReject call prr_ui#Reject() |