blob: de88f4d1e84cdec4ac1980ad2cf7ac16014a04f5 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim filetype plugin file
2" Language: Mail
Christian Brabandte978b452023-08-13 10:33:05 +02003" Maintainer: The Vim Project <https://github.com/vim/vim>
Lucas Eekhof27f51362025-02-20 22:32:07 +01004" Last Change: 2025 Feb 20
Christian Brabandte978b452023-08-13 10:33:05 +02005" Former Maintainer: Bram Moolenaar <Bram@vim.org>
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7" Only do this when not done yet for this buffer
8if exists("b:did_ftplugin")
9 finish
10endif
11let b:did_ftplugin = 1
12
Lucas Eekhof27f51362025-02-20 22:32:07 +010013let b:undo_ftplugin = "setl modeline< tw< fo< comments< commentstring<"
Bram Moolenaar071d4272004-06-13 20:20:40 +000014
Bram Moolenaar9964e462007-05-05 17:54:07 +000015" Don't use modelines in e-mail messages, avoid trojan horses and nasty
16" "jokes" (e.g., setting 'textwidth' to 5).
Bram Moolenaar071d4272004-06-13 20:20:40 +000017setlocal nomodeline
18
19" many people recommend keeping e-mail messages 72 chars wide
20if &tw == 0
21 setlocal tw=72
22endif
23
24" Set 'formatoptions' to break text lines and keep the comment leader ">".
25setlocal fo+=tcql
26
Lucas Eekhof27f51362025-02-20 22:32:07 +010027" Set commentstring to quoting sign ">" so comment shortcuts can be used to
28" edit quoted parts of mail
29setlocal commentstring=>\ %s
Bram Moolenaar2df58b42012-11-28 18:21:11 +010030" Add n:> to 'comments, in case it was removed elsewhere
31setlocal comments+=n:>
32
Bram Moolenaar113cb512021-11-07 20:27:04 +000033" .eml files are universally formatted with DOS line-endings, per RFC5322.
34" If the file was not DOS the it will be marked as changed, which is probably
35" a good thing.
36if expand('%:e') ==? 'eml'
37 let b:undo_ftplugin ..= " fileformat=" .. &fileformat
38 setlocal fileformat=dos
39endif
40
Bram Moolenaar5c736222010-01-06 20:54:52 +010041" Add mappings, unless the user doesn't want this.
Bram Moolenaar071d4272004-06-13 20:20:40 +000042if !exists("no_plugin_maps") && !exists("no_mail_maps")
43 " Quote text by inserting "> "
44 if !hasmapto('<Plug>MailQuote')
45 vmap <buffer> <LocalLeader>q <Plug>MailQuote
46 nmap <buffer> <LocalLeader>q <Plug>MailQuote
47 endif
48 vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR>:noh<CR>``
49 nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR>:noh<CR>``
50endif