aboutsummaryrefslogtreecommitdiff
path: root/vim/plugin
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2017-11-11 00:59:12 +1300
committerTom Ryder <tom@sanctum.geek.nz>2017-11-11 00:59:12 +1300
commitfe8e94bea39895f2544ae83916da83a4f2affa21 (patch)
tree9c1134155cb4ed8fcd390a228315cc22fa0202de /vim/plugin
parentBeginnings of a buffer-to-Mutt mailer plugin (diff)
downloaddotfiles-fe8e94bea39895f2544ae83916da83a4f2affa21.tar.gz
dotfiles-fe8e94bea39895f2544ae83916da83a4f2affa21.zip
Add new mail_mutt.vim plugin, apply mappings
This plugin provides a shortcut for staring email messages in Mutt with a range of lines.
Diffstat (limited to 'vim/plugin')
-rw-r--r--vim/plugin/mail_mutt.vim41
1 files changed, 41 insertions, 0 deletions
diff --git a/vim/plugin/mail_mutt.vim b/vim/plugin/mail_mutt.vim
new file mode 100644
index 00000000..67444e4d
--- /dev/null
+++ b/vim/plugin/mail_mutt.vim
@@ -0,0 +1,41 @@
+"
+" 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')
+ \ || !has('user_commands')
+ \ || &compatible
+ 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>)