| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Vim syntax file | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | " Language:      Perl POD format | 
					
						
							|  |  |  | " Maintainer:    vim-perl <vim-perl@googlegroups.com> | 
					
						
							|  |  |  | " Previously:    Scott Bigham <dsb@killerbunnies.org> | 
					
						
							|  |  |  | " Homepage:      http://github.com/vim-perl/vim-perl | 
					
						
							|  |  |  | " Bugs/requests: http://github.com/vim-perl/vim-perl/issues | 
					
						
							| 
									
										
										
										
											2017-09-19 22:06:03 +02:00
										 |  |  | " Last Change:   2017-09-12 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " To add embedded POD documentation highlighting to your syntax file, add | 
					
						
							|  |  |  | " the commands: | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | "   syn include @Pod <sfile>:p:h/pod.vim | 
					
						
							|  |  |  | "   syn region myPOD start="^=pod" start="^=head" end="^=cut" keepend contained contains=@Pod | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | " and add myPod to the contains= list of some existing region, probably a | 
					
						
							|  |  |  | " comment.  The "keepend" flag is needed because "=cut" is matched as a | 
					
						
							|  |  |  | " pattern in its own right. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " Remove any old syntax stuff hanging around (this is suppressed | 
					
						
							|  |  |  | " automatically by ":syn include" if necessary). | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | " quit when a syntax file was already loaded | 
					
						
							|  |  |  | if exists("b:current_syntax") | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | let s:cpo_save = &cpo | 
					
						
							|  |  |  | set cpo&vim | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " POD commands | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | syn match podCommand    "^=encoding"  nextgroup=podCmdText contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2010-08-11 23:37:32 +02:00
										 |  |  | syn match podCommand    "^=head[1234]"  nextgroup=podCmdText contains=@NoSpell | 
					
						
							|  |  |  | syn match podCommand    "^=item"        nextgroup=podCmdText contains=@NoSpell | 
					
						
							|  |  |  | syn match podCommand    "^=over"        nextgroup=podOverIndent skipwhite contains=@NoSpell | 
					
						
							|  |  |  | syn match podCommand    "^=back"        contains=@NoSpell | 
					
						
							|  |  |  | syn match podCommand    "^=cut"         contains=@NoSpell | 
					
						
							|  |  |  | syn match podCommand    "^=pod"         contains=@NoSpell | 
					
						
							|  |  |  | syn match podCommand    "^=for"         nextgroup=podForKeywd skipwhite contains=@NoSpell | 
					
						
							|  |  |  | syn match podCommand    "^=begin"       nextgroup=podForKeywd skipwhite contains=@NoSpell | 
					
						
							|  |  |  | syn match podCommand    "^=end"         nextgroup=podForKeywd skipwhite contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Text of a =head1, =head2 or =item command | 
					
						
							| 
									
										
										
										
											2005-07-08 22:17:29 +00:00
										 |  |  | syn match podCmdText	".*$" contained contains=podFormat,@NoSpell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Indent amount of =over command | 
					
						
							| 
									
										
										
										
											2005-07-08 22:17:29 +00:00
										 |  |  | syn match podOverIndent	"\d\+" contained contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Formatter identifier keyword for =for, =begin and =end commands | 
					
						
							| 
									
										
										
										
											2005-07-08 22:17:29 +00:00
										 |  |  | syn match podForKeywd	"\S\+" contained contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " An indented line, to be displayed verbatim | 
					
						
							| 
									
										
										
										
											2005-07-08 22:17:29 +00:00
										 |  |  | syn match podVerbatimLine	"^\s.*$" contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Inline textual items handled specially by POD | 
					
						
							| 
									
										
										
										
											2005-07-08 22:17:29 +00:00
										 |  |  | syn match podSpecial	"\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell | 
					
						
							|  |  |  | syn match podSpecial	"[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Special formatting sequences | 
					
						
							| 
									
										
										
										
											2005-07-08 22:17:29 +00:00
										 |  |  | syn region podFormat	start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | syn region podFormat	start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell | 
					
						
							| 
									
										
										
										
											2004-10-07 21:02:47 +00:00
										 |  |  | syn match  podFormat	"Z<>" | 
					
						
							| 
									
										
										
										
											2005-07-08 22:17:29 +00:00
										 |  |  | syn match  podFormat	"E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell | 
					
						
							|  |  |  | syn match  podEscape	"\I\i*>"me=e-1 contained contains=@NoSpell | 
					
						
							|  |  |  | syn match  podEscape2	"\d\+>"me=e-1 contained contains=@NoSpell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " Define the default highlighting. | 
					
						
							| 
									
										
										
										
											2016-08-30 23:26:57 +02:00
										 |  |  | " Only when an item doesn't have highlighting yet | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link podCommand		Statement | 
					
						
							|  |  |  | hi def link podCmdText		String | 
					
						
							| 
									
										
										
										
											2017-09-19 22:06:03 +02:00
										 |  |  | hi def link podOverIndent	Number | 
					
						
							| 
									
										
										
										
											2016-08-31 22:22:10 +02:00
										 |  |  | hi def link podForKeywd		Identifier | 
					
						
							|  |  |  | hi def link podFormat		Identifier | 
					
						
							|  |  |  | hi def link podVerbatimLine	PreProc | 
					
						
							|  |  |  | hi def link podSpecial		Identifier | 
					
						
							|  |  |  | hi def link podEscape		String | 
					
						
							|  |  |  | hi def link podEscape2		Number | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | if exists("perl_pod_spellcheck_headings") | 
					
						
							|  |  |  |   " Spell-check headings | 
					
						
							|  |  |  |   syn clear podCmdText | 
					
						
							|  |  |  |   syn match podCmdText    ".*$" contained contains=podFormat | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if exists("perl_pod_formatting") | 
					
						
							|  |  |  |   " By default, escapes like C<> are not checked for spelling. Remove B<> | 
					
						
							|  |  |  |   " and I<> from the list of escapes. | 
					
						
							|  |  |  |   syn clear podFormat | 
					
						
							|  |  |  |   syn region podFormat start="[CLF]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell | 
					
						
							|  |  |  |   syn region podFormat start="[CLF]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " Don't spell-check inside E<>, but ensure that the E< itself isn't | 
					
						
							|  |  |  |   " marked as a spelling mistake. | 
					
						
							|  |  |  |   syn match podFormat   "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " Z<> is a mock formatting code. Ensure Z<> on its own isn't marked as a | 
					
						
							|  |  |  |   " spelling mistake. | 
					
						
							|  |  |  |   syn match podFormat   "Z<>" contains=podEscape,podEscape2,@NoSpell | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " These are required so that whatever is *within* B<...>, I<...>, etc. is | 
					
						
							|  |  |  |   " spell-checked, but not the B, I, ... itself. | 
					
						
							|  |  |  |   syn match podBoldOpen    "B<" contains=@NoSpell | 
					
						
							|  |  |  |   syn match podItalicOpen  "I<" contains=@NoSpell | 
					
						
							|  |  |  |   syn match podNoSpaceOpen "S<" contains=@NoSpell | 
					
						
							|  |  |  |   syn match podIndexOpen   "X<" contains=@NoSpell | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " Same as above but for the << >> syntax. | 
					
						
							|  |  |  |   syn match podBoldAlternativeDelimOpen    "B<< " contains=@NoSpell | 
					
						
							|  |  |  |   syn match podItalicAlternativeDelimOpen  "I<< " contains=@NoSpell | 
					
						
							|  |  |  |   syn match podNoSpaceAlternativeDelimOpen "S<< " contains=@NoSpell | 
					
						
							|  |  |  |   syn match podIndexAlternativeDelimOpen   "X<< " contains=@NoSpell | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " Add support for spell checking text inside B<>, I<>, S<> and X<>. | 
					
						
							|  |  |  |   syn region podBold start="B<[^<]"me=e end=">" oneline contains=podBoldItalic,podBoldOpen | 
					
						
							|  |  |  |   syn region podBoldAlternativeDelim start="B<<\s" end="\s>>" oneline contains=podBoldAlternativeDelimOpen | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   syn region podItalic start="I<[^<]"me=e end=">" oneline contains=podItalicBold,podItalicOpen | 
					
						
							|  |  |  |   syn region podItalicAlternativeDelim start="I<<\s" end="\s>>" oneline contains=podItalicAlternativeDelimOpen | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " Nested bold/italic and vice-versa | 
					
						
							|  |  |  |   syn region podBoldItalic contained start="I<[^<]"me=e end=">" oneline | 
					
						
							|  |  |  |   syn region podItalicBold contained start="B<[^<]"me=e end=">" oneline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   syn region podNoSpace start="S<[^<]"ms=s-2 end=">"me=e oneline contains=podNoSpaceOpen | 
					
						
							|  |  |  |   syn region podNoSpaceAlternativeDelim start="S<<\s"ms=s-2 end="\s>>"me=e oneline contains=podNoSpaceAlternativeDelimOpen | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   syn region podIndex start="X<[^<]"ms=s-2 end=">"me=e oneline contains=podIndexOpen | 
					
						
							|  |  |  |   syn region podIndexAlternativeDelim start="X<<\s"ms=s-2 end="\s>>"me=e oneline contains=podIndexAlternativeDelimOpen | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " Restore this (otherwise B<> is shown as bold inside verbatim) | 
					
						
							|  |  |  |   syn match podVerbatimLine	"^\s.*$" contains=@NoSpell | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " Ensure formatted text can be displayed in headings and items | 
					
						
							|  |  |  |   syn clear podCmdText | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if exists("perl_pod_spellcheck_headings") | 
					
						
							|  |  |  |     syn match podCmdText ".*$" contained contains=podFormat,podBold, | 
					
						
							|  |  |  |           \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim, | 
					
						
							|  |  |  |           \podBoldOpen,podItalicOpen,podBoldAlternativeDelimOpen, | 
					
						
							|  |  |  |           \podItalicAlternativeDelimOpen,podNoSpaceOpen | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     syn match podCmdText ".*$" contained contains=podFormat,podBold, | 
					
						
							|  |  |  |           \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim, | 
					
						
							|  |  |  |           \@NoSpell | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   " Specify how to display these | 
					
						
							|  |  |  |   hi def podBold term=bold cterm=bold gui=bold | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   hi link podBoldAlternativeDelim podBold | 
					
						
							|  |  |  |   hi link podBoldAlternativeDelimOpen podBold | 
					
						
							|  |  |  |   hi link podBoldOpen podBold | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   hi link podNoSpace                 Identifier | 
					
						
							|  |  |  |   hi link podNoSpaceAlternativeDelim Identifier | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   hi link podIndex                   Identifier | 
					
						
							|  |  |  |   hi link podIndexAlternativeDelim   Identifier | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   hi def podItalic term=italic cterm=italic gui=italic | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   hi link podItalicAlternativeDelim podItalic | 
					
						
							|  |  |  |   hi link podItalicAlternativeDelimOpen podItalic | 
					
						
							|  |  |  |   hi link podItalicOpen podItalic | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   hi def podBoldItalic term=italic,bold cterm=italic,bold gui=italic,bold | 
					
						
							|  |  |  |   hi def podItalicBold term=italic,bold cterm=italic,bold gui=italic,bold | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | let b:current_syntax = "pod" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-01 14:50:56 +02:00
										 |  |  | let &cpo = s:cpo_save | 
					
						
							|  |  |  | unlet s:cpo_save | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " vim: ts=8 |