vim-patch:9.2.0235: filetype: wks files are not recognized (#38451)

Problem:  filetype: wks files are not recognized.
Solution: Detect *.wks, *.wks.in and *.wks.inc as wks filetype,
          include a filetype and syntax plugin (Anakin Childerhose)

The OpenEmbedded Image Creation tool, `wic` uses wic kickstarter files
to define image partition and bootloader layouts.
wks files can end with .wks, .wks.in for templated wks files, and
.wks.inc for including in other .wks files.

The autocmd for *.wks.inc needs to come before *.inc in
runtime/ftdetect.vim

Reference:
https://docs.yoctoproject.org/ref-manual/kickstart.html#openembedded-kickstart-wks-reference
https://git.openembedded.org/openembedded-core/tree/scripts/lib/wic/canned-wks

closes: vim/vim#19796

8c116bbe79
This commit is contained in:
Anakin Childerhose
2026-03-23 19:40:03 -04:00
committed by GitHub
parent 416e542992
commit 1de1c08210
4 changed files with 47 additions and 0 deletions

14
runtime/ftplugin/wks.vim Normal file
View File

@@ -0,0 +1,14 @@
" Vim filetype plugin file
" Language: OpenEmbedded Image Creator (WIC) Kickstarter files wks
" Maintainer: Anakin Childerhose <anakin@childerhose.ca>
" Last Change: 2026 Mar 23
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
setlocal comments=:#
setlocal commentstring=#\ %s
let b:undo_ftplugin = 'setlocal com< cms<'

View File

@@ -1380,6 +1380,7 @@ local extension = {
wgsl = 'wgsl',
wbt = 'winbatch',
wit = 'wit',
wks = 'wks',
wml = 'wml',
wsf = 'wsh',
wsc = 'wsh',
@@ -2781,6 +2782,8 @@ local pattern = {
['%.t%.html$'] = 'tilde',
['%.vhdl_[0-9]'] = starsetf('vhdl'),
['vimrc'] = starsetf('vim'),
['%.wks%.in$'] = 'wks',
['%.wks%.inc$'] = 'wks',
['/Xresources/'] = starsetf('xdefaults'),
['/app%-defaults/'] = starsetf('xdefaults'),
['^Xresources'] = starsetf('xdefaults'),

29
runtime/syntax/wks.vim Normal file
View File

@@ -0,0 +1,29 @@
" Vim syntax file
" Language: OpenEmbedded Image Creator (WIC) Kickstarter files wks
" Maintainer: Anakin Childerhose <anakin@childerhose.ca>
" Last Change: 2026 Mar 23
if exists("b:current_syntax")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
syn case match
syn match wksComment "#.*$"
syn match wksCommand "\<bootloader\>"
syn match wksCommand "\<\(part\|partition\)\>" skipwhite nextgroup=wksMountPoint
syn match wksMountPoint "\(/[^ \t]*\|swap\)" contained
syn match wksOption "--[a-zA-Z_-]\+"
hi def link wksComment Comment
hi def link wksCommand Statement
hi def link wksMountPoint Identifier
hi def link wksOption Special
let b:current_syntax = "wks"
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -963,6 +963,7 @@ func s:GetFilenameChecks() abort
\ 'wgsl': ['file.wgsl'],
\ 'winbatch': ['file.wbt'],
\ 'wit': ['file.wit'],
\ 'wks': ['file.wks', 'file.wks.in', 'file.wks.inc'],
\ 'wml': ['file.wml'],
\ 'wsh': ['file.wsf', 'file.wsc'],
\ 'wsml': ['file.wsml'],