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