74 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:	PDF
 | |
| " Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
 | |
| " Last Change:	2007 Dec 16
 | |
| 
 | |
| if exists("b:current_syntax")
 | |
|     finish
 | |
| endif
 | |
| 
 | |
| if !exists("main_syntax")
 | |
|     let main_syntax = 'pdf'
 | |
| endif
 | |
| 
 | |
| syn include @pdfXML syntax/xml.vim
 | |
| 
 | |
| syn case match
 | |
| 
 | |
| syn cluster pdfObjects contains=pdfBoolean,pdfConstant,pdfNumber,pdfFloat,pdfName,pdfHexString,pdfString,pdfArray,pdfHash,pdfReference,pdfComment
 | |
| syn keyword pdfBoolean  true false contained
 | |
| syn keyword pdfConstant null       contained
 | |
| syn match   pdfNumber "[+-]\=\<\d\+\>"
 | |
| syn match   pdfFloat   "[+-]\=\<\%(\d\+\.\|\d*\.\d\+\)\>" contained
 | |
| 
 | |
| syn match   pdfNameError "#\X\|#\x\X\|#00" contained containedin=pdfName
 | |
| syn match   pdfSpecialChar "#\x\x" contained containedin=pdfName
 | |
| syn match   pdfName   "/[^[:space:]\[\](){}<>/]*"   contained
 | |
| syn match   pdfHexError  "[^[:space:][:xdigit:]<>]" contained
 | |
| "syn match   pdfHexString "<\s*\x[^<>]*\x\s*>"    contained contains=pdfHexError
 | |
| "syn match   pdfHexString "<\s*\x\=\s*>"          contained
 | |
| syn region  pdfHexString matchgroup=pdfDelimiter start="<<\@!" end=">" contained contains=pdfHexError
 | |
| syn match   pdfStringError "\\."      contained containedin=pdfString
 | |
| syn match   pdfSpecialChar "\\\%(\o\{1,3\}\|[nrtbf()\\]\)"  contained containedin=pdfString
 | |
| syn region  pdfString matchgroup=pdfDelimiter start="\\\@<!(" end="\\\@<!)" contains=pdfString
 | |
| 
 | |
| syn region  pdfArray  matchgroup=pdfOperator start="\[" end="\]" contains=@pdfObjects contained
 | |
| syn region  pdfHash   matchgroup=pdfOperator start="<<" end=">>" contains=@pdfObjects contained
 | |
| syn match   pdfReference "\<\d\+\s\+\d\+\s\+R\>"
 | |
| "syn keyword pdfOperator R contained containedin=pdfReference
 | |
| 
 | |
| syn region  pdfObject matchgroup=pdfType start="\<obj\>"     end="\<endobj\>" contains=@pdfObjects
 | |
| syn region  pdfObject matchgroup=pdfType start="\<obj\r\=\n" end="\<endobj\>" contains=@pdfObjects fold
 | |
| 
 | |
| " Do these twice.  The ones with only newlines are foldable
 | |
| syn region  pdfStream matchgroup=pdfType start="\<stream\r\=\n" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject
 | |
| syn region  pdfXMLStream matchgroup=pdfType start="\<stream\r\=\n\_s*\%(<?\)\@=" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject contains=@pdfXML
 | |
| syn region  pdfStream matchgroup=pdfType start="\<stream\n" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject fold
 | |
| syn region  pdfXMLStream matchgroup=pdfType start="\<stream\n\_s*\%(<?\)\@=" end="endstream\s*\%(\r\|\n\|\r\n\)" contained containedin=pdfObject contains=@pdfXML fold
 | |
| 
 | |
| syn region  pdfPreProc start="\<xref\%(\r\|\n\|\r\n\)" end="^trailer\%(\r\|\n\|\r\n\)" skipwhite skipempty nextgroup=pdfHash contains=pdfNumber fold
 | |
| syn keyword pdfPreProc startxref
 | |
| syn match   pdfComment  "%.*\%(\r\|\n\)" contains=pdfPreProc
 | |
| syn match   pdfPreProc  "^%\%(%EOF\|PDF-\d\.\d\)\(\r\|\n\)"
 | |
| 
 | |
| hi def link pdfOperator     Operator
 | |
| hi def link pdfNumber       Number
 | |
| hi def link pdfFloat        Float
 | |
| hi def link pdfBoolean      Boolean
 | |
| hi def link pdfConstant     Constant
 | |
| hi def link pdfName         Identifier
 | |
| hi def link pdfNameError    pdfStringError
 | |
| hi def link pdfHexString    pdfString
 | |
| hi def link pdfHexError     pdfStringError
 | |
| hi def link pdfString       String
 | |
| hi def link pdfStringError  Error
 | |
| hi def link pdfSpecialChar  SpecialChar
 | |
| hi def link pdfDelimiter    Delimiter
 | |
| hi def link pdfType         Type
 | |
| hi def link pdfReference    Tag
 | |
| hi def link pdfStream       NonText
 | |
| hi def link pdfPreProc      PreProc
 | |
| hi def link pdfComment      Comment
 | |
| 
 | |
| let b:current_syntax = "pdf"
 |