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