Mercurial > vim
changeset 35474:a86d5a41da68 v9.1.0505
patch 9.1.0505: filetype: Faust files are not recognized
Commit: https://github.com/vim/vim/commit/aa61b8a9087e9cd999ef07e0d87b60f43d68f2c6
Author: PowerUser64 <blake@blakenorth.net>
Date: Wed Jun 19 20:32:11 2024 +0200
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 <blake@blakenorth.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 19 Jun 2024 20:45:03 +0200 |
parents | ac282e1d5a47 |
children | a6fa3c19060a |
files | runtime/autoload/dist/ft.vim runtime/doc/filetype.txt runtime/filetype.vim src/testdir/test_filetype.vim src/version.c |
diffstat | 5 files changed, 89 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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()
--- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -149,6 +149,7 @@ variables can be used to overrule the fi *.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|
--- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -457,7 +457,7 @@ au BufNewFile,BufRead */.cmus/{autosave, 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-* " 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 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
--- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -160,7 +160,7 @@ def s:GetFilenameChecks(): dict<list<str cmakecache: ['CMakeCache.txt'], cmod: ['file.cmod'], cmusrc: ['any/.cmus/autosave', 'any/.cmus/rc', 'any/.cmus/command-history', 'any/.cmus/file.theme', 'any/cmus/rc', 'any/cmus/file.theme', '/.cmus/autosave', '/.cmus/command-history', '/.cmus/file.theme', '/.cmus/rc', '/cmus/file.theme', '/cmus/rc'], - cobol: ['file.cbl', 'file.cob', 'file.lib'], + cobol: ['file.cbl', 'file.cob'], coco: ['file.atg'], conaryrecipe: ['file.recipe'], conf: ['auto.master', 'file.conf', 'texdoc.cnf', '.x11vncrc', '.chktexrc', '.ripgreprc', 'ripgreprc', 'file.ctags', '.mbsyncrc'], @@ -256,6 +256,7 @@ def s:GetFilenameChecks(): dict<list<str factor: ['file.factor'], falcon: ['file.fal'], fan: ['file.fan', 'file.fwt'], + faust: ['file.dsp', 'file.lib'], fennel: ['file.fnl'], fetchmail: ['.fetchmailrc'], fgl: ['file.4gl', 'file.4gh', 'file.m4gl'], @@ -420,7 +421,7 @@ def s:GetFilenameChecks(): dict<list<str mail: ['snd.123', '.letter', '.letter.123', '.followup', '.article', '.article.123', 'pico.123', 'mutt-xx-xxx', 'muttng-xx-xxx', 'ae123.txt', 'file.eml', 'reportbug-file'], mailaliases: ['/etc/mail/aliases', '/etc/aliases', 'any/etc/aliases', 'any/etc/mail/aliases'], mailcap: ['.mailcap', 'mailcap'], - make: ['file.mk', 'file.mak', 'file.dsp', 'makefile', 'Makefile', 'makefile-file', 'Makefile-file', 'some-makefile', 'some-Makefile', 'Kbuild'], + make: ['file.mk', 'file.mak', 'makefile', 'Makefile', 'makefile-file', 'Makefile-file', 'some-makefile', 'some-Makefile', 'Kbuild'], mallard: ['file.page'], man: ['file.man'], manconf: ['/etc/man.conf', 'man.config', 'any/etc/man.conf'], @@ -2401,6 +2402,32 @@ func Test_typ_file() filetype off endfunc +func Test_dsp_file() + filetype on + + " Microsoft Developer Studio Project file + + call writefile(['# Microsoft Developer Studio Project File'], 'Xfile.dsp', 'D') + split Xfile.dsp + call assert_equal('make', &filetype) + bwipe! + + let g:filetype_dsp = 'make' + split test.dsp + call assert_equal('make', &filetype) + bwipe! + unlet g:filetype_dsp + + " Faust + + call writefile(['this is a fallback'], 'Xfile.dsp') + split Xfile.dsp + call assert_equal('faust', &filetype) + bwipe! + + filetype off +endfunc + func Test_vba_file() filetype on