diff options
Diffstat (limited to 'vim/autoload/quote.vim')
-rw-r--r-- | vim/autoload/quote.vim | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/vim/autoload/quote.vim b/vim/autoload/quote.vim new file mode 100644 index 00000000..6e943091 --- /dev/null +++ b/vim/autoload/quote.vim @@ -0,0 +1,30 @@ +" Quote lines in mail and mail-based formats: Markdown, Git commits, etc + +" Operator function wrapper for the mapping to call +function! quote#Quote() abort + set operatorfunc=quote#QuoteOpfunc + return 'g@' +endfunction + +" Quoting operator function +function! quote#QuoteOpfunc(type) abort + + " May as well make this configurable + let l:char = exists('b:quote_char') + \ ? b:quote_char + \ : '>' + + " Iterate over each matched line + for l:li in range(line('''['), line(''']')) + + " Only add a space after the quote character if this line isn't already + " quoted with the same character + let l:cur = getline(l:li) + let l:new = stridx(l:cur, l:char) == 0 + \ ? l:char.l:cur + \ : l:char.' '.l:cur + call setline(l:li, l:new) + + endfor + +endfunction |