Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
pkl.vim170 linesDownload Raw Back to syntax
1" Vim syntax file2" Language:		PKL3" Maintainer:		Jan Claußen <jan DOT claussen10 AT web DOT de>4" Last Change:		2025 Sep 245 6if exists("b:current_syntax")7  finish8endif9 10" We use line-continuation here11let s:cpo_save = &cpo12set cpo&vim13 14" Needed to properly highlight multiline strings15syn sync fromstart16 17" PKL supports non-Unicode identifiers. So we modify the keyword character18" class to include them19syn iskeyword @,48-57,192-255,$,_20 21" Declare a variable for identifiers22let s:id  = '\%(\K\+\d*[_$]*\K*\d*[_$]*\)'23 24" --- Decorator ---25exe $'syn match	pklDecorator     "@{s:id}\{{1,}}"'26 27" --- Comments ---28syn match	pklComment	"\/\{2}.*"29syn match	pklDocComment	"\/\{3}.*"30syn region	pklMultiComment	start="\/\*" end="\*\/" keepend fold31 32" --- Strings ---33syn region	pklString	start=+"+ end=+"+ contains=pklEscape,pklUnicodeEscape,pklStringInterpolation oneline34syn region	pklMultiString	start=+"""+ skip=+\\."+ end=+"""+ contains=pklEscape,pklUnicodeEscape keepend fold35syn match	pklEscape	"\\[\\nt0rbaeuf"']" contained containedin=pklString,pklMultiString36syn match	pklUnicode	"[0-9A-Fa-f]\+" contained37 38" --- String interpolation ---39" Standard interpolation40syn region	pklStringInterpolation matchgroup=pklDelimiter41	  \ start=+\\(+ end=+)+ contains=pklNumbers,pklOperator,pklIdentifier,pklFunction,pklParen,pklString42	  \ contained containedin=pklString,pklMultiString oneline43" Unicode escape sequences44syn region	pklUnicodeEscape matchgroup=pklDelimiter45	  \ start=+\\u{+ end=+}+ contains=pklUnicode46	  \ contained containedin=pklString,pklMultiString47 48" --- Basic data types ---49syn keyword	pklType50	  \ UInt UInt8 UInt16 UInt32 UInt64 UInt12851	  \ Int Int8 Int16 Int32 Int64 Int12852	  \ Float53	  \ Number54	  \ String55	  \ Boolean56	  \ Null57	  \ Any58 59syn keyword	pklCollections60	  \ Map Mapping61	  \ List Listing62	  \ Set63 64" --- Custom string delimiters ---65function! s:DefineCustomStringDelimiters(n)66  for x in range(1, a:n)67    exe $'syn region pklString{x}Pound start=+{repeat("#", x)}"+ end=+"{repeat("#", x)}+ contains=pklStringInterpolation{x}Pound,pklEscape{x}Pound oneline'68    exe $'hi def link pklString{x}Pound String'69 70    exe $'syn region pklMultiString{x}Pound start=+{repeat("#", x)}"""+ end=+"""{repeat("#", x)}+ contains=pklStringInterpolation{x}Pound,pklEscape{x}Pound keepend fold'71    exe $'hi def link pklMultiString{x}Pound String'72 73    exe $'syn match pklEscape{x}Pound "\\{repeat("#", x) }[\\nt0rbaeuf"'']" contained containedin=pklString{x}Pound,pklMultiString{x}Pound'74    exe $'hi def link pklEscape{x}Pound SpecialChar'75 76    exe $'syn region pklStringInterpolation{x}Pound matchgroup=pklDelimiter start=+\\{repeat("#", x)}(+ end=+)+ contains=pklNumbers,pklOperator,pklIdentifier,pklFunction,pklParen,pklString contained containedin=pklString{x}Pound,pklMultiString{x}Pound oneline'77 78    exe $'syn region pklUnicodeEscape{x}Pound matchgroup=pklDelimiter start=+\\{repeat("#", x)}u{{+ end=+}}+ contains=pklUnicode contained containedin=pklString{x}Pound,pklMultiString{x}Pound'79    exe $'hi def link pklUnicodeEscape{x}Pound SpecialChar'80  endfor81endfunction82 83call s:DefineCustomStringDelimiters(5)84 85" --- Keywords ---86syn keyword	pklBoolean       false true87syn keyword	pklClass         outer super this module new88syn keyword	pklConditional   if else when89syn keyword	pklConstant      null NaN Infinity90syn keyword	pklException     throw91syn keyword	pklInclude       amends import extends as92syn keyword	pklKeyword       function let out is93syn keyword	pklModifier      abstract const external fixed hidden local open94syn keyword	pklReserved      case delete override protected record switch vararg95syn keyword	pklRepeat        for in96syn keyword	pklSpecial       nothing unknown97syn keyword	pklStatement     trace read98syn keyword	pklStruct        typealias class99 100" Include all unicode letters101exe $'syn match pklIdentifier "{s:id}"'102 103" Explicitely make keywords identifiers with backticks104syn region	pklIdentifierExplicit	start=+`+ end=+`+105 106syn match	pklOperator      ",\||\|+\|*\|->\|?\|-\|==\|=\|!=\|!" contained containedin=pklType107 108" --- Numbers ---109" decimal numbers110syn match	pklNumbers	display transparent "\<\d\|\.\d" contains=pklNumber,pklFloat,pklOctal111syn match	pklNumber	display contained "\d\%(\d\+\)*\>"112" hex numbers113syn match	pklNumber	display contained "0x\x\%('\=\x\+\)\>"114" binary numbers115syn match	pklNumber	display contained "0b[01]\%('\=[01]\+\)\>"116" octal numbers117syn match	pklOctal	display contained "0o\o\+\>"118 119"floating point number, with dot, optional exponent120syn match	pklFloat	display contained "\d\+\.\d\+\%(e[-+]\=\d\+\)\="121"floating point number, starting with a dot, optional exponent122syn match	pklFloat	display contained "\.\d\+\%(e[-+]\=\d\+\)\=\>"123"floating point number, without dot, with exponent124syn match	pklFloat	display contained "\d\+e[-+]\=\d\+\>"125 126" --- Brackets, operators, functions ---127syn region	pklParen	matchgroup=pklBrackets start='(' end=')' contains=ALLBUT,pklUnicode transparent128syn region	pklBracket	matchgroup=pklBrackets start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,pklUnicode transparent129syn region	pklBlock	matchgroup=pklBrackets start="{" end="}" contains=ALLBUT,pklUnicode fold transparent130 131exe $'syn match	pklFunction	"\<\h{s:id}*\>\ze\_s*[?|\*]\?(" contains=pklType'132 133" --- Highlight links ---134hi def link	pklBoolean                       Boolean135hi def link	pklBrackets                      Delimiter136hi def link	pklClass                         Statement137hi def link	pklCollections                   Type138hi def link	pklComment                       Comment139hi def link	pklConditional                   Conditional140hi def link	pklConstant                      Constant141hi def link	pklDecorator                     Special142hi def link	pklDelimiter                     Delimiter143hi def link	pklDocComment                    Comment144hi def link	pklEscape                        SpecialChar145hi def link	pklException                     Exception146hi def link	pklFloat                         Number147hi def link	pklFunction                      Function148hi def link	pklInclude                       Include149hi def link	pklKeyword                       Keyword150hi def link	pklModifier                      StorageClass151hi def link	pklMultiComment                  Comment152hi def link	pklMultiString                   String153hi def link	pklNumber                        Number154hi def link	pklNumbers                       Number155hi def link	pklOctal                         Number156hi def link	pklRepeat                        Repeat157hi def link	pklReserved                      Error158hi def link	pklShebang                       Comment159hi def link	pklSpecial                       Special160hi def link	pklStatement                     Statement161hi def link	pklString                        String162hi def link	pklStruct                        Structure163hi def link	pklType                          Type164hi def link	pklUnicodeEscape                 SpecialChar165 166let b:current_syntax = "pkl"167 168let &cpo = s:cpo_save169unlet s:cpo_save170 
codekingpro/portable-devtools · Team Ai