commit a4a88381780a400ebb77cee52e7acb35a2a48cc6
parent 6fefdd6b5308781749ea6ba0c8bc6f797fc1ac98
Author: zeertzjq <zeertzjq@outlook.com>
Date: Mon, 6 Oct 2025 06:07:41 +0800
vim-patch:9.1.1829: filetype: KerML and SysML files are not recognized (#36042)
Problem: filetype: KerML and SysML files are not recognized
Solution: Detect *.kerml as kerml filetype, detect *.sysml as sysml
filetype, include a kerml and sysml filetype plugin
(Daumantas Kavolis)
closes: vim/vim#18476
https://github.com/vim/vim/commit/b73ccf7ff0326ece9c942127c1965475ad71b78a
Co-authored-by: Daumantas Kavolis <daumantas.kavolis@sensmetry.com>
Diffstat:
4 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/runtime/ftplugin/kerml.vim b/runtime/ftplugin/kerml.vim
@@ -0,0 +1,23 @@
+" Vim filetype plugin
+" Language: KerML
+" Author: Daumantas Kavolis <daumantas.kavolis@sensmetry.com>
+" Last Change: 2025-10-03
+
+" 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
+
+" Set 'comments' to format dashed lists in comments.
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1://*,mb:*,ex:*/,:///,://
+setlocal commentstring=//*\ %s\ */
+
+" Set 'formatoptions' to break comment lines but not other lines,
+" and insert the comment leader when hitting <CR> or using "o"
+setlocal formatoptions-=t
+setlocal formatoptions+=croql
+
+let b:undo_ftplugin = 'setlocal comments< commentstring< formatoptions<'
diff --git a/runtime/ftplugin/sysml.vim b/runtime/ftplugin/sysml.vim
@@ -0,0 +1,12 @@
+" Vim filetype plugin
+" Language: SysML
+" Author: Daumantas Kavolis <daumantas.kavolis@sensmetry.com>
+" Last Change: 2025-10-03
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin")
+ finish
+endif
+
+" Behaves mostly just like KerML, only differs by keywords
+runtime! ftplugin/kerml.vim
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
@@ -672,6 +672,7 @@ local extension = {
kl = 'karel',
KL = 'karel',
kdl = 'kdl',
+ kerml = 'kerml',
kv = 'kivy',
kix = 'kix',
kts = 'kotlin',
@@ -1216,6 +1217,7 @@ local extension = {
sys = detect.sys,
Sys = detect.sys,
SYS = detect.sys,
+ sysml = 'sysml',
svh = 'systemverilog',
sv = 'systemverilog',
cmm = 'trace32',
diff --git a/test/old/testdir/test_filetype.vim b/test/old/testdir/test_filetype.vim
@@ -420,6 +420,7 @@ func s:GetFilenameChecks() abort
\ 'karel': ['file.kl', 'file.KL'],
\ 'kconfig': ['Kconfig', 'Kconfig.debug', 'Kconfig.file', 'Config.in', 'Config.in.host'],
\ 'kdl': ['file.kdl'],
+ \ 'kerml': ['file.kerml'],
\ 'kitty': ['kitty.conf', '~/.config/kitty/colorscheme.conf'],
\ 'kivy': ['file.kv'],
\ 'kix': ['file.kix'],
@@ -778,6 +779,7 @@ func s:GetFilenameChecks() abort
\ 'swiftgyb': ['file.swift.gyb'],
\ 'swig': ['file.swg', 'file.swig'],
\ 'sysctl': ['/etc/sysctl.conf', '/etc/sysctl.d/file.conf', 'any/etc/sysctl.conf', 'any/etc/sysctl.d/file.conf'],
+ \ 'sysml': ['file.sysml'],
\ 'systemd': ['any/systemd/file.automount', 'any/systemd/file.dnssd',
\ 'any/systemd/file.link', 'any/systemd/file.mount',
\ 'any/systemd/file.netdev', 'any/systemd/file.network',