patch 9.1.0876: filetype: openCL files are not recognized
Commit:
https://github.com/vim/vim/commit/e2c27ca8eff7cc8ec852b531d5a7f328a343a761
Author: Wu, Zhenyu <[email protected]>
Date: Tue Nov 19 20:55:25 2024 +0100
patch 9.1.0876: filetype: openCL files are not recognized
Problem: filetype: openCL files are not recognized
Solution: detect '*.cl' files as opencl or lisp filetype,
include a opencl syntax and filetype plugin (Wu, Zhenyu)
closes: #15825
Signed-off-by: Wu, Zhenyu <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS
index bae6c600c..b899db3bd 100644
--- a/.github/MAINTAINERS
+++ b/.github/MAINTAINERS
@@ -225,6 +225,7 @@ runtime/ftplugin/nsis.vim @k-takata
runtime/ftplugin/nu.vim @mrcjkb
runtime/ftplugin/octave.vim @dkearns
runtime/ftplugin/ondir.vim @jparise
+runtime/ftplugin/opencl.vim @Freed-Wu
runtime/ftplugin/openvpn.vim @ObserverOfTime
runtime/ftplugin/pascal.vim @dkearns
runtime/ftplugin/pbtxt.vim @lakshayg
@@ -526,6 +527,7 @@ runtime/syntax/nix.vim @equill
runtime/syntax/nroff.vim @jmarshall
runtime/syntax/nsis.vim @k-takata
runtime/syntax/ondir.vim @jparise
+runtime/syntax/opencl.vim @Freed-Wu
runtime/syntax/openvpn.vim @ObserverOfTime
runtime/syntax/pacmanlog.vim @rpigott
runtime/syntax/pascal.vim @dkearns
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index 214cf6e3e..0936a85ed 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -144,6 +144,14 @@ export def FTcfg()
endif
enddef
+export def FTcl()
+ if join(getline(1, 4), '') =~ '/\*'
+ setf opencl
+ else
+ setf lisp
+ endif
+enddef
+
export def FTcls()
if exists("g:filetype_cls")
exe "setf " .. g:filetype_cls
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index f53e44996..3f93bebb7 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1365,14 +1365,17 @@ au BufNewFile,BufRead lilo.conf setf
lilo
" Lilypond
au BufNewFile,BufRead *.ly,*.ily setf lilypond
-" Lisp (*.el = ELisp, *.cl = Common Lisp)
+" Lisp (*.el = ELisp)
" *.jl was removed, it's also used for Julia, better skip than guess wrong.
if has("fname_case")
- au BufNewFile,BufRead
*.lsp,*.lisp,*.asd,*.el,*.cl,*.L,.emacs,.sawfishrc,*.stsg,*/supertux2/config
setf lisp
+ au BufNewFile,BufRead
*.lsp,*.lisp,*.asd,*.el,*.L,.emacs,.sawfishrc,*.stsg,*/supertux2/config setf
lisp
else
- au BufNewFile,BufRead
*.lsp,*.lisp,*.asd,*.el,*.cl,.emacs,.sawfishrc,*.stsg,*/supertux2/config setf
lisp
+ au BufNewFile,BufRead
*.lsp,*.lisp,*.asd,*.el,.emacs,.sawfishrc,*.stsg,*/supertux2/config setf lisp
endif
+" *.cl = Common Lisp or OpenCL
+au BufNewFile,BufRead *.cl call dist#ft#FTcl()
+
" SBCL implementation of Common Lisp
au BufNewFile,BufRead sbclrc,.sbclrc setf lisp
diff --git a/runtime/ftplugin/opencl.vim b/runtime/ftplugin/opencl.vim
new file mode 100644
index 000000000..e8570fbe9
--- /dev/null
+++ b/runtime/ftplugin/opencl.vim
@@ -0,0 +1,12 @@
+" Vim filetype plugin file
+" Language: OpenCL
+" Maintainer: Wu, Zhenyu <[email protected]>
+" Last Change: 2024 Nov 19
+
+if exists("b:did_ftplugin") | finish | endif
+let b:did_ftplugin = 1
+
+setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,://
+setlocal commentstring=/*\ %s\ */ define& include&
+
+let b:undo_ftplugin = "setl commentstring< comments<"
diff --git a/runtime/syntax/opencl.vim b/runtime/syntax/opencl.vim
new file mode 100644
index 000000000..c237aa30f
--- /dev/null
+++ b/runtime/syntax/opencl.vim
@@ -0,0 +1,13 @@
+" Vim syntax file
+" Language: OpenCL
+" Last Change: 2024 Nov 19
+" Maintainer: Wu, Zhenyu <[email protected]>
+
+if exists("b:current_syntax")
+ finish
+endif
+
+" TODO: support openCL specific keywords
+runtime! syntax/c.vim
+
+let current_syntax = "opencl"
diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim
index eab9d1e28..17d6a44d7 100644
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -425,7 +425,7 @@ def s:GetFilenameChecks(): dict<list<string>>
limits: ['/etc/limits', '/etc/anylimits.conf',
'/etc/anylimits.d/file.conf', '/etc/limits.conf', '/etc/limits.d/file.conf',
'/etc/some-limits.conf', '/etc/some-limits.d/file.conf', 'any/etc/limits',
'any/etc/limits.conf', 'any/etc/limits.d/file.conf',
'any/etc/some-limits.conf', 'any/etc/some-limits.d/file.conf'],
liquidsoap: ['file.liq'],
liquid: ['file.liquid'],
- lisp: ['file.lsp', 'file.lisp', 'file.asd', 'file.el', 'file.cl',
'.emacs', '.sawfishrc', 'sbclrc', '.sbclrc', 'file.stsg',
'any/local/share/supertux2/config'],
+ lisp: ['file.lsp', 'file.lisp', 'file.asd', 'file.el', '.emacs',
'.sawfishrc', 'sbclrc', '.sbclrc', 'file.stsg',
'any/local/share/supertux2/config'],
lite: ['file.lite', 'file.lt'],
litestep: ['/LiteStep/any/file.rc', 'any/LiteStep/any/file.rc'],
logcheck: ['/etc/logcheck/file.d-some/file', '/etc/logcheck/file.d/file',
'any/etc/logcheck/file.d-some/file', 'any/etc/logcheck/file.d/file'],
@@ -1198,6 +1198,22 @@ func Test_cfg_file()
filetype off
endfunc
+func Test_cl_file()
+ filetype on
+
+ call writefile(['/*', ' * Xfile.cl', ' */', 'int f() {}'], 'Xfile.cl')
+ split Xfile.cl
+ call assert_equal('opencl', &filetype)
+ bwipe!
+
+ call writefile(['()'], 'Xfile.cl')
+ split Xfile.cl
+ call assert_equal('lisp', &filetype)
+ bwipe!
+
+ filetype off
+endfunc
+
func Test_d_file()
filetype on
diff --git a/src/version.c b/src/version.c
index ed841229f..99fbbe834 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 876,
/**/
875,
/**/
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1tDUco-007oDQ-Sy%40256bit.org.