diff options
author | Gregory Anders <8965202+gpanders@users.noreply.github.com> | 2022-07-17 06:33:51 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-17 14:33:51 +0200 |
commit | 5ccdf6a88d5790382ad3da6bb908c606765754e0 (patch) | |
tree | 739ebd8e7d55a9fbc9792a62fd96166be38f5878 | |
parent | eb9b93b5e025386ec9431c9d35a4a073d6946d1d (diff) | |
download | rneovim-5ccdf6a88d5790382ad3da6bb908c606765754e0.tar.gz rneovim-5ccdf6a88d5790382ad3da6bb908c606765754e0.tar.bz2 rneovim-5ccdf6a88d5790382ad3da6bb908c606765754e0.zip |
vim-patch:9.0.0055 (#19392)
vim-patch:9.0.0055: bitbake files are not detected
Problem: Bitbake files are not detected.
Solution: Add bitbake filetype detection by file name and contents. (Gregory
Anders, closes vim/vim#10697)
https://github.com/vim/vim/commit/fa49eb482729a5fe7da9c9a5ed8d14f68afa55c7
-rw-r--r-- | runtime/autoload/dist/ft.vim | 6 | ||||
-rw-r--r-- | runtime/filetype.vim | 3 | ||||
-rw-r--r-- | runtime/lua/vim/filetype.lua | 6 | ||||
-rw-r--r-- | runtime/lua/vim/filetype/detect.lua | 4 | ||||
-rw-r--r-- | src/nvim/testdir/test_filetype.vim | 54 |
5 files changed, 70 insertions, 3 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim index a3a67cacb9..9e30ae1f51 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -519,12 +519,14 @@ func dist#ft#FTinc() " headers so assume POV-Ray elseif lines =~ '^\s*\%({\|(\*\)' || lines =~? s:ft_pascal_keywords setf pascal + elseif lines =~# '\<\%(require\|inherit\)\>' || lines =~# '\w\+ = ' + setf bitbake else call dist#ft#FTasmsyntax() if exists("b:asmsyntax") - exe "setf " . fnameescape(b:asmsyntax) + exe "setf " . fnameescape(b:asmsyntax) else - setf pov + setf pov endif endif endif diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 5a643803d3..f28118e272 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -253,6 +253,9 @@ au BufNewFile,BufRead *.db call dist#ft#BindzoneCheck('') " Blank au BufNewFile,BufRead *.bl setf blank +" Bitbake +au BufNewFile,BufRead *.bb,*.bbappend,*.bbclass,*/build/conf/*.conf,*/meta{-*,}/conf/*.conf setf bitbake + " Blkid cache file au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old setf xml diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua index 9ba036ca92..70c8cd15eb 100644 --- a/runtime/lua/vim/filetype.lua +++ b/runtime/lua/vim/filetype.lua @@ -172,6 +172,9 @@ local extension = { return require('vim.filetype.detect').bindzone(bufnr, '') end, bicep = 'bicep', + bb = 'bitbake', + bbappend = 'bitbake', + bbclass = 'bitbake', bl = 'blank', bsdl = 'bsdl', bst = 'bst', @@ -1662,6 +1665,9 @@ local pattern = { ['[mM]akefile%.am'] = 'automake', ['.*/bind/db%..*'] = starsetf('bindzone'), ['.*/named/db%..*'] = starsetf('bindzone'), + ['.*/build/conf/.*%.conf'] = 'bitbake', + ['.*/meta/conf/.*%.conf'] = 'bitbake', + ['.*/meta%-.*/conf/.*%.conf'] = 'bitbake', ['.*bsd'] = 'bsdl', ['bzr_log%..*'] = 'bzr', ['.*enlightenment/.*%.cfg'] = 'c', diff --git a/runtime/lua/vim/filetype/detect.lua b/runtime/lua/vim/filetype/detect.lua index 8331920406..8c10517687 100644 --- a/runtime/lua/vim/filetype/detect.lua +++ b/runtime/lua/vim/filetype/detect.lua @@ -62,7 +62,7 @@ end -- Checks the first 5 lines for a asmsyntax=foo override. -- Only whitespace characters can be present immediately before or after this statement. function M.asm_syntax(bufnr) - local lines = table.concat(getlines(bufnr, 1, 5), ' '):lower() + local lines = ' ' .. table.concat(getlines(bufnr, 1, 5), ' '):lower() .. ' ' local match = lines:match('%sasmsyntax=([a-zA-Z0-9]+)%s') if match then return match @@ -554,6 +554,8 @@ function M.inc(bufnr) -- headers so assume POV-Ray elseif findany(lines, { '^%s{', '^%s%(%*' }) or matchregex(lines, pascal_keywords) then return 'pascal' + elseif findany(lines, { '^%s*inherit ', '^%s*require ', '^%s*%w+%s+= ' }) then + return 'bitbake' else local syntax = M.asm_syntax(bufnr) if not syntax or syntax == '' then diff --git a/src/nvim/testdir/test_filetype.vim b/src/nvim/testdir/test_filetype.vim index dee04e66dc..59b272d563 100644 --- a/src/nvim/testdir/test_filetype.vim +++ b/src/nvim/testdir/test_filetype.vim @@ -83,6 +83,7 @@ let s:filename_checks = { \ 'bib': ['file.bib'], \ 'bicep': ['file.bicep'], \ 'bindzone': ['named.root', '/bind/db.file', '/named/db.file', 'any/bind/db.file', 'any/named/db.file'], + \ 'bitbake': ['file.bb', 'file.bbappend', 'file.bbclass', 'build/conf/local.conf', 'meta/conf/layer.conf', 'build/conf/bbappend.conf', 'meta-layer/conf/distro/foo.conf'], \ 'blank': ['file.bl'], \ 'bsdl': ['file.bsd', 'file.bsdl', 'bsd', 'some-bsd'], \ 'bst': ['file.bst'], @@ -1813,5 +1814,58 @@ func Test_sig_file() filetype off endfunc +func Test_inc_file() + filetype on + + call writefile(['this is the fallback'], 'Xfile.inc') + split Xfile.inc + call assert_equal('pov', &filetype) + bwipe! + + let g:filetype_inc = 'foo' + split Xfile.inc + call assert_equal('foo', &filetype) + bwipe! + unlet g:filetype_inc + + " aspperl + call writefile(['perlscript'], 'Xfile.inc') + split Xfile.inc + call assert_equal('aspperl', &filetype) + bwipe! + + " aspvbs + call writefile(['<% something'], 'Xfile.inc') + split Xfile.inc + call assert_equal('aspvbs', &filetype) + bwipe! + + " php + call writefile(['<?php'], 'Xfile.inc') + split Xfile.inc + call assert_equal('php', &filetype) + bwipe! + + " pascal + call writefile(['program'], 'Xfile.inc') + split Xfile.inc + call assert_equal('pascal', &filetype) + bwipe! + + " bitbake + call writefile(['require foo'], 'Xfile.inc') + split Xfile.inc + call assert_equal('bitbake', &filetype) + bwipe! + + " asm + call writefile(['asmsyntax=bar'], 'Xfile.inc') + split Xfile.inc + call assert_equal('bar', &filetype) + bwipe! + + call delete('Xfile.inc') + filetype off +endfunc " vim: shiftwidth=2 sts=2 expandtab |