From 6ad8bfc39501fe74708899734c16d89bc8241ada Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Wed, 8 Aug 2018 13:16:56 +1200 Subject: Improve ,[ and ,] mappings in mail --- vim/after/ftplugin/mail.vim | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'vim/after/ftplugin') diff --git a/vim/after/ftplugin/mail.vim b/vim/after/ftplugin/mail.vim index e7548b3c..66064401 100644 --- a/vim/after/ftplugin/mail.vim +++ b/vim/after/ftplugin/mail.vim @@ -63,14 +63,29 @@ nnoremap let b:undo_ftplugin .= '|nunmap l' " Maps to move to the next blank line content-wise (i.e. quoted still counts) +function! s:NewBlank(num, up) abort + let l:num = a:num + let l:par = 0 + while l:num <= line('$') + if getline(l:num) =~# '^[ >]*$' + if l:par + break + endif + else + let l:par = 1 + endif + let l:num += a:up ? -1 : 1 + endwhile + execute l:num +endfunction nnoremap [ - \ :call search('\m^[ >]*$', 'bW') + \ :call NewBlank(line('.'), 1) nnoremap ] - \ :call search('\m^[ >]*$', 'W') + \ :call NewBlank(line('.'), 0) onoremap [ - \ :call search('\m^[ >]*$', 'bW') + \ :call NewBlank(line('.'), 1) onoremap ] - \ :call search('\m^[ >]*$', 'W') + \ :call NewBlank(line('.'), 0) let b:undo_ftplugin .= '|nunmap [' \ . '|nunmap ]' \ . '|ounmap [' -- cgit v1.2.3