xref: /vim-8.2.3635/runtime/syntax/pod.vim (revision 00a927d6)
1" Vim syntax file
2" Language:	Perl POD format
3" Maintainer:	Scott Bigham <[email protected]>
4" Last Change:	2007 Jan 21
5
6" To add embedded POD documentation highlighting to your syntax file, add
7" the commands:
8"
9"   syn include @Pod <sfile>:p:h/pod.vim
10"   syn region myPOD start="^=pod" start="^=head" end="^=cut" keepend contained contains=@Pod
11"
12" and add myPod to the contains= list of some existing region, probably a
13" comment.  The "keepend" flag is needed because "=cut" is matched as a
14" pattern in its own right.
15
16
17" Remove any old syntax stuff hanging around (this is suppressed
18" automatically by ":syn include" if necessary).
19" For version 5.x: Clear all syntax items
20" For version 6.x: Quit when a syntax file was already loaded
21if version < 600
22  syntax clear
23elseif exists("b:current_syntax")
24  finish
25endif
26
27" POD commands
28syn match podCommand	"^=head[1234]"	nextgroup=podCmdText contains=@NoSpell
29syn match podCommand	"^=item"	nextgroup=podCmdText contains=@NoSpell
30syn match podCommand	"^=over"	nextgroup=podOverIndent skipwhite contains=@NoSpell
31syn match podCommand	"^=back" contains=@NoSpell
32syn match podCommand	"^=cut" contains=@NoSpell
33syn match podCommand	"^=pod" contains=@NoSpell
34syn match podCommand	"^=for"		nextgroup=podForKeywd skipwhite contains=@NoSpell
35syn match podCommand	"^=begin"	nextgroup=podForKeywd skipwhite contains=@NoSpell
36syn match podCommand	"^=end"		nextgroup=podForKeywd skipwhite contains=@NoSpell
37
38" Text of a =head1, =head2 or =item command
39syn match podCmdText	".*$" contained contains=podFormat,@NoSpell
40
41" Indent amount of =over command
42syn match podOverIndent	"\d\+" contained contains=@NoSpell
43
44" Formatter identifier keyword for =for, =begin and =end commands
45syn match podForKeywd	"\S\+" contained contains=@NoSpell
46
47" An indented line, to be displayed verbatim
48syn match podVerbatimLine	"^\s.*$" contains=@NoSpell
49
50" Inline textual items handled specially by POD
51syn match podSpecial	"\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell
52syn match podSpecial	"[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell
53
54" Special formatting sequences
55syn region podFormat	start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell
56syn region podFormat	start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell
57syn match  podFormat	"Z<>"
58syn match  podFormat	"E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell
59syn match  podEscape	"\I\i*>"me=e-1 contained contains=@NoSpell
60syn match  podEscape2	"\d\+>"me=e-1 contained contains=@NoSpell
61
62" Define the default highlighting.
63" For version 5.7 and earlier: only when not done already
64" For version 5.8 and later: only when an item doesn't have highlighting yet
65if version >= 508 || !exists("did_pod_syntax_inits")
66  if version < 508
67    let did_pod_syntax_inits = 1
68    command -nargs=+ HiLink hi link <args>
69  else
70    command -nargs=+ HiLink hi def link <args>
71  endif
72
73  HiLink podCommand		Statement
74  HiLink podCmdText		String
75  HiLink podOverIndent		Number
76  HiLink podForKeywd		Identifier
77  HiLink podFormat		Identifier
78  HiLink podVerbatimLine	PreProc
79  HiLink podSpecial		Identifier
80  HiLink podEscape		String
81  HiLink podEscape2		Number
82
83  delcommand HiLink
84endif
85
86let b:current_syntax = "pod"
87
88" vim: ts=8
89