Skip to content

Commit

Permalink
patch 9.1.0995: filetype: shaderslang files are not detected
Browse files Browse the repository at this point in the history
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: #16387

Signed-off-by: mtvare6 <mtvare6@proton.me>
Signed-off-by: Christian Brabandt <cb@256bit.org>
  • Loading branch information
mTvare6 authored and chrisbra committed Jan 7, 2025
1 parent 0072cee commit 616219f
Show file tree
Hide file tree
Showing 6 changed files with 423 additions and 1 deletion.
2 changes: 2 additions & 0 deletions .github/MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@ runtime/ftplugin/scss.vim @tpope
runtime/ftplugin/sdoc.vim @gpanders
runtime/ftplugin/sed.vim @dkearns
runtime/ftplugin/sh.vim @dkearns
runtime/ftplugin/shaderslang.vim @mTvare6
runtime/ftplugin/slint.vim @ribru17
runtime/ftplugin/snakemake.vim @ribru17
runtime/ftplugin/solidity.vim @cothi
Expand Down Expand Up @@ -590,6 +591,7 @@ runtime/syntax/scss.vim @tpope
runtime/syntax/sdoc.vim @gpanders
runtime/syntax/sed.vim @dkearns
runtime/syntax/shared/debversions.vim @jamessan
runtime/syntax/shaderslang.vim @mTvare6
runtime/syntax/solidity.vim @cothi
runtime/syntax/spec.vim @ignatenkobrain
runtime/syntax/sqloracle.vim @chrisbra
Expand Down
5 changes: 4 additions & 1 deletion runtime/filetype.vim
Original file line number Diff line number Diff line change
Expand Up @@ -2185,7 +2185,7 @@ au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake setf ruby
au BufNewFile,BufRead *.rs setf rust
au BufNewFile,BufRead Cargo.lock,*/.cargo/config,*/.cargo/credentials setf toml

" S-lang (or shader language, or SmallLisp)
" S-lang
au BufNewFile,BufRead *.sl setf slang

" Sage
Expand All @@ -2209,6 +2209,9 @@ au BufNewFile,BufRead *.scala setf scala
" SBT - Scala Build Tool
au BufNewFile,BufRead *.sbt setf sbt

" Slang Shading Language
au BufNewFile,BufRead *.slang setf shaderslang

" Slint
au BufNewFile,BufRead *.slint setf slint

Expand Down
54 changes: 54 additions & 0 deletions runtime/ftplugin/shaderslang.vim
Original file line number Diff line number Diff line change
@@ -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
Loading

0 comments on commit 616219f

Please sign in to comment.
  NODES
COMMUNITY 1
Note 1
Project 3
USERS 1