vim-patch:9.1.0505: filetype: Faust files are not recognized (#29426)

Problem:  filetype: Faust files are not recognized
Solution: Detect '*.lib' files as Faust filetype, add detection for
          '*.dsp' files (Faust or Make), remove '*.lib' from Cobol
          filetype (PowerUser64)

closes: vim/vim#14894

aa61b8a908

Co-authored-by: PowerUser64 <blake@blakenorth.net>
This commit is contained in:
zeertzjq
2024-06-20 17:45:41 +08:00
committed by GitHub
parent ac6f0c02cf
commit af0021f990
4 changed files with 67 additions and 4 deletions

View File

@@ -281,7 +281,6 @@ local extension = {
cook = 'cook',
cmake = 'cmake',
cmod = 'cmod',
lib = 'cobol',
cob = 'cobol',
cbl = 'cobol',
atg = 'coco',
@@ -366,6 +365,7 @@ local extension = {
gv = 'dot',
drac = 'dracula',
drc = 'dracula',
dsp = detect.dsp,
dtd = 'dtd',
d = detect.dtrace,
dts = 'dts',
@@ -417,6 +417,7 @@ local extension = {
fal = 'falcon',
fan = 'fan',
fwt = 'fan',
lib = 'faust',
fnl = 'fennel',
m4gl = 'fgl',
['4gl'] = 'fgl',
@@ -666,7 +667,6 @@ local extension = {
eml = 'mail',
mk = 'make',
mak = 'make',
dsp = 'make',
page = 'mallard',
map = 'map',
mws = 'maple',

View File

@@ -471,6 +471,41 @@ function M.def(_, bufnr)
return 'def'
end
--- @type vim.filetype.mapfn
function M.dsp(path, bufnr)
if vim.g.filetype_dsp then
return vim.g.filetype_dsp
end
-- Test the filename
local file_name = fn.fnamemodify(path, ':t')
if file_name:find('^[mM]akefile.*$') then
return 'make'
end
-- Test the file contents
for _, line in ipairs(getlines(bufnr, 1, 200)) do
if
findany(line, {
-- Check for comment style
[[#.*]],
-- Check for common lines
[[^.*Microsoft Developer Studio Project File.*$]],
[[^!MESSAGE This is not a valid makefile\..+$]],
-- Check for keywords
[[^!(IF,ELSEIF,ENDIF).*$]],
-- Check for common assignments
[[^SOURCE=.*$]],
})
then
return 'make'
end
end
-- Otherwise, assume we have a Faust file
return 'faust'
end
--- @type vim.filetype.mapfn
function M.e(_, bufnr)
if vim.g.filetype_euphoria then