From a4a88381780a400ebb77cee52e7acb35a2a48cc6 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Mon, 6 Oct 2025 06:07:41 +0800 Subject: [PATCH] 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 --- runtime/ftplugin/kerml.vim | 23 +++++++++++++++++++++++ runtime/ftplugin/sysml.vim | 12 ++++++++++++ runtime/lua/vim/filetype.lua | 2 ++ test/old/testdir/test_filetype.vim | 2 ++ 4 files changed, 39 insertions(+) create mode 100644 runtime/ftplugin/kerml.vim create mode 100644 runtime/ftplugin/sysml.vim diff --git a/runtime/ftplugin/kerml.vim b/runtime/ftplugin/kerml.vim new file mode 100644 index 0000000000..91f5f0f127 --- /dev/null +++ b/runtime/ftplugin/kerml.vim @@ -0,0 +1,23 @@ +" Vim filetype plugin +" Language: KerML +" Author: Daumantas Kavolis +" 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 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 new file mode 100644 index 0000000000..d4cdb31811 --- /dev/null +++ b/runtime/ftplugin/sysml.vim @@ -0,0 +1,12 @@ +" Vim filetype plugin +" Language: SysML +" Author: Daumantas Kavolis +" 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 index ab4e0e5eb5..e80d09497c 100644 --- 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 index 2354b63505..5b7bf7535a 100644 --- 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',