From fdac54d7bbf6d68a8bf741e734b86d0f1998ac86 Mon Sep 17 00:00:00 2001 From: Kirill Morozov Date: Tue, 19 Nov 2024 20:36:22 +0100 Subject: [PATCH] patch 9.1.0874: filetype: karel files are not detected Problem: filetype: karel files are not detected Solution: detect '*.kl' files as karel filetype, include syntax and filetype plugin (Kirill Morozov) closes: #16075 Co-authored-by: KnoP-01 Signed-off-by: Kirill Morozov Signed-off-by: Christian Brabandt --- .github/MAINTAINERS | 1 + runtime/filetype.vim | 8 ++- runtime/ftplugin/karel.vim | 16 +++++ runtime/syntax/karel.vim | 112 ++++++++++++++++++++++++++++++++++ src/testdir/test_filetype.vim | 1 + src/version.c | 2 + 6 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 runtime/ftplugin/karel.vim create mode 100644 runtime/syntax/karel.vim diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index 68ef76e442..bae6c600c0 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -492,6 +492,7 @@ runtime/syntax/json.vim @vito-c runtime/syntax/jsonc.vim @izhakjakov runtime/syntax/julia.vim @carlobaldassi runtime/syntax/jq.vim @vito-c +runtime/syntax/karel.vim @kirillmorozov runtime/syntax/kconfig.vim @chrisbra runtime/syntax/kivy.vim @prophittcorey runtime/syntax/kotlin.vim @udalov diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 02313fea7f..8ab97ebd8d 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: The Vim Project -" Last Change: 2024 May 31 +" Last Change: 2024 Nov 19 " Former Maintainer: Bram Moolenaar " Listen very carefully, I will say this only once @@ -1262,6 +1262,12 @@ au BufNewFile,BufRead *.jl setf julia " Just au BufNewFile,BufRead [jJ]ustfile,.justfile,*.just setf just +" KAREL +au BufNewFile,BufRead *.kl setf karel +if has("fname_case") + au BufNewFile,BufRead *.KL setf karel +endif + " KDL au BufNewFile,BufRead *.kdl setf kdl diff --git a/runtime/ftplugin/karel.vim b/runtime/ftplugin/karel.vim new file mode 100644 index 0000000000..8ccc2b32ce --- /dev/null +++ b/runtime/ftplugin/karel.vim @@ -0,0 +1,16 @@ +" Vim filetype plugin file +" Language: KAREL +" Last Change: 2024-11-18 +" Maintainer: Kirill Morozov +" Credits: Patrick Meiser-Knosowski for the initial implementation. + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +setlocal comments=:-- +setlocal commentstring=--\ %s +setlocal suffixesadd+=.kl,.KL + +let b:undo_ftplugin = "setlocal com< cms< sua<" diff --git a/runtime/syntax/karel.vim b/runtime/syntax/karel.vim new file mode 100644 index 0000000000..85c78529e6 --- /dev/null +++ b/runtime/syntax/karel.vim @@ -0,0 +1,112 @@ +" Vim syntax file +" Language: KAREL +" Last Change: 2024-11-17 +" Maintainer: Kirill Morozov +" Credits: Jay Strybis for the initial implementation and Patrick Knosowski +" for a couple of fixes. + +if exists("b:current_syntax") + finish +endif + +" KAREL is case-insensitive +syntax case ignore + +" Identifiers +syn match karelIdentifier /[a-zA-Z0-9_]\+/ +hi def link karelIdentifier Identifier + +" Constants +syn keyword karelConstant CR +syn region karelString start="'" end="'" +syn match karelReal /\d\+\.\d\+/ +syn match karelInteger /\d\+/ +syn keyword karelBoolean true false +hi def link karelConstant Constant +hi def link karelString String +hi def link karelInteger Number +hi def link karelReal Float +hi def link karelBoolean Boolean + +" Directives +syn match karelDirective /%[a-zA-Z]\+/ +hi def link karelDirective PreProc + +" Operators +syn keyword karelOperator AND OR NOT DIV MOD +syn match karelOperator /[\+\-\*\/\<\=\>\:\#\@]/ +syn match karelOperator /<=/ +syn match karelOperator />=/ +syn match karelOperator /<>/ +syn match karelOperator />=> jsp: ['file.jsp'], julia: ['file.jl'], just: ['justfile', 'Justfile', '.justfile', 'config.just'], + karel: ['file.kl', 'file.KL'], kconfig: ['Kconfig', 'Kconfig.debug', 'Kconfig.file', 'Config.in', 'Config.in.host'], kdl: ['file.kdl'], kivy: ['file.kv'], diff --git a/src/version.c b/src/version.c index 51276a9fb1..99a145a94d 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 */ +/**/ + 874, /**/ 873, /**/