aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2022-04-07 09:09:08 +0200
committerGitHub <noreply@github.com>2022-04-07 09:09:08 +0200
commitf85f4e25d2d5edf46fcb950ced028685fe95a7d7 (patch)
tree13e18de6162879f53e14df3f99430274c088133f
parent233014f92b5d4d5bf8a6f019241aafd1b05dd383 (diff)
downloadrneovim-f85f4e25d2d5edf46fcb950ced028685fe95a7d7.tar.gz
rneovim-f85f4e25d2d5edf46fcb950ced028685fe95a7d7.tar.bz2
rneovim-f85f4e25d2d5edf46fcb950ced028685fe95a7d7.zip
vim-patch:8.2.4701: Kuka Robot Language files not recognized (#18012)
Problem: Kuka Robot Language files not recognized. Solution: Recognize *.src and *.dat files. (Patrick Meiser-Knosowski, closes vim/vim#10096) https://github.com/vim/vim/commit/3ad2090316edc85e93094bba7af64f9991cc7f85
-rw-r--r--runtime/autoload/dist/ft.vim17
-rw-r--r--runtime/filetype.vim5
-rw-r--r--runtime/lua/vim/filetype.lua3
-rw-r--r--src/nvim/testdir/test_filetype.vim49
4 files changed, 74 insertions, 0 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim
index c52def1051..959f4be896 100644
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -899,6 +899,23 @@ func dist#ft#FTtf()
setf tf
endfunc
+" Determine if a *.src file is Kuka Robot Language
+func dist#ft#FTsrc()
+ if exists("g:filetype_src")
+ exe "setf " .. g:filetype_src
+ elseif getline(nextnonblank(1)) =~? '^\s*\%(&\w\+\|\%(global\s\+\)\?def\>\)'
+ setf krl
+ endif
+endfunc
+
+" Determine if a *.dat file is Kuka Robot Language
+func dist#ft#FTdat()
+ if exists("g:filetype_dat")
+ exe "setf " .. g:filetype_dat
+ elseif getline(nextnonblank(1)) =~? '^\s*\%(&\w\+\|defdat\>\)'
+ setf krl
+ endif
+endfunc
" Restore 'cpoptions'
let &cpo = s:cpo_save
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 2f4b03606c..d7a3ec182f 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -947,6 +947,11 @@ au BufNewFile,BufRead *.jl setf julia
" Kixtart
au BufNewFile,BufRead *.kix setf kix
+" Kuka Robot Language
+au BufNewFile,BufRead *.src\c call dist#ft#FTsrc()
+au BufNewFile,BufRead *.dat\c call dist#ft#FTdat()
+au BufNewFile,BufRead *.sub\c setf krl
+
" Kimwitu[++]
au BufNewFile,BufRead *.k setf kwt
diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua
index 65edaed530..0466057d72 100644
--- a/runtime/lua/vim/filetype.lua
+++ b/runtime/lua/vim/filetype.lua
@@ -1427,6 +1427,9 @@ local pattern = {
return "git"
end
end,
+ [".*%.[Dd][Aa][Tt]"] = function() vim.fn["dist#ft#FTdat"]() end,
+ [".*%.[Ss][Rr][Cc]"] = function() vim.fn["dist#ft#FTsrc"]() end,
+ [".*%.[Ss][Uu][Bb]"] = "krl",
-- Neovim only
[".*/queries/.*%.scm"] = "query", -- tree-sitter queries
-- END PATTERN
diff --git a/src/nvim/testdir/test_filetype.vim b/src/nvim/testdir/test_filetype.vim
index 720c003ace..a31ff50a48 100644
--- a/src/nvim/testdir/test_filetype.vim
+++ b/src/nvim/testdir/test_filetype.vim
@@ -290,6 +290,7 @@ let s:filename_checks = {
\ 'kivy': ['file.kv'],
\ 'kix': ['file.kix'],
\ 'kotlin': ['file.kt', 'file.ktm', 'file.kts'],
+ \ 'krl': ['file.sub', 'file.Sub', 'file.SUB'],
\ 'kscript': ['file.ks'],
\ 'kwt': ['file.k'],
\ 'lace': ['file.ace', 'file.ACE'],
@@ -842,6 +843,30 @@ func Test_d_file()
filetype off
endfunc
+func Test_dat_file()
+ filetype on
+
+ call writefile(['&ACCESS'], 'datfile.dat')
+ split datfile.dat
+ call assert_equal('krl', &filetype)
+ bwipe!
+ call delete('datfile.dat')
+
+ call writefile([' DEFDAT datfile'], 'datfile.Dat')
+ split datfile.Dat
+ call assert_equal('krl', &filetype)
+ bwipe!
+ call delete('datfile.Dat')
+
+ call writefile(['', 'defdat datfile'], 'datfile.DAT')
+ split datfile.DAT
+ call assert_equal('krl', &filetype)
+ bwipe!
+ call delete('datfile.DAT')
+
+ filetype off
+endfunc
+
func Test_dep3patch_file()
filetype on
@@ -1284,6 +1309,30 @@ func Test_pp_file()
filetype off
endfunc
+func Test_src_file()
+ filetype on
+
+ call writefile(['&ACCESS'], 'srcfile.src')
+ split srcfile.src
+ call assert_equal('krl', &filetype)
+ bwipe!
+ call delete('srcfile.src')
+
+ call writefile([' DEF srcfile()'], 'srcfile.Src')
+ split srcfile.Src
+ call assert_equal('krl', &filetype)
+ bwipe!
+ call delete('srcfile.Src')
+
+ call writefile(['', 'global def srcfile()'], 'srcfile.SRC')
+ split srcfile.SRC
+ call assert_equal('krl', &filetype)
+ bwipe!
+ call delete('srcfile.SRC')
+
+ filetype off
+endfunc
+
func Test_tex_file()
filetype on