diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2018-08-08 13:16:56 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2018-08-08 13:16:56 +1200 |
commit | 6ad8bfc39501fe74708899734c16d89bc8241ada (patch) | |
tree | 999e0887c3139cd43ebbef19506d16d18a52f05c /vim/after/ftplugin | |
parent | Add operator-pending analogues to quote para maps (diff) | |
download | dotfiles-6ad8bfc39501fe74708899734c16d89bc8241ada.tar.gz dotfiles-6ad8bfc39501fe74708899734c16d89bc8241ada.zip |
Improve ,[ and ,] mappings in mail
Diffstat (limited to 'vim/after/ftplugin')
-rw-r--r-- | vim/after/ftplugin/mail.vim | 23 |
1 files changed, 19 insertions, 4 deletions
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 <buffer> let b:undo_ftplugin .= '|nunmap <buffer> <LocalLeader>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 <buffer> <silent> <LocalLeader>[ - \ :<C-U>call search('\m^[ >]*$', 'bW')<CR> + \ :<C-U>call <SID>NewBlank(line('.'), 1)<CR> nnoremap <buffer> <silent> <LocalLeader>] - \ :<C-U>call search('\m^[ >]*$', 'W')<CR> + \ :<C-U>call <SID>NewBlank(line('.'), 0)<CR> onoremap <buffer> <silent> <LocalLeader>[ - \ :<C-U>call search('\m^[ >]*$', 'bW')<CR> + \ :<C-U>call <SID>NewBlank(line('.'), 1)<CR> onoremap <buffer> <silent> <LocalLeader>] - \ :<C-U>call search('\m^[ >]*$', 'W')<CR> + \ :<C-U>call <SID>NewBlank(line('.'), 0)<CR> let b:undo_ftplugin .= '|nunmap <buffer> <LocalLeader>[' \ . '|nunmap <buffer> <LocalLeader>]' \ . '|ounmap <buffer> <LocalLeader>[' |