Hi All,

I'm the maintainer of the mail.vim syntax file. I updated it slightly
and am attaching the updated version.

Is this the right place to send? Or should I open a pull request? (I
used to send updates to Bram, but sadly he's not with us anymore. RIP)

GI

-- 
100 THINGS I'D DO IF I EVER BECAME AN EVIL OVERLORD
87. My vats of hazardous chemicals will be covered when not in use.
Also, I will not construct walkways above them.

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/Zas1HGX7wKjIFtLX%40andrew.cmu.edu.
" Vim syntax file
" Language:             Mail file
" Previous Maintainer:  Felix von Leitner <leit...@math.fu-berlin.de>
" Maintainer:           GI <a@b.c>, where a='gi1242+vim', b='gmail', c='com'
" Last Change:          Thu 18 Jan 2024 06:34:38 PM EST

" Quit when a syntax file was already loaded
if exists("b:current_syntax")
  finish
endif

let s:cpo_save = &cpo
set cpo&vim

syn spell toplevel

" The mail header is recognized starting with a "keyword:" line and ending
" with an empty line or other line that can't be in the header. All lines of
" the header are highlighted. Headers of quoted messages (quoted with >) are
" also highlighted.

" Syntax clusters
syn cluster mailHeaderFields    
contains=mailHeaderKey,mailSubject,mailHeaderEmail,@mailLinks
syn cluster mailLinks           contains=mailURL,mailEmail
syn cluster mailQuoteExps       
contains=mailQuoteExp1,mailQuoteExp2,mailQuoteExp3,mailQuoteExp4,mailQuoteExp5,mailQuoteExp6

syn case match
" For "From " matching case is required. The "From " is not matched in quoted
" emails
" According to RFC 2822 any printable ASCII character can appear in a field
" name, except ':'.
syn region      mailHeader      contains=@mailHeaderFields,@NoSpell 
start="^From .*\d\d\d\d$" skip="^\s" end="\v^[!-9;-~]*([^!-~]|$)"me=s-1 fold
syn match       mailHeaderKey   contained contains=mailEmail,@NoSpell 
"^From\s.*\d\d\d\d$"

" Nothing else depends on case. 
syn case ignore

" Headers in properly quoted (with "> " or ">") emails are matched
syn region      mailHeader      keepend 
contains=@mailHeaderFields,@mailQuoteExps,@NoSpell start="^\z(\(> 
\?\)*\)\v(newsgroups|x-([a-z\-])*|path|xref|message-id|from|((in-)?reply-)?to|b?cc|subject|return-path|received|date|replied):"
 skip="^\z1\s" end="\v^\z1[!-9;-~]*([^!-~]|$)"me=s-1 end="\v^\z1@!"me=s-1 
end="\v^\z1(\> ?)+"me=s-1 fold

" Usenet headers
syn match       mailHeaderKey   contained 
contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> 
?)*)@<=(Newsgroups|Followup-To|Message-ID|Supersedes|Control):.*$"


syn region      mailHeaderKey   contained 
contains=mailHeaderEmail,mailEmail,@mailQuoteExps,@NoSpell start="\v(^(\> 
?)*)@<=(to|b?cc):" skip=",$" end="$"
syn match       mailHeaderKey   contained 
contains=mailHeaderEmail,mailEmail,@NoSpell "\v(^(\> 
?)*)@<=(from|reply-to):.*$" fold
syn match       mailHeaderKey   contained contains=@NoSpell "\v(^(\> 
?)*)@<=date:"
syn match       mailSubject     contained "\v^subject:.*$" fold
syn match       mailSubject     contained contains=@NoSpell "\v(^(\> 
?)+)@<=subject:.*$"

" Anything in the header between < and > is an email address
syn match       mailHeaderEmail contained contains=@NoSpell "<.\{-}>"

" Mail Signatures. (Begin with "-- ", end with change in quote level)
syn region      mailSignature   keepend contains=@mailLinks,@mailQuoteExps 
start="^--\s$" end="^$" end="^\(> \?\)\+"me=s-1 fold
syn region      mailSignature   keepend 
contains=@mailLinks,@mailQuoteExps,@NoSpell start="^\z(\(> \?\)\+\)--\s$" 
end="^\z1$" end="^\z1\@!"me=s-1 end="^\z1\(> \?\)\+"me=s-1 fold

" Treat verbatim Text special.
syn region      mailVerbatim    contains=@NoSpell keepend start="^#v+$" 
end="^#v-$" fold 
syn region      mailVerbatim    contains=@mailQuoteExps,@NoSpell keepend 
start="^\z(\(> \?\)\+\)#v+$" end="\z1#v-$" fold 

" URLs start with a known protocol or www,web,w3.
syn match mailURL contains=@NoSpell 
`\v<(((https?|ftp|gopher)://|(mailto|file|news):)[^'        
<>"]+|(www|web|w3)[a-z0-9_-]*\.[a-z0-9._-]+\.[^'        <>"]+)[a-z0-9/]`
syn match mailEmail contains=@NoSpell "\v[_=a-z\./+0-9-]+\@[a-z0-9._-]+\a{2}"

" Don't spell emojis
syn match mailEmoji contains=@NoSpell "\v[\U1f300-\U1f64f\U1f900-\U1f9ff]"

" Make sure quote markers in regions (header / signature) have correct color
syn match mailQuoteExp1 contained "\v^(\> ?)"
syn match mailQuoteExp2 contained "\v^(\> ?){2}"
syn match mailQuoteExp3 contained "\v^(\> ?){3}"
syn match mailQuoteExp4 contained "\v^(\> ?){4}"
syn match mailQuoteExp5 contained "\v^(\> ?){5}"
syn match mailQuoteExp6 contained "\v^(\> ?){6}"

" Even and odd quoted lines. Order is important here!
syn region      mailQuoted6     keepend 
contains=mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell 
start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{5}\([a-z]\+>\|[]|}>]\)\)" 
end="^\z1\@!" fold
syn region      mailQuoted5     keepend 
contains=mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell 
start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{4}\([a-z]\+>\|[]|}>]\)\)" 
end="^\z1\@!" fold
syn region      mailQuoted4     keepend 
contains=mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell
 start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{3}\([a-z]\+>\|[]|}>]\)\)" 
end="^\z1\@!" fold
syn region      mailQuoted3     keepend 
contains=mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell
 start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{2}\([a-z]\+>\|[]|}>]\)\)" 
end="^\z1\@!" fold
syn region      mailQuoted2     keepend 
contains=mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell
 start="^\z(\(\([a-z]\+>\|[]|}>]\)[ \t]*\)\{1}\([a-z]\+>\|[]|}>]\)\)" 
end="^\z1\@!" fold
syn region      mailQuoted1     keepend 
contains=mailQuoted2,mailQuoted3,mailQuoted4,mailQuoted5,mailQuoted6,mailVerbatim,mailHeader,@mailLinks,mailSignature,@NoSpell
 start="^\z([a-z]\+>\|[]|}>]\)" end="^\z1\@!" fold

" Need to sync on the header. Assume we can do that within 100 lines
if exists("mail_minlines")
    exec "syn sync minlines=" . mail_minlines
else
    syn sync minlines=100
endif

" Define the default highlighting.
hi def link mailVerbatim        Special
hi def link mailHeader          PreProc
hi def link mailHeaderKey       Type
hi def link mailSignature       Comment
hi def link mailHeaderEmail     mailEmail
hi def link mailEmail           String
hi def link mailURL             Constant
hi def link mailSubject         Statement
hi def link mailQuoted1         Function
hi def link mailQuoted3         mailQuoted1
hi def link mailQuoted5         mailQuoted1
hi def link mailQuoted2         Identifier
hi def link mailQuoted4         mailQuoted2
hi def link mailQuoted6         mailQuoted2
hi def link mailQuoteExp1       mailQuoted1
hi def link mailQuoteExp2       mailQuoted2
hi def link mailQuoteExp3       mailQuoted3
hi def link mailQuoteExp4       mailQuoted4
hi def link mailQuoteExp5       mailQuoted5
hi def link mailQuoteExp6       mailQuoted6

let b:current_syntax = "mail"

let &cpo = s:cpo_save
unlet s:cpo_save

Raspunde prin e-mail lui