]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.0349: filetype of *.sil files not well detected v9.0.0349
authorBram Moolenaar <Bram@vim.org>
Thu, 1 Sep 2022 14:01:25 +0000 (15:01 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 1 Sep 2022 14:01:25 +0000 (15:01 +0100)
Problem:    Filetype of *.sil files not well detected.
Solution:   Inspect the file contents to guess the filetype.

runtime/autoload/dist/ft.vim
runtime/filetype.vim
src/testdir/test_filetype.vim
src/version.c

index 5db68d3cb45805a200a02459ab8c472483154dbd..48eaf3f60f88274bedbae879396f15b7dae330f5 100644 (file)
@@ -878,6 +878,23 @@ export def FTsig()
   endif
 enddef
 
+# This function checks the first 100 lines of files matching "*.sil" to
+# resolve detection between Swift Intermediate Language and SILE.
+export def FTsil()
+  for lnum in range(1, [line('$'), 100]->min())
+    var line: string = getline(lnum)
+    if line =~ '^\s*[\\%]'
+      setf sile
+      return
+    elseif line =~ '^\s*\S'
+      setf sil
+      return
+    endif
+  endfor
+  # no clue, default to "sil"
+  setf sil
+enddef
+
 export def FTsys()
   if exists("g:filetype_sys")
     exe "setf " .. g:filetype_sys
index c2b89a5f80c901bb1c2b4531af10973327994329..c7670d08cae04f2dfeaf917a79c2930229afee60 100644 (file)
@@ -1822,7 +1822,7 @@ au BufNewFile,BufRead *.score                     setf slrnsc
 au BufNewFile,BufRead *.st                     setf st
 
 " Smalltalk (and Rexx, TeX, and Visual Basic)
-au BufNewFile,BufRead *.cls                     call dist#ft#FTcls()
+au BufNewFile,BufRead *.cls                    call dist#ft#FTcls()
 
 " Smarty templates
 au BufNewFile,BufRead *.tpl                    setf smarty
@@ -1929,8 +1929,8 @@ au BufNewFile,BufRead *.cm                        setf voscm
 au BufNewFile,BufRead *.swift                  setf swift
 au BufNewFile,BufRead *.swift.gyb              setf swiftgyb
 
-" Swift Intermediate Language
-au BufNewFile,BufRead *.sil                    setf sil
+" Swift Intermediate Language or SILE
+au BufNewFile,BufRead *.sil                    call dist#ft#FTsil()
 
 " Sysctl
 au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf  setf sysctl
index 18233e7ab1cd9009898ba3e8b55b9c6674c36609..fbb8d2d2dd2be273b5a43f1167053aff0c895a3a 100644 (file)
@@ -1827,6 +1827,44 @@ func Test_sig_file()
   filetype off
 endfunc
 
+" Test dist#ft#FTsil()
+func Test_sil_file()
+  filetype on
+
+  split Xfile.sil
+  call assert_equal('sil', &filetype)
+  bwipe!
+
+  let lines =<< trim END
+  // valid
+  let protoErasedPathA = \ABCProtocol.a
+
+  // also valid
+  let protoErasedPathA =
+          \ABCProtocol.a
+  END
+  call writefile(lines, 'Xfile.sil')
+
+  split Xfile.sil
+  call assert_equal('sil', &filetype)
+  bwipe!
+
+  " SILE
+
+  call writefile(['% some comment'], 'Xfile.sil')
+  split Xfile.sil
+  call assert_equal('sile', &filetype)
+  bwipe!
+
+  call writefile(['\begin[papersize=a6]{document}foo\end{document}'], 'Xfile.sil')
+  split Xfile.sil
+  call assert_equal('sile', &filetype)
+  bwipe!
+
+  call delete('Xfile.sil')
+  filetype off
+endfunc
+
 func Test_inc_file()
   filetype on
 
index 18278c3fd5037758fb98c16f4eb9e19009b98843..f885aa1e886acae7477643130a02cf92a994f564 100644 (file)
@@ -707,6 +707,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    349,
 /**/
     348,
 /**/