]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.2.0489: filetype: some Objective-C files are not recognized v9.2.0489
authorKeith Smiley <keithbsmiley@gmail.com>
Sat, 16 May 2026 07:46:25 +0000 (07:46 +0000)
committerChristian Brabandt <cb@256bit.org>
Sat, 16 May 2026 07:46:25 +0000 (07:46 +0000)
Problem:  filetype: some Objective-C files are not recognized
Solution: Add g:filetype_mm override variable, improve the objective c
          pattern detection (Keith Smiley).

closes: #20221

Signed-off-by: Keith Smiley <keithbsmiley@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/autoload/dist/ft.vim
runtime/doc/filetype.txt
src/testdir/test_filetype.vim
src/version.c

index 17b2618231bfcebebd2bbc78e81922af18d0a3fb..3085f3575c2fadc214443595b07afa50fe31341c 100644 (file)
@@ -3,7 +3,7 @@ vim9script
 # Vim functions for file type detection
 #
 # Maintainer:          The Vim Project <https://github.com/vim/vim>
-# Last Change:         2026 Apr 23
+# Last Change:         2026 May 16
 # Former Maintainer:   Bram Moolenaar <Bram@vim.org>
 
 # These functions are moved here from runtime/filetype.vim to make startup
@@ -798,9 +798,14 @@ export def FTnroff(): number
 enddef
 
 export def FTmm()
+  if exists("g:filetype_mm")
+    exe "setf " .. g:filetype_mm
+    return
+  endif
+
   var n = 1
   while n < 20
-    if getline(n) =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\)'
+    if getline(n) =~ '^\s*\(//\|#\s*\(include\|import\)\>\|@import\>\|/\*\)'
       setf objcpp
       return
     endif
index 2c978ebc9ad7ba9e9916cc5ba04cf6a4071d6e0a..5078913e676ad39a183adafe6a6e8bf5b9a9e0ce 100644 (file)
@@ -1,4 +1,4 @@
-*filetype.txt* For Vim version 9.2.  Last change: 2026 Apr 13
+*filetype.txt* For Vim version 9.2.  Last change: 2026 May 16
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -164,6 +164,7 @@ variables can be used to overrule the filetype used for certain extensions:
        *.int           g:filetype_int
        *.lsl           g:filetype_lsl
        *.m             g:filetype_m            |ft-mathematica-syntax|
+       *.mm            g:filetype_mm
        *.mac           g:filetype_mac
        *[mM]makefile,*.mk,*.mak,[mM]akefile*
                        g:make_flavor           |ft-make-syntax|
index 5040ac0e61b91546a7f02fe10316f1ed6ad0e7d3..9aa99a97d70f47abc18449a6fa783771f7e03bc3 100644 (file)
@@ -2068,6 +2068,37 @@ func Test_m4_file()
   endtry
 endfunc
 
+func Test_mm_file()
+  filetype on
+
+  call writefile(['#import "test.h"'], 'Xfile.mm', 'D')
+  split Xfile.mm
+  call assert_equal('objcpp', &filetype)
+  bwipe!
+
+  call writefile(['// Objective-C++ line comment'], 'Xfile.mm', 'D')
+  split Xfile.mm
+  call assert_equal('objcpp', &filetype)
+  bwipe!
+
+  call writefile(['.TH VIM 1 "YYYY Mth DD"'], 'Xfile.mm', 'D')
+  split Xfile.mm
+  call assert_equal('nroff', &filetype)
+  bwipe!
+
+  try
+    let g:filetype_mm = 'objcpp'
+    call writefile(['.TH VIM 1 "YYYY Mth DD"'], 'Xfile_override.mm', 'D')
+    split Xfile_override.mm
+    call assert_equal('objcpp', &filetype)
+    bwipe!
+  finally
+    unlet! g:filetype_mm
+  endtry
+
+  filetype off
+endfunc
+
 func Test_mod_file()
   filetype on
 
index 982065514819397d4af492686f52af5587d8b102..fb89edd04e7faf2f6c2bf1d6bb67968a375ebc3d 100644 (file)
@@ -729,6 +729,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    489,
 /**/
     488,
 /**/