mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
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
|