From aa61b8a9087e9cd999ef07e0d87b60f43d68f2c6 Mon Sep 17 00:00:00 2001 From: PowerUser64 Date: Wed, 19 Jun 2024 20:32:11 +0200 Subject: patch 9.1.0505: filetype: Faust files are not recognized 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: #14894 Signed-off-by: PowerUser64 Signed-off-by: Christian Brabandt --- runtime/autoload/dist/ft.vim | 50 ++++++++++++++++++++++++++++++++++++++++++++ runtime/doc/filetype.txt | 1 + runtime/filetype.vim | 10 ++++++--- 3 files changed, 58 insertions(+), 3 deletions(-) (limited to 'runtime') diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim index 50b4c3ef21..2e93dd0d57 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -1265,6 +1265,56 @@ export def FTtyp() setf typst enddef +# Detect Microsoft Developer Studio Project files (Makefile) or Faust DSP +# files. +export def FTdsp() + if exists("g:filetype_dsp") + exe "setf " .. g:filetype_dsp + return + endif + + # Test the filename + if expand('%:t') =~ '^[mM]akefile.*$' + setf make + return + endif + + # Test the file contents + for line in getline(1, 200) + # Chech for comment style + if line =~ '^#.*' + setf make + return + endif + + # Check for common lines + if line =~ '^.*Microsoft Developer Studio Project File.*$' + setf make + return + endif + + if line =~ '^!MESSAGE This is not a valid makefile\..+$' + setf make + return + endif + + # Check for keywords + if line =~ '^!(IF,ELSEIF,ENDIF).*$' + setf make + return + endif + + # Check for common assignments + if line =~ '^SOURCE=.*$' + setf make + return + endif + endfor + + # Otherwise, assume we have a Faust file + setf faust +enddef + # Set the filetype of a *.v file to Verilog, V or Cog based on the first 200 # lines. export def FTv() diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index 927b75c3a8..910731aff3 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -149,6 +149,7 @@ variables can be used to overrule the filetype used for certain extensions: *.csh g:filetype_csh |ft-csh-syntax| *.dat g:filetype_dat *.def g:filetype_def + *.dsp g:filetype_dsp *.f g:filetype_f |ft-forth-syntax| *.frm g:filetype_frm |ft-form-syntax| *.fs g:filetype_fs |ft-forth-syntax| diff --git a/runtime/filetype.vim b/runtime/filetype.vim index a2daf144c7..54bce30e20 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -457,7 +457,7 @@ au BufNewFile,BufRead */.cmus/{autosave,rc,command-history,*.theme} setf cmusrc au BufNewFile,BufRead */cmus/{rc,*.theme} setf cmusrc " Cobol -au BufNewFile,BufRead *.cbl,*.cob,*.lib setf cobol +au BufNewFile,BufRead *.cbl,*.cob setf cobol " cobol or zope form controller python script? (heuristic) au BufNewFile,BufRead *.cpy \ if getline(1) =~ '^##' | @@ -532,6 +532,10 @@ au BufNewFile,BufRead s6-* setf execline " Fontconfig config files au BufNewFile,BufRead fonts.conf setf xml +" Faust +au BufNewFile,BufRead *.lib setf faust +au BufNewFile,BufRead *.dsp call dist#ft#FTdsp() + " Libreoffice config files au BufNewFile,BufRead *.xcu,*.xlb,*.xlc,*.xba setf xml au BufNewFile,BufRead psprint.conf,sofficerc setf dosini @@ -1365,8 +1369,8 @@ au BufNewFile,BufRead */etc/mail/aliases,*/etc/aliases setf mailaliases au BufNewFile,BufRead .mailcap,mailcap setf mailcap " Makefile -au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make -au BufNewFile,BufRead Kbuild setf make +au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak setf make +au BufNewFile,BufRead Kbuild setf make " MakeIndex au BufNewFile,BufRead *.ist,*.mst setf ist -- cgit v1.2.3