changeset 27877:834d3fba1e7c v8.2.4464

patch 8.2.4464: Dtrace files are recognized as filetype D Commit: https://github.com/vim/vim/commit/4d56b971cbae01cc454eb09713326224993e38ed Author: =?UTF-8?q?Teubel=20Gy=C3=B6rgy?= <tgyurci@gmail.com> Date: Thu Feb 24 17:59:09 2022 +0000 patch 8.2.4464: Dtrace files are recognized as filetype D Problem: Dtrace files are recognized as filetype D. Solution: Add a pattern for Dtrace files. (Teubel Gy?rgy, closes https://github.com/vim/vim/issues/9841) Add some more testing.
author Bram Moolenaar <Bram@vim.org>
date Thu, 24 Feb 2022 19:00:04 +0100
parents f98b3c85f54b
children 223dc382d076
files runtime/autoload/dist/ft.vim runtime/filetype.vim src/testdir/test_filetype.vim src/version.c
diffstat 4 files changed, 45 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -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.
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -484,6 +484,7 @@ au BufNewFile,BufRead */etc/dnsmasq.conf
 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
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -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
 
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4464,
+/**/
     4463,
 /**/
     4462,