forked from aniani/vim
		
	
		
			
				
	
	
		
			121 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" Vim syntax file
 | 
						|
" Language: HLS Playlist
 | 
						|
" Maintainer: Benoît Ryder <benoit@ryder.fr>
 | 
						|
" Latest Revision: 2022-09-23
 | 
						|
 | 
						|
if exists("b:current_syntax")
 | 
						|
  finish
 | 
						|
endif
 | 
						|
 | 
						|
let s:cpo_save = &cpo
 | 
						|
set cpo&vim
 | 
						|
 | 
						|
" Comment line
 | 
						|
syn match  hlsplaylistComment  "^#\(EXT\)\@!.*$"
 | 
						|
" Segment URL
 | 
						|
syn match  hlsplaylistUrl      "^[^#].*$"
 | 
						|
 | 
						|
" Unknown tags, assume an attribute list or nothing
 | 
						|
syn match  hlsplaylistTagUnknown    "^#EXT[^:]*$"
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagUnknown    start="^#EXT[^:]*\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
 | 
						|
" Basic Tags
 | 
						|
syn match  hlsplaylistTagHeader     "^#EXTM3U$"
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader     start="^#EXT-X-VERSION\ze:"  end="$" keepend contains=hlsplaylistValueInt
 | 
						|
 | 
						|
" Media or Multivariant Playlist Tags
 | 
						|
syn match  hlsplaylistTagHeader     "^#EXT-X-INDEPENDENT-SEGMENTS$"
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagDelimiter  start="^#EXT-X-START\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-DEFINE\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
 | 
						|
" Media Playlist Tags
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader     start="^#EXT-X-TARGETDURATION\ze:"  end="$" keepend contains=hlsplaylistValueFloat
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader     start="^#EXT-X-MEDIA-SEQUENCE\ze:"  end="$" keepend contains=hlsplaylistValueInt
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader     start="^#EXT-X-DISCONTINUITY-SEQUENCE\ze:"  end="$" keepend contains=hlsplaylistValueInt
 | 
						|
syn match  hlsplaylistTagDelimiter  "^#EXT-X-ENDLIST$"
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader     start="^#EXT-X-PLAYLIST-TYPE\ze:"  end="$" keepend contains=hlsplaylistAttributeEnum
 | 
						|
syn match  hlsplaylistTagStandard   "^#EXT-X-I-FRAME-ONLY$"
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader     start="^#EXT-X-PART-INF\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagHeader     start="^#EXT-X-SERVER-CONTROL\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
 | 
						|
" Media Segment Tags
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement  start="^#EXTINF\ze:"  end="$" keepend contains=hlsplaylistValueFloat,hlsplaylistExtInfDesc
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-BYTERANGE\ze:"  end="$" keepend contains=hlsplaylistValueInt
 | 
						|
syn match  hlsplaylistTagDelimiter  "^#EXT-X-DISCONTINUITY$"
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-KEY\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-MAP\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-PROGRAM-DATE-TIME\ze:"  end="$" keepend contains=hlsplaylistValueDateTime
 | 
						|
syn match  hlsplaylistTagDelimiter  "^#EXT-X-GAP$"
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-BITRATE\ze:"  end="$" keepend contains=hlsplaylistValueFloat
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement  start="^#EXT-X-PART\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
 | 
						|
" Media Metadata Tags
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-DATERANGE\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-SKIP\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement  start="^#EXT-X-PRELOAD-HINT\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement  start="^#EXT-X-RENDITION-REPORT\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
 | 
						|
" Multivariant Playlist Tags
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-MEDIA\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement  start="^#EXT-X-STREAM-INF\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStatement  start="^#EXT-X-I-FRAME-STREAM-INF\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-SESSION-DATA\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-SESSION-KEY\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
syn region hlsplaylistTagLine matchgroup=hlsplaylistTagStandard   start="^#EXT-X-CONTENT-STEERING\ze:"  end="$" keepend contains=hlsplaylistAttributeList
 | 
						|
 | 
						|
" Attributes
 | 
						|
syn region hlsplaylistAttributeList  start=":" end="$" keepend contained
 | 
						|
  \ contains=hlsplaylistAttributeName,hlsplaylistAttributeInt,hlsplaylistAttributeHex,hlsplaylistAttributeFloat,hlsplaylistAttributeString,hlsplaylistAttributeEnum,hlsplaylistAttributeResolution,hlsplaylistAttributeUri
 | 
						|
" Common attributes
 | 
						|
syn match  hlsplaylistAttributeName        "[A-Za-z-]\+\ze=" contained
 | 
						|
syn match  hlsplaylistAttributeEnum        "=\zs[A-Za-z][A-Za-z0-9-_]*" contained
 | 
						|
syn match  hlsplaylistAttributeString      +=\zs"[^"]*"+ contained
 | 
						|
syn match  hlsplaylistAttributeInt         "=\zs\d\+" contained
 | 
						|
syn match  hlsplaylistAttributeFloat       "=\zs-\?\d*\.\d*" contained
 | 
						|
syn match  hlsplaylistAttributeHex         "=\zs0[xX]\d*" contained
 | 
						|
syn match  hlsplaylistAttributeResolution  "=\zs\d\+x\d\+" contained
 | 
						|
" Allow different highligting for URI attributes
 | 
						|
syn region hlsplaylistAttributeUri matchgroup=hlsplaylistAttributeName    start="\zsURI\ze" end="\(,\|$\)" contained contains=hlsplaylistUriQuotes
 | 
						|
syn region hlsplaylistUriQuotes    matchgroup=hlsplaylistAttributeString  start=+"+ end=+"+ keepend contained contains=hlsplaylistUriValue
 | 
						|
syn match  hlsplaylistUriValue             /[^" ]\+/ contained
 | 
						|
" Individual values
 | 
						|
syn match  hlsplaylistValueInt             "[0-9]\+" contained
 | 
						|
syn match  hlsplaylistValueFloat           "\(\d\+\|\d*\.\d*\)" contained
 | 
						|
syn match  hlsplaylistExtInfDesc           ",\zs.*$" contained
 | 
						|
syn match  hlsplaylistValueDateTime        "\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d\(\.\d*\)\?\(Z\|\d\d:\?\d\d\)$" contained
 | 
						|
 | 
						|
 | 
						|
" Define default highlighting
 | 
						|
 | 
						|
hi def link hlsplaylistComment  Comment
 | 
						|
hi def link hlsplaylistUrl      NONE
 | 
						|
 | 
						|
hi def link hlsplaylistTagHeader     Special
 | 
						|
hi def link hlsplaylistTagStandard   Define
 | 
						|
hi def link hlsplaylistTagDelimiter  Delimiter
 | 
						|
hi def link hlsplaylistTagStatement  Statement
 | 
						|
hi def link hlsplaylistTagUnknown    Special
 | 
						|
 | 
						|
hi def link hlsplaylistUriQuotes            String
 | 
						|
hi def link hlsplaylistUriValue             Underlined
 | 
						|
hi def link hlsplaylistAttributeQuotes      String
 | 
						|
hi def link hlsplaylistAttributeName        Identifier
 | 
						|
hi def link hlsplaylistAttributeInt         Number
 | 
						|
hi def link hlsplaylistAttributeHex         Number
 | 
						|
hi def link hlsplaylistAttributeFloat       Float
 | 
						|
hi def link hlsplaylistAttributeString      String
 | 
						|
hi def link hlsplaylistAttributeEnum        Constant
 | 
						|
hi def link hlsplaylistAttributeResolution  Constant
 | 
						|
hi def link hlsplaylistValueInt             Number
 | 
						|
hi def link hlsplaylistValueFloat           Float
 | 
						|
hi def link hlsplaylistExtInfDesc           String
 | 
						|
hi def link hlsplaylistValueDateTime        Constant
 | 
						|
 | 
						|
 | 
						|
let b:current_syntax = "hlsplaylist"
 | 
						|
 | 
						|
let &cpo = s:cpo_save
 | 
						|
unlet s:cpo_save
 | 
						|
 | 
						|
" vim: sts=2 sw=2 et
 |