mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 04:17:01 +00:00 
			
		
		
		
	 a98a6996c2
			
		
	
	a98a6996c2
	
	
	
		
			
			Vim runtime files based on 7.4.384 / hg changeset 7090d7f160f7
Excluding:
  Amiga icons (*.info, icons/)
  doc/hangulin.txt
  tutor/
  spell/
  lang/ (only used for menu translations)
  macros/maze/, macros/hanoi/, macros/life/, macros/urm/
      These were used to test vi compatibility.
  termcap
      "Demonstration of a termcap file (for the Amiga and Archimedes)"
Helped-by: Rich Wareham <rjw57@cam.ac.uk>
Helped-by: John <john.schmidt.h@gmail.com>
Helped-by: Yann <yann@yann-salaun.com>
Helped-by: Christophe Badoit <c.badoit@lesiteimmo.com>
Helped-by: drasill <github@tof2k.com>
Helped-by: Tae Sandoval Murgan <taecilla@gmail.com>
Helped-by: Lowe Thiderman <lowe.thiderman@gmail.com>
		
	
		
			
				
	
	
		
			113 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:		Mail file
 | |
| " Previous Maintainer:	Felix von Leitner <leitner@math.fu-berlin.de>
 | |
| " Maintainer:		GI <a@b.c>, where a='gi1242+vim', b='gmail', c='com'
 | |
| " Last Change:		Wed 14 Aug 2013 08:24:52 AM PDT
 | |
| 
 | |
| " Quit when a syntax file was already loaded
 | |
| if exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| let s:cpo_save = &cpo
 | |
| set cpo&vim
 | |
| 
 | |
| " 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}"
 | |
| 
 | |
| " 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		Statement
 | |
| hi def link mailHeaderKey	Type
 | |
| hi def link mailSignature	PreProc
 | |
| hi def link mailHeaderEmail	mailEmail
 | |
| hi def link mailEmail		Special
 | |
| hi def link mailURL		String
 | |
| hi def link mailSubject		Title
 | |
| hi def link mailQuoted1		Comment
 | |
| 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
 |