summaryrefslogtreecommitdiffstats
path: root/runtime/ftplugin/mail.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/ftplugin/mail.vim')
-rw-r--r--runtime/ftplugin/mail.vim47
1 files changed, 47 insertions, 0 deletions
diff --git a/runtime/ftplugin/mail.vim b/runtime/ftplugin/mail.vim
new file mode 100644
index 0000000..3cef84f
--- /dev/null
+++ b/runtime/ftplugin/mail.vim
@@ -0,0 +1,47 @@
+" Vim filetype plugin file
+" Language: Mail
+" Maintainer: The Vim Project <https://github.com/vim/vim>
+" Last Change: 2023 Aug 10
+" Former Maintainer: Bram Moolenaar <Bram@vim.org>
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl modeline< tw< fo< comments<"
+
+" Don't use modelines in e-mail messages, avoid trojan horses and nasty
+" "jokes" (e.g., setting 'textwidth' to 5).
+setlocal nomodeline
+
+" many people recommend keeping e-mail messages 72 chars wide
+if &tw == 0
+ setlocal tw=72
+endif
+
+" Set 'formatoptions' to break text lines and keep the comment leader ">".
+setlocal fo+=tcql
+
+" Add n:> to 'comments, in case it was removed elsewhere
+setlocal comments+=n:>
+
+" .eml files are universally formatted with DOS line-endings, per RFC5322.
+" If the file was not DOS the it will be marked as changed, which is probably
+" a good thing.
+if expand('%:e') ==? 'eml'
+ let b:undo_ftplugin ..= " fileformat=" .. &fileformat
+ setlocal fileformat=dos
+endif
+
+" Add mappings, unless the user doesn't want this.
+if !exists("no_plugin_maps") && !exists("no_mail_maps")
+ " Quote text by inserting "> "
+ if !hasmapto('<Plug>MailQuote')
+ vmap <buffer> <LocalLeader>q <Plug>MailQuote
+ nmap <buffer> <LocalLeader>q <Plug>MailQuote
+ endif
+ vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR>:noh<CR>``
+ nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR>:noh<CR>``
+endif