blob: 63cae2f642d835c955831e204646dcd22107fa01 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
"
" mail_mutt.vim: Start a mutt(1) message with the lines in the given range,
" defaulting to the entire buffer.
"
" Author: Tom Ryder <tom@sanctum.geek.nz>
" License: Same as Vim itself
"
if exists('g:loaded_mail_mutt') || &compatible
finish
endif
if !has('user_commands')
finish
endif
let g:loaded_mail_mutt = 1
" Declare function
function! s:MailMutt(start, end)
" Check we'll have mutt(1) to execute
if !executable('mutt')
echoerr 'mutt not found in $PATH'
finish
endif
" Create a temporary file
let l:tf = tempname()
" Write the contents of the buffer to it
let l:range = a:start . ',' . a:end
let l:command = 'write ' . fnameescape(l:tf)
execute l:range . l:command
" Run mutt(1) with that file as its input
execute '!mutt -i ' . shellescape(l:tf)
endfunction
" Create a command to wrap around that function
command -nargs=0 -range=%
\ MailMutt
\ call <SID>MailMutt(<line1>, <line2>)
" Mapping to mail current line in normal mode
nnoremap <silent> <unique>
\ <Plug>MailMuttLine
\ :<C-U>.MailMutt<CR>
" Mapping to mail whole buffer in normal mode
nnoremap <silent> <unique>
\ <Plug>MailMuttBuffer
\ :<C-U>%MailMutt<CR>
" Mapping to mail selected lines in visual/select mode
vnoremap <silent> <unique>
\ <Plug>MailMuttSelected
\ :MailMutt<CR>
|