view runtime/syntax/hlsplaylist.vim @ 34750:b9b335997b26

runtime(yaml): improve syntax highlighting for YAML Commit: https://github.com/vim/vim/commit/cc7597c1edf478ad912d45b27f17175236f9791e Author: itchyny <itchyny@cybozu.co.jp> Date: Mon Apr 1 14:54:36 2024 +0200 runtime(yaml): improve syntax highlighting for YAML - Recognize block scalar style to avoid unexpected highlighting by `yamlFlowString` (fix https://github.com/vim/vim/issues/11517) - Improve performance of `yamlFlowMappingKey` by allowing execution by the NFA engine (fix https://github.com/vim/vim/issues/10730) - It was intentionally disabled before patterns were optimized by `s:SimplifyToAssumeAllPrintable`. - Fix detection of flow style mapping indicators (fix #8234). - Enable highlighting of explicit mapping value indicators and node properties in flow style. - Add syntax highlighting tests closes: #14354 Signed-off-by: itchyny <itchyny@cybozu.co.jp> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Mon, 01 Apr 2024 15:00:10 +0200
parents 1e91e26ceebf
children
line wrap: on
line source

" 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