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