diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim index 1bc4a4cd45..bdf68ec726 100644 --- a/runtime/makemenu.vim +++ b/runtime/makemenu.vim @@ -732,6 +732,7 @@ SynMenu Sn-Sy.Structurizr:structurizr SynMenu Sn-Sy.Stylus:stylus SynMenu Sn-Sy.Subversion\ commit:svn SynMenu Sn-Sy.Sudoers:sudoers +SynMenu Sn-Sy.Svelt:svelte SynMenu Sn-Sy.SVG:svg SynMenu Sn-Sy.Swayconfig:swayconfig SynMenu Sn-Sy.Swift.Swift:swift diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim index f583a663a4..1a4db5b1e2 100644 --- a/runtime/synmenu.vim +++ b/runtime/synmenu.vim @@ -712,15 +712,16 @@ an 50.120.510 &Syntax.Sn-Sy.Structurizr :cal SetSyn("structurizr") an 50.120.520 &Syntax.Sn-Sy.Stylus :cal SetSyn("stylus") an 50.120.530 &Syntax.Sn-Sy.Subversion\ commit :cal SetSyn("svn") an 50.120.540 &Syntax.Sn-Sy.Sudoers :cal SetSyn("sudoers") -an 50.120.550 &Syntax.Sn-Sy.SVG :cal SetSyn("svg") -an 50.120.560 &Syntax.Sn-Sy.Swayconfig :cal SetSyn("swayconfig") -an 50.120.570 &Syntax.Sn-Sy.Swift.Swift :cal SetSyn("swift") -an 50.120.580 &Syntax.Sn-Sy.Swift.GYB :cal SetSyn("swiftgyb") -an 50.120.590 &Syntax.Sn-Sy.Swig :cal SetSyn("swig") -an 50.120.600 &Syntax.Sn-Sy.Symbian\ meta-makefile :cal SetSyn("mmp") -an 50.120.610 &Syntax.Sn-Sy.Sysctl\.conf :cal SetSyn("sysctl") -an 50.120.620 &Syntax.Sn-Sy.Systemd :cal SetSyn("systemd") -an 50.120.630 &Syntax.Sn-Sy.SystemVerilog :cal SetSyn("systemverilog") +an 50.120.550 &Syntax.Sn-Sy.Svelt :cal SetSyn("svelte") +an 50.120.560 &Syntax.Sn-Sy.SVG :cal SetSyn("svg") +an 50.120.570 &Syntax.Sn-Sy.Swayconfig :cal SetSyn("swayconfig") +an 50.120.580 &Syntax.Sn-Sy.Swift.Swift :cal SetSyn("swift") +an 50.120.590 &Syntax.Sn-Sy.Swift.GYB :cal SetSyn("swiftgyb") +an 50.120.600 &Syntax.Sn-Sy.Swig :cal SetSyn("swig") +an 50.120.610 &Syntax.Sn-Sy.Symbian\ meta-makefile :cal SetSyn("mmp") +an 50.120.620 &Syntax.Sn-Sy.Sysctl\.conf :cal SetSyn("sysctl") +an 50.120.630 &Syntax.Sn-Sy.Systemd :cal SetSyn("systemd") +an 50.120.640 &Syntax.Sn-Sy.SystemVerilog :cal SetSyn("systemverilog") an 50.130.100 &Syntax.T.TADS :cal SetSyn("tads") an 50.130.110 &Syntax.T.Tags :cal SetSyn("tags") an 50.130.120 &Syntax.T.TAK.TAK\ compare :cal SetSyn("takcmp") diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim index 912f99a951..1b35ec67c9 100644 --- a/runtime/syntax/javascript.vim +++ b/runtime/syntax/javascript.vim @@ -142,6 +142,13 @@ let b:current_syntax = "javascript" if main_syntax == 'javascript' unlet main_syntax endif + +" Svelte 5 runes ($state, $derived, $props, ...) inside .svelte.js modules. +if expand('%:t') =~# '\.svelte\.js$' + syntax match svelteRune "\$\w\+" containedin=ALL + highlight default link svelteRune Statement +endif + let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/syntax/svelte.vim b/runtime/syntax/svelte.vim new file mode 100644 index 0000000000..2a89909a9e --- /dev/null +++ b/runtime/syntax/svelte.vim @@ -0,0 +1,120 @@ +" Vim syntax file +" Language: Svelte +" Maintainer: 231tr0n +" Last Change: 2026 Sep 03 + +" Quit if a syntax file was already loaded. +if exists("b:current_syntax") + finish +endif + +" Svelte is HTML-ish markup with embedded { } expressions, CSS and +" JavaScript/TypeScript. Rather than reusing html.vim's keyword-based tag and +" attribute lists (which would also make /