]> granicus.if.org Git - vim/commitdiff
patch 8.2.4464: Dtrace files are recognized as filetype D v8.2.4464
author=?UTF-8?q?Teubel=20Gy=C3=B6rgy?= <tgyurci@gmail.com>
Thu, 24 Feb 2022 17:59:09 +0000 (17:59 +0000)
committerBram Moolenaar <Bram@vim.org>
Thu, 24 Feb 2022 17:59:09 +0000 (17:59 +0000)
Problem:    Dtrace files are recognized as filetype D.
Solution:   Add a pattern for Dtrace files. (Teubel György, closes #9841)
            Add some more testing.

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

index 4f5b88a7f7650fe7b7732a769604c72a1f04f08d..9f9fef0422c8f0cb523d3faff91a1d4c161accc2 100644 (file)
@@ -206,6 +206,10 @@ export def EuphoriaCheck()
 enddef
 
 export def DtraceCheck()
+  if did_filetype()
+    # Filetype was already detected
+    return
+  endif
   var lines = getline(1, min([line("$"), 100]))
   if match(lines, '^module\>\|^import\>') > -1
     # D files often start with a module and/or import statement.
index 3b7f92dfff60e3d14a7e5d574b3f8daefc4b4402..77c736c1805aa911bf8c9b8d10e7065b8009fbb9 100644 (file)
@@ -484,6 +484,7 @@ au BufNewFile,BufRead */etc/dnsmasq.conf    setf dnsmasq
 au BufNewFile,BufRead *.desc                   setf desc
 
 " the D language or dtrace
+au BufNewFile,BufRead */dtrace/*.d             setf dtrace
 au BufNewFile,BufRead *.d                      call dist#ft#DtraceCheck()
 
 " Desktop files
index 01978ef3f9523d530f377af40f57f69ea1898b4c..9614f55fe3880bb27de5a539ceabbffe04620fdd 100644 (file)
@@ -132,6 +132,7 @@ let s:filename_checks = {
     \ 'cvs': ['cvs123'],
     \ 'cvsrc': ['.cvsrc'],
     \ 'cynpp': ['file.cyn'],
+    \ 'd': ['file.d'],
     \ 'dart': ['file.dart', 'file.drt'],
     \ 'datascript': ['file.ds'],
     \ 'dcd': ['file.dcd'],
@@ -154,6 +155,7 @@ let s:filename_checks = {
     \ 'dot': ['file.dot', 'file.gv'],
     \ 'dracula': ['file.drac', 'file.drc', 'filelvs', 'filelpe', 'drac.file', 'lpe', 'lvs', 'some-lpe', 'some-lvs'],
     \ 'dtd': ['file.dtd'],
+    \ 'dtrace': ['/usr/lib/dtrace/io.d'],
     \ 'dts': ['file.dts', 'file.dtsi'],
     \ 'dune': ['jbuild', 'dune', 'dune-project', 'dune-workspace'],
     \ 'dylan': ['file.dylan'],
@@ -827,6 +829,42 @@ func Test_bas_file()
   filetype off
 endfunc
 
+func Test_d_file()
+  filetype on
+
+  call writefile(['looks like D'], 'Xfile.d')
+  split Xfile.d
+  call assert_equal('d', &filetype)
+  bwipe!
+
+  call writefile(['#!/some/bin/dtrace'], 'Xfile.d')
+  split Xfile.d
+  call assert_equal('dtrace', &filetype)
+  bwipe!
+
+  call writefile(['#pragma  D  option'], 'Xfile.d')
+  split Xfile.d
+  call assert_equal('dtrace', &filetype)
+  bwipe!
+
+  call writefile([':some:thing:'], 'Xfile.d')
+  split Xfile.d
+  call assert_equal('dtrace', &filetype)
+  bwipe!
+
+  call writefile(['module this', '#pragma  D  option'], 'Xfile.d')
+  split Xfile.d
+  call assert_equal('d', &filetype)
+  bwipe!
+
+  call writefile(['import that', '#pragma  D  option'], 'Xfile.d')
+  split Xfile.d
+  call assert_equal('d', &filetype)
+  bwipe!
+
+  filetype off
+endfunc
+
 func Test_dep3patch_file()
   filetype on
 
index 1491e81da6a1adb1c2824d5c7635a0e9ba5f909f..69be8cd054661658fe54f8d7a52e72050ab80f8d 100644 (file)
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4464,
 /**/
     4463,
 /**/