Commit: patch 9.2.0934: filetype: hlsl files are not recognized
Christian Brabandt <[email protected]> Tue, 11 Aug 2026 20:15:06 +0200
| Newsgroups | gmane.editors.vim.devel |
|---|---|
| Message-ID | <[email protected]> |
patch 9.2.0934: filetype: hlsl files are not recognized Commit: https://github.com/vim/vim/commit/11fca33162ad2e6a6365dbf6202fb1af0f21b7cb Author: Maxim Kim <[email protected]> Date: Tue Aug 11 18:03:33 2026 +0000 patch 9.2.0934: filetype: hlsl files are not recognized Problem: filetype: hlsl files are not recognized Solution: Detect *.hlsl files hlsl filetype, include ftplugin, indent and syntax plugins, update gvim menu (Maxim Kim) Note to Neovim devs: runtime files are in vim9script closes: #20993 Signed-off-by: Maxim Kim <[email protected]> Signed-off-by: Christian Brabandt <[email protected]> diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index 9b221eb7a..93646aba4 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -222,6 +222,7 @@ runtime/ftplugin/haredoc.vim @selenebun runtime/ftplugin/hcl.vim @gpanders runtime/ftplugin/heex.vim @cvincent runtime/ftplugin/hgcommit.vim @k-takata +runtime/ftplugin/hlsl.vim @habamax runtime/ftplugin/hlsplaylist.vim @avidseeker runtime/ftplugin/hog.vim @wtfbbqhax runtime/ftplugin/html.vim @dkearns @@ -410,6 +411,7 @@ runtime/indent/haml.vim @tpope runtime/indent/handlebars.vim @sukima runtime/indent/hare.vim @selenebun runtime/indent/hcl.vim @gpanders +runtime/indent/hlsl.vim @habamax runtime/indent/hog.vim @wtfbbqhax runtime/indent/idlang.vim @dkearns runtime/indent/j.vim @glts @@ -589,6 +591,7 @@ runtime/syntax/help_ru.vim @RestorerZ runtime/syntax/hgcommit.vim @k-takata runtime/syntax/hip.vim @Young-TW runtime/syntax/hitest.vim @lacygoill +runtime/syntax/hlsl.vim @habamax runtime/syntax/hog.vim @wtfbbqhax runtime/syntax/hollywood.vim @sodero runtime/syntax/html.vim @dkearns diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim index bf8a0cc36..c346bd139 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -3,7 +3,7 @@ vim9script # Vim functions for file type detection # # Maintainer: The Vim Project <https://github.com/vim/vim> -# Last Change: 2026 Aug 08 +# Last Change: 2026 Aug 10 # Former Maintainer: Bram Moolenaar <[email protected]> # These functions are moved here from runtime/filetype.vim to make startup @@ -2208,6 +2208,8 @@ const ft_from_ext = { "hbs": "handlebars", # Hare "ha": "hare", + # HLSL + "hlsl": "hlsl", # Haskell "hs": "haskell", "hsc": "haskell", diff --git a/runtime/ftplugin/hlsl.vim b/runtime/ftplugin/hlsl.vim new file mode 100644 index 000000000..4af365ca7 --- /dev/null +++ b/runtime/ftplugin/hlsl.vim @@ -0,0 +1,20 @@ +vim9script +# Language: HLSL (High-Level Shader Language) +# Maintainer: Maxim Kim <[email protected]> +# Last Change: 2026 Aug 11 + +if exists("b:did_ftplugin") + finish +endif +b:did_ftplugin = 1 + +var undo_opts = "setl commentstring< comments<" + +setlocal commentstring=//\ %s +setlocal comments= + +if exists('b:undo_ftplugin') + b:undo_ftplugin ..= "|" .. undo_opts +else + b:undo_ftplugin = undo_opts +endif diff --git a/runtime/indent/hlsl.vim b/runtime/indent/hlsl.vim new file mode 100644 index 000000000..f4428536b --- /dev/null +++ b/runtime/indent/hlsl.vim @@ -0,0 +1,14 @@ +vim9script +# Language: HLSL (High-Level Shader Language) +# Maintainer: Maxim Kim <[email protected]> +# Last Change: 2026 Aug 11 + +if exists('b:did_indent') + finish +endif +b:did_indent = 1 + +setlocal autoindent cindent +setlocal cinoptions& + +b:undo_indent = 'setl ai< ci< cino<' diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim index 98d88e622..3497a773f 100644 --- a/runtime/makemenu.vim +++ b/runtime/makemenu.vim @@ -330,6 +330,7 @@ SynMenu HIJK.Hex\ dump.XXD:xxd SynMenu HIJK.Hex\ dump.Intel\ MCS51:hex SynMenu HIJK.Hg\ commit:hgcommit SynMenu HIJK.HIP:hip +SynMenu HIJK.HLSL:hlsl SynMenu HIJK.HLSPlaylist:hlsplaylist SynMenu HIJK.Hollywood:hollywood SynMenu HIJK.HTML.HTML:html diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim index b2259b930..93bd5731c 100644 --- a/runtime/synmenu.vim +++ b/runtime/synmenu.vim @@ -2,7 +2,7 @@ " This file is normally sourced from menu.vim. " " Maintainer: The Vim Project <https://github.com/vim/vim> -" Last Change: 2026 Aug 06 +" Last Change: 2026 Aug 11 " Former Maintainer: Bram Moolenaar <[email protected]> " Define the SetSyn function, used for the Syntax menu entries. @@ -311,75 +311,76 @@ an 50.50.220 &Syntax.HIJK.Hex\ dump.XXD :cal SetSyn("xxd")<CR> an 50.50.230 &Syntax.HIJK.Hex\ dump.Intel\ MCS51 :cal SetSyn("hex")<CR> an 50.50.240 &Syntax.HIJK.Hg\ commit :cal SetSyn("hgcommit")<CR> an 50.50.250 &Syntax.HIJK.HIP :cal SetSyn("hip")<CR> -an 50.50.260 &Syntax.HIJK.HLSPlaylist :cal SetSyn("hlsplaylist")<CR> -an 50.50.270 &Syntax.HIJK.Hollywood :cal SetSyn("hollywood")<CR> -an 50.50.280 &Syntax.HIJK.HTML.HTML :cal SetSyn("html")<CR> -an 50.50.290 &Syntax.HIJK.HTML.HTMLAngular :cal SetSyn("htmlangular")<CR> -an 50.50.300 &Syntax.HIJK.HTML.HTML\ with\ M4 :cal SetSyn("htmlm4")<CR> -an 50.50.310 &Syntax.HIJK.HTML.HTML\ with\ Ruby\ (eRuby) :cal SetSyn("eruby")<CR> -an 50.50.320 &Syntax.HIJK.HTML.Cheetah\ HTML\ template :cal SetSyn("htmlcheetah")<CR> -an 50.50.330 &Syntax.HIJK.HTML.Django\ HTML\ template :cal SetSyn("htmldjango")<CR> -an 50.50.340 &Syntax.HIJK.HTML.Vue.js\ HTML\ template :cal SetSyn("vuejs")<CR> -an 50.50.350 &Syntax.HIJK.HTML.HTML/OS :cal SetSyn("htmlos")<CR> -an 50.50.360 &Syntax.HIJK.HTML.XHTML :cal SetSyn("xhtml")<CR> -an 50.50.370 &Syntax.HIJK.Host\.conf :cal SetSyn("hostconf")<CR> -an 50.50.380 &Syntax.HIJK.Hosts\ access :cal SetSyn("hostsaccess")<CR> -an 50.50.390 &Syntax.HIJK.Hyper\ Builder :cal SetSyn("hb")<CR> -an 50.50.400 &Syntax.HIJK.Hyprlang :cal SetSyn("hyprlang")<CR> -an 50.50.420 &Syntax.HIJK.I3Config :cal SetSyn("i3config")<CR> -an 50.50.430 &Syntax.HIJK.Icewm\ menu :cal SetSyn("icemenu")<CR> -an 50.50.440 &Syntax.HIJK.Icon :cal SetSyn("icon")<CR> -an 50.50.450 &Syntax.HIJK.IDL\Generic\ IDL :cal SetSyn("idl")<CR> -an 50.50.460 &Syntax.HIJK.IDL\Microsoft\ IDL :cal SetSyn("msidl")<CR> -an 50.50.470 &Syntax.HIJK.Idris2 :cal SetSyn("idris2")<CR> -an 50.50.480 &Syntax.HIJK.Indent\ profile :cal SetSyn("indent")<CR> -an 50.50.490 &Syntax.HIJK.Inform :cal SetSyn("inform")<CR> -an 50.50.500 &Syntax.HIJK.Informix\ 4GL :cal SetSyn("fgl")<CR> -an 50.50.510 &Syntax.HIJK.Initng :cal SetSyn("initng")<CR> -an 50.50.520 &Syntax.HIJK.Inittab :cal SetSyn("inittab")<CR> -an 50.50.530 &Syntax.HIJK.Inno\ setup :cal SetSyn("iss")<CR> -an 50.50.540 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ dat :cal SetSyn("upstreamdat")<CR> -an 50.50.550 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ log :cal SetSyn("upstreamlog")<CR> -an 50.50.560 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ rpt :cal SetSyn("upstreamrpt")<CR> -an 50.50.570 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ Install\ log :cal SetSyn("upstreaminstalllog")<CR> -an 50.50.580 &Syntax.HIJK.Innovation\ Data\ Processing.Usserver\ log :cal SetSyn("usserverlog")<CR> -an 50.50.590 &Syntax.HIJK.Innovation\ Data\ Processing.USW2KAgt\ log :cal SetSyn("usw2kagtlog")<CR> -an 50.50.600 &Syntax.HIJK.InstallShield\ script :cal SetSyn("ishd")<CR> -an 50.50.610 &Syntax.HIJK.Interactive\ Data\ Lang :cal SetSyn("idlang")<CR> -an 50.50.620 &Syntax.HIJK.Ipkg :cal SetSyn("ipkg")<CR> -an 50.50.630 &Syntax.HIJK.IPfilter :cal SetSyn("ipfilter")<CR> -an 50.50.650 &Syntax.HIJK.J :cal SetSyn("j")<CR> -an 50.50.660 &Syntax.HIJK.JAL :cal SetSyn("jal")<CR> -an 50.50.670 &Syntax.HIJK.JAM :cal SetSyn("jam")<CR> -an 50.50.680 &Syntax.HIJK.Jargon :cal SetSyn("jargon")<CR> -an 50.50.690 &Syntax.HIJK.Java.Java :cal SetSyn("java")<CR> -an 50.50.700 &Syntax.HIJK.Java.JavaCC :cal SetSyn("javacc")<CR> -an 50.50.710 &Syntax.HIJK.Java.Java\ Server\ Pages :cal SetSyn("jsp")<CR> -an 50.50.720 &Syntax.HIJK.Java.Java\ Properties :cal SetSyn("jproperties")<CR> -an 50.50.730 &Syntax.HIJK.JavaScript :cal SetSyn("javascript")<CR> -an 50.50.740 &Syntax.HIJK.JavaScriptReact :cal SetSyn("javascriptreact")<CR> -an 50.50.750 &Syntax.HIJK.Jess :cal SetSyn("jess")<CR> -an 50.50.760 &Syntax.HIJK.Jgraph :cal SetSyn("jgraph")<CR> -an 50.50.770 &Syntax.HIJK.Jinja :cal SetSyn("jinja")<CR> -an 50.50.780 &Syntax.HIJK.JJdescription :cal SetSyn("jjdescription")<CR> -an 50.50.790 &Syntax.HIJK.Jovial :cal SetSyn("jovial")<CR> -an 50.50.800 &Syntax.HIJK.JQ :cal SetSyn("jq")<CR> -an 50.50.810 &Syntax.HIJK.JSON.JSON :cal SetSyn("json")<CR> -an 50.50.820 &Syntax.HIJK.JSON.JSON-LD :cal SetSyn("jsonld")<CR> -an 50.50.830 &Syntax.HIJK.JSON.JSON5 :cal SetSyn("json5")<CR> -an 50.50.840 &Syntax.HIJK.JSON.JSONC :cal SetSyn("jsonc")<CR> -an 50.50.850 &Syntax.HIJK.Julia :cal SetSyn("julia")<CR> -an 50.50.860 &Syntax.HIJK.Just :cal SetSyn("just")<CR> -an 50.50.880 &Syntax.HIJK.Karel :cal SetSyn("karel")<CR> -an 50.50.890 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig")<CR> -an 50.50.900 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript")<CR> -an 50.50.910 &Syntax.HIJK.Kdl :cal SetSyn("kdl")<CR> -an 50.50.920 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt")<CR> -an 50.50.930 &Syntax.HIJK.Kitty :cal SetSyn("kitty")<CR> -an 50.50.940 &Syntax.HIJK.Kivy :cal SetSyn("kivy")<CR> -an 50.50.950 &Syntax.HIJK.KixTart :cal SetSyn("kix")<CR> -an 50.50.960 &Syntax.HIJK.Kotlin :cal SetSyn("kotlin")<CR> -an 50.50.970 &Syntax.HIJK.Krl :cal SetSyn("krl")<CR> +an 50.50.260 &Syntax.HIJK.HLSL :cal SetSyn("hlsl")<CR> +an 50.50.270 &Syntax.HIJK.HLSPlaylist :cal SetSyn("hlsplaylist")<CR> +an 50.50.280 &Syntax.HIJK.Hollywood :cal SetSyn("hollywood")<CR> +an 50.50.290 &Syntax.HIJK.HTML.HTML :cal SetSyn("html")<CR> +an 50.50.300 &Syntax.HIJK.HTML.HTMLAngular :cal SetSyn("htmlangular")<CR> +an 50.50.310 &Syntax.HIJK.HTML.HTML\ with\ M4 :cal SetSyn("htmlm4")<CR> +an 50.50.320 &Syntax.HIJK.HTML.HTML\ with\ Ruby\ (eRuby) :cal SetSyn("eruby")<CR> +an 50.50.330 &Syntax.HIJK.HTML.Cheetah\ HTML\ template :cal SetSyn("htmlcheetah")<CR> +an 50.50.340 &Syntax.HIJK.HTML.Django\ HTML\ template :cal SetSyn("htmldjango")<CR> +an 50.50.350 &Syntax.HIJK.HTML.Vue.js\ HTML\ template :cal SetSyn("vuejs")<CR> +an 50.50.360 &Syntax.HIJK.HTML.HTML/OS :cal SetSyn("htmlos")<CR> +an 50.50.370 &Syntax.HIJK.HTML.XHTML :cal SetSyn("xhtml")<CR> +an 50.50.380 &Syntax.HIJK.Host\.conf :cal SetSyn("hostconf")<CR> +an 50.50.390 &Syntax.HIJK.Hosts\ access :cal SetSyn("hostsaccess")<CR> +an 50.50.400 &Syntax.HIJK.Hyper\ Builder :cal SetSyn("hb")<CR> +an 50.50.410 &Syntax.HIJK.Hyprlang :cal SetSyn("hyprlang")<CR> +an 50.50.430 &Syntax.HIJK.I3Config :cal SetSyn("i3config")<CR> +an 50.50.440 &Syntax.HIJK.Icewm\ menu :cal SetSyn("icemenu")<CR> +an 50.50.450 &Syntax.HIJK.Icon :cal SetSyn("icon")<CR> +an 50.50.460 &Syntax.HIJK.IDL\Generic\ IDL :cal SetSyn("idl")<CR> +an 50.50.470 &Syntax.HIJK.IDL\Microsoft\ IDL :cal SetSyn("msidl")<CR> +an 50.50.480 &Syntax.HIJK.Idris2 :cal SetSyn("idris2")<CR> +an 50.50.490 &Syntax.HIJK.Indent\ profile :cal SetSyn("indent")<CR> +an 50.50.500 &Syntax.HIJK.Inform :cal SetSyn("inform")<CR> +an 50.50.510 &Syntax.HIJK.Informix\ 4GL :cal SetSyn("fgl")<CR> +an 50.50.520 &Syntax.HIJK.Initng :cal SetSyn("initng")<CR> +an 50.50.530 &Syntax.HIJK.Inittab :cal SetSyn("inittab")<CR> +an 50.50.540 &Syntax.HIJK.Inno\ setup :cal SetSyn("iss")<CR> +an 50.50.550 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ dat :cal SetSyn("upstreamdat")<CR> +an 50.50.560 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ log :cal SetSyn("upstreamlog")<CR> +an 50.50.570 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ rpt :cal SetSyn("upstreamrpt")<CR> +an 50.50.580 &Syntax.HIJK.Innovation\ Data\ Processing.Upstream\ Install\ log :cal SetSyn("upstreaminstalllog")<CR> +an 50.50.590 &Syntax.HIJK.Innovation\ Data\ Processing.Usserver\ log :cal SetSyn("usserverlog")<CR> +an 50.50.600 &Syntax.HIJK.Innovation\ Data\ Processing.USW2KAgt\ log :cal SetSyn("usw2kagtlog")<CR> +an 50.50.610 &Syntax.HIJK.InstallShield\ script :cal SetSyn("ishd")<CR> +an 50.50.620 &Syntax.HIJK.Interactive\ Data\ Lang :cal SetSyn("idlang")<CR> +an 50.50.630 &Syntax.HIJK.Ipkg :cal SetSyn("ipkg")<CR> +an 50.50.640 &Syntax.HIJK.IPfilter :cal SetSyn("ipfilter")<CR> +an 50.50.660 &Syntax.HIJK.J :cal SetSyn("j")<CR> +an 50.50.670 &Syntax.HIJK.JAL :cal SetSyn("jal")<CR> +an 50.50.680 &Syntax.HIJK.JAM :cal SetSyn("jam")<CR> +an 50.50.690 &Syntax.HIJK.Jargon :cal SetSyn("jargon")<CR> +an 50.50.700 &Syntax.HIJK.Java.Java :cal SetSyn("java")<CR> +an 50.50.710 &Syntax.HIJK.Java.JavaCC :cal SetSyn("javacc")<CR> +an 50.50.720 &Syntax.HIJK.Java.Java\ Server\ Pages :cal SetSyn("jsp")<CR> +an 50.50.730 &Syntax.HIJK.Java.Java\ Properties :cal SetSyn("jproperties")<CR> +an 50.50.740 &Syntax.HIJK.JavaScript :cal SetSyn("javascript")<CR> +an 50.50.750 &Syntax.HIJK.JavaScriptReact :cal SetSyn("javascriptreact")<CR> +an 50.50.760 &Syntax.HIJK.Jess :cal SetSyn("jess")<CR> +an 50.50.770 &Syntax.HIJK.Jgraph :cal SetSyn("jgraph")<CR> +an 50.50.780 &Syntax.HIJK.Jinja :cal SetSyn("jinja")<CR> +an 50.50.790 &Syntax.HIJK.JJdescription :cal SetSyn("jjdescription")<CR> +an 50.50.800 &Syntax.HIJK.Jovial :cal SetSyn("jovial")<CR> +an 50.50.810 &Syntax.HIJK.JQ :cal SetSyn("jq")<CR> +an 50.50.820 &Syntax.HIJK.JSON.JSON :cal SetSyn("json")<CR> +an 50.50.830 &Syntax.HIJK.JSON.JSON-LD :cal SetSyn("jsonld")<CR> +an 50.50.840 &Syntax.HIJK.JSON.JSON5 :cal SetSyn("json5")<CR> +an 50.50.850 &Syntax.HIJK.JSON.JSONC :cal SetSyn("jsonc")<CR> +an 50.50.860 &Syntax.HIJK.Julia :cal SetSyn("julia")<CR> +an 50.50.870 &Syntax.HIJK.Just :cal SetSyn("just")<CR> +an 50.50.890 &Syntax.HIJK.Karel :cal SetSyn("karel")<CR> +an 50.50.900 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig")<CR> +an 50.50.910 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript")<CR> +an 50.50.920 &Syntax.HIJK.Kdl :cal SetSyn("kdl")<CR> +an 50.50.930 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt")<CR> +an 50.50.940 &Syntax.HIJK.Kitty :cal SetSyn("kitty")<CR> +an 50.50.950 &Syntax.HIJK.Kivy :cal SetSyn("kivy")<CR> +an 50.50.960 &Syntax.HIJK.KixTart :cal SetSyn("kix")<CR> +an 50.50.970 &Syntax.HIJK.Kotlin :cal SetSyn("kotlin")<CR> +an 50.50.980 &Syntax.HIJK.Krl :cal SetSyn("krl")<CR> an 50.60.100 &Syntax.L.Lace :cal SetSyn("lace")<CR> an 50.60.110 &Syntax.L.LambdaProlog :cal SetSyn("lprolog")<CR> an 50.60.120 &Syntax.L.Latte :cal SetSyn("latte")<CR> diff --git a/runtime/syntax/hlsl.vim b/runtime/syntax/hlsl.vim new file mode 100644 index 000000000..e6fe49a96 --- /dev/null +++ b/runtime/syntax/hlsl.vim @@ -0,0 +1,116 @@ +vim9script +# Language: HLSL (High-Level Shader Language) +# Maintainer: Maxim Kim <[email protected]> +# Last Change: 2026 Aug 11 +# https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-reference + +if exists("b:current_syntax") + finish +endif + +var expanded_types = [ + 'float', 'double', 'int', 'uint', 'bool', + 'min10float', 'min16float', 'min12int', 'min16int', 'min16uint', + 'float16_t', 'int16_t', 'uint16_t', 'uint64_t', 'int64_t', + 'vector', 'matrix' +] + +# float1, float2 ... +# ... +# int1x1, int1x2 ... +exe $"syn keyword hlslType {expanded_types->join()}" +range(1, 4)->foreach((_, idxN) => { + var typeN = expanded_types->mapnew((_, type) => type .. idxN)->join() + exe $"syn keyword hlslType {typeN}" + range(1, 4)->foreach((_, idxM) => { + var typeNxM = expanded_types + ->mapnew((_, type) => $"{type}{idxN}x{idxM}")->join() + exe $"syn keyword hlslType {typeNxM}" + }) +}) +syn keyword hlslType void dword half string texture sampler +syn keyword hlslType extern nointerpolation precise shared groupshared static +syn keyword hlslType uniform export extern volatile const row_major column_major +syn keyword hlslType struct linear centroid noperspective sample +syn keyword hlslType typedef namespace class interface enum +syn keyword hlslType snorm unorm +syn keyword hlslType vertexfragment pixelfragment +syn keyword hlslType point line lineadj triangle triangleadj +syn keyword hlslType technique10 technique11 +syn keyword hlslType cbuffer tbuffer +syn keyword hlslType Buffer StructuredBuffer AppendStructuredBuffer +syn keyword hlslType ByteAddressBuffer ConsumeStructuredBuffer +syn keyword hlslType Texture1D Texture2D Texture3D Texture1DArray Texture2DArray +syn keyword hlslType Texture2DMS Texture2DMSArray +syn keyword hlslType TextureCube TextureCubeArray +syn keyword hlslType RWBuffer RWByteAddressBuffer RWStructuredBuffer +syn keyword hlslType RWTexture1D RWTexture1DArray RWTexture2D +syn keyword hlslType RWTexture2DArray RWTexture3D +syn keyword hlslType PointStream LineStream TriangleStream +syn keyword hlslType SamplerState SamplerComparisonState +syn keyword hlslType RasterizerState DepthStencilState BlendState +syn keyword hlslType OutputPatch InputPatch +# TODO: only recognize it in function parameter list +syn keyword hlslType in out inout + +# legacy +syn keyword hlslType sampler2D + +syn keyword hlslCondition if else switch case default +syn keyword hlslRepeat while for do break continue +syn keyword hlslStatement return discard compile compile_fragment packoffset +syn keyword hlslStatement pass register fxgroup +syn keyword hlslConstant true false NULL + +# simplified Semantic highlighting: SV_POSITION, SV_TARGET etc +syn match hlslSemantic /:\s*\zs\k\+/ + +# POSITIONT BINORMAL[n] BLENDINDICES[n] BLENDWEIGHT[n] COLOR[n] NORMAL[n] +# POSITION[n] PSIZE[n] TANGENT[n] TEXCOORD[n] + +# SV_ClipDistance[n] SV_CullDistance[n] SV_Coverage SV_Depth +# SV_DepthGreaterEqual SV_DepthLessEqual SV_DispatchThreadID SV_DomainLocation +# SV_GroupID SV_GroupIndex SV_GroupThreadID SV_GSInstanceID SV_InnerCoverage +# SV_InsideTessFactor SV_InstanceID SV_IsFrontFace SV_OutputControlPointID +# SV_Position SV_PrimitiveID SV_RenderTargetArrayIndex SV_SampleIndex +# SV_StencilRef SV_Target[n], where 0 <= n <= 7 SV_TessFactor SV_VertexID +# SV_ViewportArrayIndex SV_ShadingRate + +syntax match hlslInteger " -?<[0-9]+%(_[0-9]+)*[uUlL]?>" display +syntax match hlslFloat " -?<[0-9]+%(_[0-9]+)*%(\.[0-9]+%(_[0-9]+)*)%([eE][+-]=[0-9]+%(_[0-9]+)*)=[hHfFlL]?>" display +syntax match hlslHex " <0[xX][0-9A-Fa-f]+%(_[0-9A-Fa-f]+)*[uUlL]?>" display +syntax match hlslOct " <0[oO][0-7]+%(_[0-7]+)*[uUlL]?>" display +syntax cluster hlslNumber contains=hlslInteger,hlslFloat,hlslHex,hlslOct + +syntax region hlslChar start=+'+ skip=+\\\|\'+ end=+'+ contains=hlslEscape +syntax region hlslString start=+"+ skip=+\\\|\'+ end=+"+ contains=hlslEscape +syntax match hlslEscape display contained /\\([abefnrtv\'"]\|\o\{3}\|x\x\{2}\|u\x\{4}\|U\x\{8}\)/ + +# TODO: better preproc +syn region hlslPreProc start=/^\s*\zs#/ end=/$/ contains=@hlslNumber,hlslString,hlslChar,@hlslComment + +syntax match hlslTodo "TODO" contained +syntax match hlslTodo "XXX" contained +syntax match hlslTodo "FIXME" contained +syntax region hlslLineComment start=/\/\// end=/$/ contains=@Spell,hlslTodo +syntax region hlslBlockComment start=/\/\*/ end=/\*\// contains=@Spell,hlslTodo +syntax cluster hlslComment contains=hlslLineComment,hlslBlockComment + +hi def link hlslType Type +hi def link hlslStatement Statement +hi def link hlslCondition Statement +hi def link hlslRepeat Statement +hi def link hlslInteger Number +hi def link hlslFloat Float +hi def link hlslHex Number +hi def link hlslOct Number +hi def link hlslLineComment Comment +hi def link hlslBlockComment Comment +hi def link hlslTodo Todo +hi def link hlslChar Character +hi def link hlslString String +hi def link hlslEscape Special +hi def link hlslPreProc PreProc +hi def link hlslSemantic Identifier + +b:current_syntax = "hlsl" diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 893e3d8d0..0b8f5a2a4 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -381,6 +381,7 @@ def s:GetFilenameChecks(): dict<list<string>> hgcommit: ['hg-editor-file.txt'], hip: ['file.hip'], hjson: ['file.hjson'], + hlsl: ['file.hlsl'], hlsplaylist: ['file.m3u', 'file.m3u8'], hog: ['file.hog', 'snort.conf', 'vision.conf'], hollywood: ['file.hws'], diff --git a/src/version.c b/src/version.c index 81a7d542c..3401ba30b 100644 --- a/src/version.c +++ b/src/version.c @@ -763,6 +763,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 934, /**/ 933, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1wtr0E-007URX-Ha%40256bit.org.