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