diff options
author | Christian Clason <c.clason@uni-graz.at> | 2025-01-07 21:32:55 +0100 |
---|---|---|
committer | Christian Clason <ch.clason+github@icloud.com> | 2025-01-08 10:32:45 +0100 |
commit | 561580aba5307cbd4d4a6c00cb39048831109bc7 (patch) | |
tree | 3b6e8001e83645acc79f4c555ef59d536b7a37a1 /runtime/ftplugin/shaderslang.vim | |
parent | 141114c170d6dd9a7457b7822184970fd6ca0a43 (diff) | |
download | rneovim-561580aba5307cbd4d4a6c00cb39048831109bc7.tar.gz rneovim-561580aba5307cbd4d4a6c00cb39048831109bc7.tar.bz2 rneovim-561580aba5307cbd4d4a6c00cb39048831109bc7.zip |
vim-patch:9.1.0995: filetype: shaderslang files are not detected
Problem: filetype: shaderslang files are not detected
Solution: detect '*.slang' files as shaderslang filetype,
include a filetype and syntax script (mtvare6)
Reference:
https://shader-slang.com/
closes: vim/vim#16387
https://github.com/vim/vim/commit/616219f684744bcfad61a53c13166cda9b141dea
Co-authored-by: mtvare6 <mtvare6@proton.me>
Diffstat (limited to 'runtime/ftplugin/shaderslang.vim')
-rw-r--r-- | runtime/ftplugin/shaderslang.vim | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/runtime/ftplugin/shaderslang.vim b/runtime/ftplugin/shaderslang.vim new file mode 100644 index 0000000000..f3d1ab8c1c --- /dev/null +++ b/runtime/ftplugin/shaderslang.vim @@ -0,0 +1,54 @@ +" Vim filetype plugin file +" Language: Slang +" Maintainer: Austin Shijo <epestr@proton.me> +" Last Change: 2025 Jan 05 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Using line continuation here. +let s:cpo_save = &cpo +set cpo-=C + +let b:undo_ftplugin = "setl fo< com< cms< inc<" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +" Set comment string (Slang uses C-style comments) +setlocal commentstring=//\ %s + +" Set 'comments' to format dashed lists in comments +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,:// + +" When the matchit plugin is loaded, this makes the % command skip parens and +" braces in comments properly, and adds support for shader-specific keywords +if exists("loaded_matchit") + " Add common shader control structures + let b:match_words = '{\|^\s*\<\(if\|for\|while\|switch\|struct\|class\)\>:}\|^\s*\<break\>,' .. + \ '^\s*#\s*if\(\|def\|ndef\)\>:^\s*#\s*elif\>:^\s*#\s*else\>:^\s*#\s*endif\>,' .. + \ '\[:\]' + let b:match_skip = 's:comment\|string\|character\|special' + let b:match_ignorecase = 0 + let b:undo_ftplugin ..= " | unlet! b:match_skip b:match_words b:match_ignorecase" +endif + +" Win32 and GTK can filter files in the browse dialog +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "Slang Source Files (*.slang)\t*.slang\n" + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" + endif + let b:undo_ftplugin ..= " | unlet! b:browsefilter" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save |