1619
|
1 " Vim syntax file
|
|
2 " Language: PDF
|
|
3 " Maintainer: Tim Pope <vimNOSPAM@tpope.info>
|
|
4 " Last Change: 2007 Dec 16
|
|
5
|
|
6 if exists("b:current_syntax")
|
|
7 finish
|
|
8 endif
|
|
9
|
|
10 if !exists("main_syntax")
|
|
11 let main_syntax = 'pdf'
|
|
12 endif
|
|
13
|
|
14 syn include @pdfXML syntax/xml.vim
|
|
15
|
|
16 syn case match
|
|
17
|
|
18 syn cluster pdfObjects contains=pdfBoolean,pdfConstant,pdfNumber,pdfFloat,pdfName,pdfHexString,pdfString,pdfArray,pdfHash,pdfReference,pdfComment
|
|
19 syn keyword pdfBoolean true false contained
|
|
20 syn keyword pdfConstant null contained
|
|
21 syn match pdfNumber "[+-]\=\<\d\+\>"
|
|
22 syn match pdfFloat "[+-]\=\<\%(\d\+\.\|\d*\.\d\+\)\>" contained
|
|
23
|
|
24 syn match pdfNameError "#\X\|#\x\X\|#00" contained containedin=pdfName
|
|
25 syn match pdfSpecialChar "#\x\x" contained containedin=pdfName
|
|
26 syn match pdfName "/[^[:space:]\[\](){}<>/]*" contained
|
|
27 syn match pdfHexError "[^[:space:][:xdigit:]<>]" contained
|
|
28 "syn match pdfHexString "<\s*\x[^<>]*\x\s*>" contained contains=pdfHexError
|
|
29 "syn match pdfHexString "<\s*\x\=\s*>" contained
|
|
30 syn region pdfHexString matchgroup=pdfDelimiter start="<<\@!" end=">" contained contains=pdfHexError
|
|
31 syn match pdfStringError "\\." contained containedin=pdfString
|
|
32 syn match pdfSpecialChar "\\\%(\o\{1,3\}\|[nrtbf()\\]\)" contained containedin=pdfString
|
|
33 syn region pdfString matchgroup=pdfDelimiter start="\\\@<!(" end="\\\@<!)" contains=pdfString
|
|
34
|
|
35 syn region pdfArray matchgroup=pdfOperator start="\[" end="\]" contains=@pdfObjects contained
|
|
36 syn region pdfHash matchgroup=pdfOperator start="<<" end=">>" contains=@pdfObjects contained
|
|
37 syn match pdfReference "\<\d\+\s\+\d\+\s\+R\>"
|
|
38 "syn keyword pdfOperator R contained containedin=pdfReference
|
|
39
|
|
40 syn region pdfObject matchgroup=pdfType start="\<obj\>" end="\<endobj\>" contains=@pdfObjects
|
|
41 syn region pdfObject matchgroup=pdfType start="\<obj\r\=\n" end="\<endobj\>" contains=@pdfObjects fold
|
|
42
|
|
43 " Do these twice. The ones with only newlines are foldable
|
|
44 syn region pdfStream matchgroup=pdfType start="\<stream\r\=\n" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject
|
|
45 syn region pdfXMLStream matchgroup=pdfType start="\<stream\r\=\n\_s*\%(<?\)\@=" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject contains=@pdfXML
|
|
46 syn region pdfStream matchgroup=pdfType start="\<stream\n" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject fold
|
|
47 syn region pdfXMLStream matchgroup=pdfType start="\<stream\n\_s*\%(<?\)\@=" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject contains=@pdfXML fold
|
|
48
|
|
49 syn region pdfPreProc start="\<xref\%(\r\|\n\|\r\n\)" end="^trailer\%(\r\|\n\|\r\n\)" skipwhite skipempty nextgroup=pdfHash contains=pdfNumber fold
|
|
50 syn keyword pdfPreProc startxref
|
|
51 syn match pdfComment "%.*\%(\r\|\n\)" contains=pdfPreProc
|
|
52 syn match pdfPreProc "^%\%(%EOF\|PDF-\d\.\d\)\(\r\|\n\)"
|
|
53
|
|
54 hi def link pdfOperator Operator
|
|
55 hi def link pdfNumber Number
|
|
56 hi def link pdfFloat Float
|
|
57 hi def link pdfBoolean Boolean
|
|
58 hi def link pdfConstant Constant
|
|
59 hi def link pdfName Identifier
|
|
60 hi def link pdfNameError pdfStringError
|
|
61 hi def link pdfHexString pdfString
|
|
62 hi def link pdfHexError pdfStringError
|
|
63 hi def link pdfString String
|
|
64 hi def link pdfStringError Error
|
|
65 hi def link pdfSpecialChar SpecialChar
|
|
66 hi def link pdfDelimiter Delimiter
|
|
67 hi def link pdfType Type
|
|
68 hi def link pdfReference Tag
|
|
69 hi def link pdfStream NonText
|
|
70 hi def link pdfPreProc PreProc
|
|
71 hi def link pdfComment Comment
|
|
72
|
|
73 let b:current_syntax = "pdf"
|