diff --git a/runtime/ftplugin/radvd.vim b/runtime/ftplugin/radvd.vim new file mode 100644 index 0000000000..2af35656da --- /dev/null +++ b/runtime/ftplugin/radvd.vim @@ -0,0 +1,13 @@ +" Vim filetype plugin file +" Language: radvd configuration +" Maintainer: mdspan +" Last Change: 2026 Aug 27 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +setlocal comments=s1:/*,mb:*,ex:*/,://,:# commentstring=#\ %s + +let b:undo_ftplugin = "setl com< cms<" diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua index cd057932dc..a5f3e3822d 100644 --- a/runtime/lua/vim/filetype.lua +++ b/runtime/lua/vim/filetype.lua @@ -1933,6 +1933,7 @@ local filename = { ['.Rprofile'] = 'r', Rprofile = 'r', ['Rprofile.site'] = 'r', + ['radvd.conf'] = 'radvd', ratpoisonrc = 'ratpoison', ['.ratpoisonrc'] = 'ratpoison', inputrc = 'readline', diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim index 23fe19d04e..1bc4a4cd45 100644 --- a/runtime/makemenu.vim +++ b/runtime/makemenu.vim @@ -1,6 +1,6 @@ " Script to define the syntax menu in synmenu.vim " Maintainer: The Vim Project -" Last Change: 2026 Aug 25 +" Last Change: 2026 Aug 26 " Former Maintainer: Bram Moolenaar " This is used by "make menu" in the src directory. @@ -602,6 +602,7 @@ SynMenu R.R.R\ noweb:rnoweb SynMenu R.Racc\ input:racc SynMenu R.Racket:racket SynMenu R.Radiance:radiance +SynMenu R.Radvd\ config:radvd SynMenu R.Raml:raml SynMenu R.Rapid:rapid SynMenu R.Rasi:rasi diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim index e90752e5bb..f583a663a4 100644 --- a/runtime/synmenu.vim +++ b/runtime/synmenu.vim @@ -584,35 +584,36 @@ an 50.100.120 &Syntax.R.R.R\ noweb :cal SetSyn("rnoweb") an 50.100.130 &Syntax.R.Racc\ input :cal SetSyn("racc") an 50.100.140 &Syntax.R.Racket :cal SetSyn("racket") an 50.100.150 &Syntax.R.Radiance :cal SetSyn("radiance") -an 50.100.160 &Syntax.R.Raml :cal SetSyn("raml") -an 50.100.170 &Syntax.R.Rapid :cal SetSyn("rapid") -an 50.100.180 &Syntax.R.Rasi :cal SetSyn("rasi") -an 50.100.190 &Syntax.R.Ratpoison :cal SetSyn("ratpoison") -an 50.100.200 &Syntax.R.RCS.RCS\ log\ output :cal SetSyn("rcslog") -an 50.100.210 &Syntax.R.RCS.RCS\ file :cal SetSyn("rcs") -an 50.100.220 &Syntax.R.Readline\ config :cal SetSyn("readline") -an 50.100.230 &Syntax.R.Rebol :cal SetSyn("rebol") -an 50.100.240 &Syntax.R.ReDIF :cal SetSyn("redif") -an 50.100.250 &Syntax.R.Rego :cal SetSyn("rego") -an 50.100.260 &Syntax.R.Relax\ NG :cal SetSyn("rng") -an 50.100.270 &Syntax.R.Remind :cal SetSyn("remind") -an 50.100.280 &Syntax.R.Relax\ NG\ compact :cal SetSyn("rnc") -an 50.100.290 &Syntax.R.Renderman.Renderman\ Shader\ Lang :cal SetSyn("sl") -an 50.100.300 &Syntax.R.Renderman.Renderman\ Interface\ Bytestream :cal SetSyn("rib") -an 50.100.310 &Syntax.R.Requirements :cal SetSyn("requirements") -an 50.100.320 &Syntax.R.Resolv\.conf :cal SetSyn("resolv") -an 50.100.330 &Syntax.R.Reva\ Forth :cal SetSyn("reva") -an 50.100.340 &Syntax.R.Rexx :cal SetSyn("rexx") -an 50.100.350 &Syntax.R.Robots\.txt :cal SetSyn("robots") -an 50.100.360 &Syntax.R.RockLinux\ package\ desc\. :cal SetSyn("desc") -an 50.100.370 &Syntax.R.Rpcgen :cal SetSyn("rpcgen") -an 50.100.380 &Syntax.R.RPL/2 :cal SetSyn("rpl") -an 50.100.390 &Syntax.R.ReStructuredText :cal SetSyn("rst") -an 50.100.400 &Syntax.R.ReStructuredText\ with\ R\ statements :cal SetSyn("rrst") -an 50.100.410 &Syntax.R.Routeros :cal SetSyn("routeros") -an 50.100.420 &Syntax.R.RTF :cal SetSyn("rtf") -an 50.100.430 &Syntax.R.Ruby :cal SetSyn("ruby") -an 50.100.440 &Syntax.R.Rust :cal SetSyn("rust") +an 50.100.160 &Syntax.R.Radvd\ config :cal SetSyn("radvd") +an 50.100.170 &Syntax.R.Raml :cal SetSyn("raml") +an 50.100.180 &Syntax.R.Rapid :cal SetSyn("rapid") +an 50.100.190 &Syntax.R.Rasi :cal SetSyn("rasi") +an 50.100.200 &Syntax.R.Ratpoison :cal SetSyn("ratpoison") +an 50.100.210 &Syntax.R.RCS.RCS\ log\ output :cal SetSyn("rcslog") +an 50.100.220 &Syntax.R.RCS.RCS\ file :cal SetSyn("rcs") +an 50.100.230 &Syntax.R.Readline\ config :cal SetSyn("readline") +an 50.100.240 &Syntax.R.Rebol :cal SetSyn("rebol") +an 50.100.250 &Syntax.R.ReDIF :cal SetSyn("redif") +an 50.100.260 &Syntax.R.Rego :cal SetSyn("rego") +an 50.100.270 &Syntax.R.Relax\ NG :cal SetSyn("rng") +an 50.100.280 &Syntax.R.Remind :cal SetSyn("remind") +an 50.100.290 &Syntax.R.Relax\ NG\ compact :cal SetSyn("rnc") +an 50.100.300 &Syntax.R.Renderman.Renderman\ Shader\ Lang :cal SetSyn("sl") +an 50.100.310 &Syntax.R.Renderman.Renderman\ Interface\ Bytestream :cal SetSyn("rib") +an 50.100.320 &Syntax.R.Requirements :cal SetSyn("requirements") +an 50.100.330 &Syntax.R.Resolv\.conf :cal SetSyn("resolv") +an 50.100.340 &Syntax.R.Reva\ Forth :cal SetSyn("reva") +an 50.100.350 &Syntax.R.Rexx :cal SetSyn("rexx") +an 50.100.360 &Syntax.R.Robots\.txt :cal SetSyn("robots") +an 50.100.370 &Syntax.R.RockLinux\ package\ desc\. :cal SetSyn("desc") +an 50.100.380 &Syntax.R.Rpcgen :cal SetSyn("rpcgen") +an 50.100.390 &Syntax.R.RPL/2 :cal SetSyn("rpl") +an 50.100.400 &Syntax.R.ReStructuredText :cal SetSyn("rst") +an 50.100.410 &Syntax.R.ReStructuredText\ with\ R\ statements :cal SetSyn("rrst") +an 50.100.420 &Syntax.R.Routeros :cal SetSyn("routeros") +an 50.100.430 &Syntax.R.RTF :cal SetSyn("rtf") +an 50.100.440 &Syntax.R.Ruby :cal SetSyn("ruby") +an 50.100.450 &Syntax.R.Rust :cal SetSyn("rust") an 50.110.100 &Syntax.S-Sm.S-Lang :cal SetSyn("slang") an 50.110.110 &Syntax.S-Sm.Samba\ config :cal SetSyn("samba") an 50.110.120 &Syntax.S-Sm.SAS :cal SetSyn("sas") diff --git a/runtime/syntax/radvd.vim b/runtime/syntax/radvd.vim new file mode 100644 index 0000000000..5bad480176 --- /dev/null +++ b/runtime/syntax/radvd.vim @@ -0,0 +1,66 @@ +" Vim syntax file +" Language: radvd configuration +" Maintainer: mdspan +" Last Change: 2026 Aug 26 +" Reference: radvd.conf(5) + +if exists("b:current_syntax") + finish +endif + +" block keywords +syn keyword radvdBlock interface prefix route clients abro +syn keyword radvdBlock RDNSS DNSSL AdvRASrcAddress nat64prefix + +" interface options +syn keyword radvdOption IgnoreIfMissing AdvSendAdvert UnicastOnly +syn keyword radvdOption AdvRASolicitedUnicast MaxRtrAdvInterval +syn keyword radvdOption MinRtrAdvInterval MinDelayBetweenRAs +syn keyword radvdOption AdvManagedFlag AdvOtherConfigFlag AdvLinkMTU +syn keyword radvdOption AdvReachableTime AdvRetransTimer AdvCurHopLimit +syn keyword radvdOption AdvDefaultLifetime AdvDefaultPreference +syn keyword radvdOption AdvSourceLLAddress AdvHomeAgentFlag +syn keyword radvdOption AdvHomeAgentInfo HomeAgentLifetime +syn keyword radvdOption HomeAgentPreference AdvMobRtrSupportFlag +syn keyword radvdOption AdvIntervalOpt AdvCaptivePortalAPI + +" prefix options +syn keyword radvdOption AdvOnLink AdvAutonomous AdvRouterAddr +syn keyword radvdOption AdvValidLifetime AdvPreferredLifetime +syn keyword radvdOption DeprecatePrefix DecrementLifetimes +syn keyword radvdOption Base6Interface Base6to4Interface + +" route, RDNSS, DNSSL and abro options +syn keyword radvdOption AdvRouteLifetime AdvRoutePreference RemoveRoute +syn keyword radvdOption AdvRDNSSLifetime FlushRDNSS +syn keyword radvdOption AdvDNSSLLifetime FlushDNSSL +syn keyword radvdOption AdvVersionLow AdvVersionHigh AdvValidLifeTime + +" values +syn keyword radvdBool on off +syn keyword radvdPreference low medium high +syn keyword radvdInfinity infinity +syn match radvdNumber "\<\d\+\%(\.\d\+\)\=\>" +syn match radvdIPv6 "\%(\x\{1,4}\)\=\%(:\x\{0,4}\)\+\%(/\d\{1,3}\)\=" + +" delimiters +syn match radvdDelimiter "[{};]" + +" comments +syn keyword radvdTodo contained TODO FIXME XXX NOTE +syn match radvdComment "#.*$" contains=radvdTodo,@Spell +syn match radvdComment "//.*$" contains=radvdTodo,@Spell +syn region radvdComment start="/\*" end="\*/" contains=radvdTodo,@Spell + +hi def link radvdBlock Keyword +hi def link radvdOption Identifier +hi def link radvdBool Boolean +hi def link radvdPreference Constant +hi def link radvdInfinity Constant +hi def link radvdNumber Number +hi def link radvdIPv6 Constant +hi def link radvdDelimiter Delimiter +hi def link radvdTodo Todo +hi def link radvdComment Comment + +let b:current_syntax = "radvd" diff --git a/test/old/testdir/test_filetype.vim b/test/old/testdir/test_filetype.vim index fbcdce64f4..f3e38dc77a 100644 --- a/test/old/testdir/test_filetype.vim +++ b/test/old/testdir/test_filetype.vim @@ -689,6 +689,7 @@ func s:GetFilenameChecks() abort \ 'r': ['file.r', '.Rhistory', '.Rprofile', 'Rprofile', 'Rprofile.site'], \ 'racket': ['file.rkt', 'file.rktd', 'file.rktl'], \ 'radiance': ['file.rad', 'file.mat'], + \ 'radvd': ['radvd.conf', '/etc/radvd.conf', 'any/etc/radvd.conf'], \ 'raku': ['file.pm6', 'file.p6', 'file.t6', 'file.pod6', 'file.raku', 'file.rakumod', 'file.rakudoc', 'file.rakutest'], \ 'raml': ['file.raml'], \ 'rapid': ['file.sysx', 'file.Sysx', 'file.SysX', 'file.SYSx', 'file.SYSX', 'file.modx', 'file.Modx', 'file.ModX', 'file.MODx', 'file.MODX'],