diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index bae6c600c0..b899db3bd3 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 214cf6e3ec..0936a85ede 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 f53e449964..3f93bebb75 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 0000000000..e8570fbe95 --- /dev/null +++ b/runtime/ftplugin/opencl.vim @@ -0,0 +1,12 @@ +" Vim filetype plugin file +" Language: OpenCL +" Maintainer: Wu, Zhenyu +" 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 0000000000..c237aa30f9 --- /dev/null +++ b/runtime/syntax/opencl.vim @@ -0,0 +1,13 @@ +" Vim syntax file +" Language: OpenCL +" Last Change: 2024 Nov 19 +" Maintainer: Wu, Zhenyu + +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 eab9d1e28d..17d6a44d7c 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -425,7 +425,7 @@ def s:GetFilenameChecks(): dict> 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 ed841229f8..99fbbe8345 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, /**/