neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

ssa.vim (2355B)


      1 " Vim syntax file
      2 " Language:	SubStation Alpha
      3 " Maintainer:	ObserverOfTime <chronobserver@disroot.org>
      4 " Filenames:	*.ass,*.ssa
      5 " Last Change:	2024 Apr 28
      6 
      7 if exists('b:current_syntax')
      8    finish
      9 endif
     10 
     11 " Comments
     12 syn keyword ssaTodo TODO FIXME NOTE XXX contained
     13 syn match ssaComment /^\(;\|!:\).*$/ contains=ssaTodo,@Spell
     14 syn match ssaTextComment /{[^}]*}/ contained contains=@Spell
     15 
     16 " Sections
     17 syn match ssaSection /^\[[a-zA-Z0-9+ ]\+\]$/
     18 
     19 " Headers
     20 syn match ssaHeader /^[^;!:]\+:/ skipwhite nextgroup=ssaField
     21 
     22 " Fields
     23 syn match ssaField /[^,]*\(,\|$\)/ contained skipwhite contains=ssaDelimiter,ssaTime nextgroup=ssaField
     24 
     25 " Time
     26 syn match ssaTime /\d:\d\d:\d\d\.\d\d/ contained
     27 
     28 " Delimiter
     29 syn match ssaDelimiter /,/ contained
     30 
     31 " Dialogue
     32 syn match ssaDialogue /^Dialogue:/ transparent skipwhite nextgroup=ssaDialogueFields
     33 syn match ssaDialogueFields /\([^,]*,\)\{9\}/ contained transparent skipwhite contains=ssaField,ssaDelimiter nextgroup=ssaText
     34 
     35 " Text
     36 syn match ssaText /.*$/ contained contains=@ssaTags,@Spell
     37 syn cluster ssaTags contains=ssaOverrideTag,ssaEscapeChar,ssaTextComment,ssaItalics,ssaBold,ssaUnderline,ssaStrikeout
     38 
     39 " Override tags
     40 syn match ssaOverrideTag /{\\[^}]\+}/ contained contains=@NoSpell
     41 
     42 " Special characters
     43 syn match ssaEscapeChar /\\[nNh{}]/ contained contains=@NoSpell
     44 
     45 " Markup
     46 syn region ssaItalics start=/{\\i1}/ end=/{\\i0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
     47 syn region ssaBold start=/{\\b1}/ end=/{\\b0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
     48 syn region ssaUnderline start=/{\\u1}/ end=/{\\u0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
     49 syn region ssaStrikeout start=/{\\s1}/ end=/{\\s0}/ matchgroup=ssaOverrideTag keepend oneline contained contains=@ssaTags,@Spell
     50 
     51 hi def link ssaDelimiter Delimiter
     52 hi def link ssaComment Comment
     53 hi def link ssaEscapeChar SpecialChar
     54 hi def link ssaField String
     55 hi def link ssaHeader Label
     56 hi def link ssaSection StorageClass
     57 hi def link ssaOverrideTag Special
     58 hi def link ssaTextComment Comment
     59 hi def link ssaTime Number
     60 hi def link ssaTodo Todo
     61 
     62 hi ssaBold cterm=bold gui=bold
     63 hi ssaItalics cterm=italic gui=italic
     64 hi ssaStrikeout cterm=strikethrough gui=strikethrough
     65 hi ssaUnderline cterm=underline gui=underline
     66 
     67 let b:current_syntax = 'ssa'