pdf.vim 3.5 KB

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